Hello everyone, please, I need to know how, after having transofrm a group by composing, give a specific name to this component newly created following this transformation (group to component) and to access it in order to give him some data techniques.
Iâm not sure I fully understand the whole question. (Or multiple questions?)
Can you show a code snippet of what you have right now? And point out where you are stuck?
Group#to_component converts an existing Group into a ComponentInstance and returns a reference to that ComponentInstance.
instance = group.to_component
You can then use any of the methods of ComponentInstance to manipulate this new instance.
And of course, once you have a reference to this new thing:
component_instance = group.to_component
you can get its definition using:
definition = component_instance.definition
Then that can be used to [re]set its name etc, using methods like:
definition.name = "My_Lovely_Component"
definition.description = "Made from My Lovely Group..."
etcâŠ
⊠and the instance can have itâs own specific name that differs from itâs definition âŠ
instance.name = "The_Loveliest_of_All"
bonjour tout le monde
je vous remercie Ă©normĂ©ment pour vos rĂ©activitĂ©s, la rĂ©ponse de TIG mâa aidĂ© beaucoup, en dehors de cela, jâai une question toute simple, câest quoi la diffĂ©rence concrĂšte et physique entre instance et dĂ©finition, et si vous aurez un exemple bien concret ça sera bien, je vous remercie dâavance
An assembly of things in the model is a 'Definition '.
There are three types of Definition - Images [a rectangular face with a material], Groups [which are âuniqueâ if you copy and edit it] and then Components.
The Modelâs Components are listed in the Components Browser [Groups are not].
You can place Instances of these Component-Definitions in your model.
If you edit any one Instance it affects all other Instances of that Definition.
If you want to edit just one Instance, you use first use make_unique on it, a copy of the Definition is made, with an incrementing suffix - e.g. âCompo#1ââŠ
Thus âInstancesâ are the placed versions of a âDefinitionâ.
Note how Instances [and Groups] can be ânestedâ inside the entities-collection of other Definitions, as desired.
If you save the modelâs definitions out to an external âCollectionâ, then these become separate SKP files.
These can then be loaded into another model as desired.
Un assemblage de choses dans le modĂšle est une "dĂ©finition". Il existe trois types de dĂ©finition: les images [une face rectangulaire avec un matĂ©riau], les groupes [qui sont «uniques» si vous les copiez et les modifiez], puis les composants. Les composants du modĂšle sont rĂ©pertoriĂ©s dans le navigateur de composants [les groupes ne sont pas]. Vous pouvez placer des instances de ces dĂ©finitions de composants dans votre modĂšle. Si vous modifiez une instance, cela affecte toutes les autres instances de cette dĂ©finition. Si vous voulez Ă©diter une seule instance, vous utilisez d'abord make_unique, une copie de la dĂ©finition est créée, avec un suffixe incrĂ©mentant - par exemple. "Compo#1" ... Ainsi, les "instances" sont les versions placĂ©es d'une "dĂ©finition". Notez que les instances [et les groupes] peuvent ĂȘtre «imbriquĂ©s» dans la collection d'entitĂ©s d'autres dĂ©finitions, comme vous le souhaitez. Si vous enregistrez les dĂ©finitions du modĂšle dans une "Collection" externe, elles deviennent alors des fichiers SKP distincts. Ceux-ci peuvent ensuite ĂȘtre chargĂ©s dans un autre modĂšle Ă votre guise.
Bonjour tout le monde et merci beaucoup,
jâai donnĂ© un nom ( vis) Ă un composant (definition.name = vis ) que jâai créé, aprĂšs jâai essayĂ© de lui donner un attribut avec la commande ( vis.set_attribute âcatalogâ,âpriceâ, 4.9 ) mais le console ruby mâaffiche une erreur , le nom vis nâest pas reconnu par sketchup, alors je me demande est ce quâon peut donner des attributs Ă un composant ?
autre chose si je créé un groupe que je lui donne des attributs, en transformant le groupe en composant est ce que le composant créé hérite les attributs de groupe?
Merci beaucoup
The syntax is incorrect.
I assume you did NOT use proper quotation-marks and perhaps your typed code misses out some vital stepsâŠ
It should be like this⊠assuming that definition
is a proper referenceâŠ
definition.name = "vis"
Later on, to refer to that definition, you would NOT refer to its name âdirectlyâ, but useâŠ
definition.set_attribute("catalog", "price", 4.9)
OR to refer to a particular definition âby nameâ you need to useâŠ
Sketchup.active_model.definitions["vis"].set_attribute("catalog", "price", 4.9)
[that is put simply, without trapping for a proper name match etc]
You seems to be jumbling up various thingsâŠ
La syntaxe est incorrecte.
Je suppose que vous nâavez PAS utilisĂ© de guillemets corrects et peut-ĂȘtre que votre code saisi manque des Ă©tapes essentielles âŠ
Ce devrait ĂȘtre comme ça ⊠en supposant que definition
est une rĂ©fĂ©rence appropriĂ©e âŠ
definition.name = "vis"
Plus tard, pour faire rĂ©fĂ©rence Ă cette dĂ©finition, vous NE ferez PAS rĂ©fĂ©rence Ă son nom âdirectementâ, mais utiliserez âŠ
definition.set_attribute("catalog", "prix", 4.9)
OU pour faire rĂ©fĂ©rence Ă une dĂ©finition particuliĂšre âpar nomâ, vous devez utiliser âŠ
Sketchup.active_model.definitions["vis"].set_attribute("catalog", "prix", 4.9)
[qui est mis simplement, sans piégeage pour une correspondance de nom correcte, etc.]
Vous semblez ĂȘtre en train de brouiller diverses choses âŠ
Merci beaucoup TIG
câest vrai y a plein de choses qui se mĂ©langent dans ma tĂȘte parce que je maĂźtrise pas assez tout ce qui est âdefinitionâ, âcomponent instanceâ, ⊠alors jâessaye de comprendre Ă travers les exemples, et jâessaye plusieurs exemples afin de savoir ce qui marche et ce qui marche pas, et du temps en temps je passe sur le forum pour voir ce que les autres font comme solution , alors un autre exemple , si je fais Sketchup.active_model.selection.definitions[âvisâ].set_attribute(âcatalogâ,âprixâ,4.9) est ce que câest correcte ?
merci dâavance
Sketchup.active_model.definitions["vis"].set_attribute("catalog", "prix" ,4.9)
will work, but only IF there is an existing component-definition named âvisâ
cela fonctionnera, mais seulement SI il existe une définition de composant existante nommée 'vis'
Why do you need to use 'selection'?
Pourquoi avez-vous besoin d'utiliser 'selection'?
??
merci beaucoup TIG tu mâaide beaucoup , je suis reconnaissant merci
Bonjour ,dĂ©solĂ© ,jâai pas fais attentions Ă tes questions, au fait jâai besoin de sĂ©lection pour la pure et simple raison que si je dessine plusieurs objets sur le mĂȘme dessin, je peux donner des attributs seulement Ă lâobjet sĂ©lectionnĂ©, or si jâutilise âSketchup.active_modelâ, cela va donner les attributs Ă tous les objets se trouvant dans le dessin
My earlier code [Mon code précédent]
Sketchup.active_model.definitions["vis"].set_attribute("catalog", "prix", 4.9)
Searches the current definitions in the model, and if one is named âvisâ it gives its attribute dictionary âcatalogâ the key âprixâ set to 4.9
[Recherche dans les dĂ©finitions actuelles du modĂšle. Si lâune dâelles sâappelle âvisâ, le dictionnaire dâattributs âcatalogueâ contient la clĂ© âprixâ dĂ©finie sur 4.9.]
If you want to work on a selection you need to filter the selection to find just that component-instance with the component-definition name match, something like⊠[Si vous souhaitez travailler sur une sĂ©lection, vous devez filtrer la sĂ©lection pour rechercher uniquement cette instance de composant avec le nom de dĂ©finition de composant correspondant, quelque chose comme âŠ]
Sketchup.active_model.selection.grep(Sketchup::ComponentInstance).find_all{|e|
e.definition.name=="vis" }[0].definition.set_attribute("catalog", "prix", 4.9)
Note that you are currently applying the âprixâ to the definition NOT the instance.
To me, it would seem more logical to process the definitions list rather that prise a definition from a selected instance ?
Also if the âvisâ doesnât exists youâll get an error !
[Notez que vous appliquez actuellement le âprixâ Ă la dĂ©finition et non Ă lâinstance.
Pour moi, il semblerait plus logique de traiter la liste de dĂ©finitions plutĂŽt que de rĂ©cupĂ©rer une dĂ©finition dâune instance sĂ©lectionnĂ©e?
De plus, si le âvisâ nâexiste pas, vous obtiendrez une erreur!]