Ta façon de construire ton composant l'a rendu complexe.
Il te faut séparer l'interface du composant (tous les attributs accessibles à l'utilisateur) de son implémentation (la partie non accessible qui contient les calculs).
En conception orientée objet (voir boite noire), on parle de la partie visible (interface) et de la partie cachée (implémentation).
Pour cela Sketchup crée :
- l'interface sous la forme d'un composant parent (pas de formules dans cette partie mais les attributs saisis par l'utilisateur),
- l'implémentation sous la forme de composants enfants qui comprennent les différentes pièces de bois (poteaux, poutres, arbas, ...) avec toutes les formules.
En procédant comme cela (du haut vers le bas), tu éviteras entre autres les références circulaires.
Enfin, si tu veux que ton composant soit encore compréhensible et bien documenté, tu peux en faire une représentation (semi-formelle) avec UML2 par exemple.
PS : ne pas perdre de vue que Sketchup est une application entièrement pensée "objet" et que dans Ruby tout est objet.