sketchucation logo sketchucation
    • Login
    ℹ️ GoFundMe | Our friend Gus Robatto needs some help in a challenging time Learn More

    Get Group Owner

    Scheduled Pinned Locked Moved Developers' Forum
    6 Posts 5 Posters 325 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • T Offline
      tictactoe
      last edited by

      The following Code makes groups in groups.

      	
      width = 200
      depth = 100
      pts = []  
      pts[0] = [0, 0, 0]  
      pts[1] = [width, 0, 0]  
      pts[2] = [width, depth, 0]  
      pts[3] = [0, depth, 0]  
      	
      model = Sketchup.active_model
      
      g1 = model.entities.add_group 
      g1.entities.add_face pts
      g1.transformation = Geom;;Transformation.new([10,0,10])
      	
      g2 = g1.entities.add_group 
      g2.entities.add_face pts 
      g2.transformation = Geom;;Transformation.new([20,0,20])
      
      g3 = g2.entities.add_group 
      g3.entities.add_face pts 
      g3.transformation = Geom;;Transformation.new([30,0,30])
      	
      puts "model; " + model.entityID.to_s
      puts "g1; " + g1.entityID.to_s
      puts "g2; " + g2.entityID.to_s
      puts "g3; " + g3.entityID.to_s
      	
      puts "g3.parent; " + g3.parent.entityID.to_s + ", " + g3.parent.class.name
      puts "g3.parent.parent; " + g3.parent.parent.entityID.to_s + ", " 
            + g3.parent.parent.class.name
      puts "g3.parent.parent.parent; " 
            + g3.parent.parent.parent.entityID.to_s + ", " 
            + g3.parent.parent.parent.class.name
      
      

      And results in

      model; Model
      g1; 25
      g2; 49
      g3; 73
      g3.parent; 40, Sketchup;;ComponentDefinition
      g3.parent.parent; 3, Sketchup;;DefinitionList
      g3.parent.parent.parent; Model, Sketchup;;Model
      

      Now question:
      Given g3, how can I get the owning/creating group g2 by code? g3.parent is not the right way.

      1 Reply Last reply Reply Quote 0
      • thomthomT Offline
        thomthom
        last edited by

        You can't traverse backwards like that.

        Given an instance, that instance can appear many places in the model, if any of it's parent nodes have multiple instance. That makes it impossible to get a path from instance > model. The other way works, model > instance - when you traverse the model tree.

        Thomas Thomassen — SketchUp Monkey & Coding addict
        List of my plugins and link to the CookieWare fund

        1 Reply Last reply Reply Quote 0
        • K Offline
          kwalkerman
          last edited by

          ... You can get some information regarding inheritance in one of two ways:

          1. If the user is actively editing a group or component, you can get the current path using: Sketchup.active_model.active_path

          2. If you are traversing through the model's entities, you can keep track of where you are in the model and develop your own inheritance structure that way.

          1 Reply Last reply Reply Quote 0
          • C Offline
            Cleverbeans
            last edited by

            I believe g3.parent.instances[0] gives you the correct group.

            1 Reply Last reply Reply Quote 0
            • TIGT Offline
              TIG Moderator
              last edited by

              I repeat this from somewhere else...

              <span class="syntaxdefault"></span><span class="syntaxkeyword">class&nbsp;</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Group<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxcomment">###&nbsp;Sometimes&nbsp;the&nbsp;group.entities.parent&nbsp;refer&nbsp;to&nbsp;the&nbsp;wrong&nbsp;definition.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;###&nbsp;method&nbsp;checks&nbsp;for&nbsp;this&nbsp;and&nbsp;locates&nbsp;the&nbsp;correct&nbsp;parent&nbsp;definition.<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">if&nbsp;</span><span class="syntaxdefault">not&nbsp;Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Group</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">method_defined</span><span class="syntaxkeyword">?(;</span><span class="syntaxdefault">definition</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">def&nbsp;definition</span><span class="syntaxkeyword">()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;</span><span class="syntaxdefault">self</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">parent</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">instances</span><span class="syntaxkeyword">.include?(</span><span class="syntaxdefault">self</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span class="syntaxdefault">self</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">parent<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">definitions</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each&nbsp;</span><span class="syntaxkeyword">{&nbsp;|</span><span class="syntaxdefault">definition</span><span class="syntaxkeyword">|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;</span><span class="syntaxdefault">definition&nbsp;</span><span class="syntaxkeyword">if&nbsp;</span><span class="syntaxdefault">definition</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">instances</span><span class="syntaxkeyword">.include?(</span><span class="syntaxdefault">self</span><span class="syntaxkeyword">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">end<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxkeyword">return&nbsp;</span><span class="syntaxdefault">nil&nbsp;</span><span class="syntaxcomment">###&nbsp;Should&nbsp;not&nbsp;happen.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="syntaxdefault">end<br />&nbsp;&nbsp;&nbsp;&nbsp;end</span><span class="syntaxcomment">#if<br /></span><span class="syntaxdefault">end</span><span class="syntaxcomment">#class&nbsp;Group&nbsp;</span><span class="syntaxdefault"></span>
              

              Usage: defn = group.definition

              TIG

              1 Reply Last reply Reply Quote 0
              • thomthomT Offline
                thomthom
                last edited by

                @cleverbeans said:

                I believe g3.parent.instances[0] gives you the correct group.

                Not if the group has instances, which it may have after copying a group and not editing it.

                Thomas Thomassen — SketchUp Monkey & Coding addict
                List of my plugins and link to the CookieWare fund

                1 Reply Last reply Reply Quote 0
                • 1 / 1
                • First post
                  Last post
                Buy SketchPlus
                Buy SUbD
                Buy WrapR
                Buy eBook
                Buy Modelur
                Buy Vertex Tools
                Buy SketchCuisine
                Buy FormFonts

                Advertisement