• Login
sketchucation logo sketchucation
  • Login
🤑 SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

Get Group Owner

Scheduled Pinned Locked Moved Developers' Forum
6 Posts 5 Posters 325 Views 5 Watching
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 3 Feb 2011, 19:23

    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
    • T Offline
      thomthom
      last edited by 3 Feb 2011, 19:41

      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 8 Feb 2011, 17:20

        ... 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 8 Feb 2011, 21:53

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

          1 Reply Last reply Reply Quote 0
          • T Offline
            TIG Moderator
            last edited by 8 Feb 2011, 22:06

            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
            • T Offline
              thomthom
              last edited by 9 Feb 2011, 07:21

              @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
              1 / 1
              • First post
                5/6
                Last post
              Buy SketchPlus
              Buy SUbD
              Buy WrapR
              Buy eBook
              Buy Modelur
              Buy Vertex Tools
              Buy SketchCuisine
              Buy FormFonts

              Advertisement