sketchucation logo sketchucation
    • Login
    1. Home
    2. niccah
    3. Posts
    Oops, your profile's looking a bit empty! To help us tailor your experience, please fill in key details like your SketchUp version, skill level, operating system, and more. Update and save your info on your profile page today!
    🔌 Smart Spline | Fluid way to handle splines for furniture design and complex structures. Download
    N
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 18
    • Posts 90
    • Groups 1

    Posts

    Recent Best Controversial
    • RE: Empty groups get deleted?!

      @aerilius said:

      Do you have a reference to the group?

      I assume SketchUp cleans up empty groups as they would otherwise clutter with zero-size elements that the user won't ever be able to select or re-use manually.
      Similar to that, Ruby cleans up unused references when it is sure that the reference won't ever be used again (garbage collection). If you need a reference later again (to draw entities into the group), the reference must live in the same scope as the drawing method.

      Thanks a lot for your fast reply!

      I agree with you - MANUALLY, I'm not able to use this group again. But with Ruby, I can find this group again by its name...

      Hm, can I insert something invisible?! In the worst case, I have to insert a line, hide it, and when the user starts so insert something in this group, I delete this invisible line at first...

      What do you think?

      posted in Developers' Forum
      N
      niccah
    • Empty groups get deleted?!

      Hi!

      I have a strange problem...

      Following situation:

      • I open a new Sketchup file
      • insert an empty group
      • this group gets a name and a description

      At first, everything is fine... but...

      when I will draw something, this empty group will get deleted... but why?

      I need this empty group, because it gets filled step by step...

      Do you know this situation? Or do you know, how I can solve it?

      Thanks a lot for your help!

      posted in Developers' Forum
      N
      niccah
    • RE: Will this work on Mac OS?

      @aerilius said:

      File.join("folder1", "folder2", "filename")

      Oh yes, you are right! This is the next point on my list. However, thanks a lot for the hint!!!

      OSX = ( Object::RUBY_PLATFORM =~ /(darwin)/i ? true : false ) unless defined?(OSX) WIN = ( not OSX ) unless defined?(WIN)

      This looks very smart! Thanks!! 😄

      posted in Developers' Forum
      N
      niccah
    • Will this work on Mac OS?

      Hey at all!

      A first release of my plugin comes closer and closer, but I have no possibilities to check my code on Mac OS... To avoid very basic problems, I would like to ask you: What do you think? Will this code work?

      ` fileContent = "Java -jar " + File.dirname(FILE) + "\Model2GCode.jar"

      fileName = File.dirname(FILE) + "\Model2GCode."
      fileName << "command" if (RUBY_PLATFORM.downcase.include?("darwin")) # Mac OS
      fileName << "bat" if (RUBY_PLATFORM.downcase.include?("mswin")) # Windows

      file = File.new(fileName, "w")
      file.write(fileContent)
      file.close

      UI.openURL(File.dirname(FILE) + "\Model2GCode.bat") if (RUBY_PLATFORM.downcase.include?("mswin")) # Windows
      UI.openURL(File.dirname(FILE) + "\Model2GCode.command") if (RUBY_PLATFORM.downcase.include?("darwin")) # Mac OS`

      @Thom: You wrote a nice post, at which you explained, at which code parts one has to be careful because of the differences between Win / Mac. Could you please give me a link to this post? I could not find it anymore 😒

      Thanks for your help!

      posted in Developers' Forum
      N
      niccah
    • RE: Easy way for offset of a face

      Thanks a lot Chris! Okay, no problem, then I start with my ideas! 😄 In my case, I have always faces with z = 0. So, I think, it should reduce the complexity of my project 😄

      I will public my solution for other people...

      posted in Developers' Forum
      N
      niccah
    • RE: Easy way for offset of a face

      @thomthom said:

      So you want to offset a set of 3d points representing a polygon - not actually a face itself?

      Yes you are right! Sorry for the inexact description!

      posted in Developers' Forum
      N
      niccah
    • Easy way for offset of a face

      I'm wondering: In Sketchup, there is the button "offset"... so, choose a face, click on this button, and everything is fine 😄

      But, there is an "offset" function in ruby, just for single points. So, in princible, I know to calculate the "offseted" face... but my idea is a little bit more complicated and I have the feeling, that there should be a very easy way in ruby, to do that...

      Do you know, how I can use the function, which is used, by clicking the "offset" button in Sketchup?

      Thanks for your help!

      posted in Developers' Forum
      N
      niccah
    • RE: Two identical faces, but show just one

      At first at all, thank you very much for all your help! I will try it at weekend.

      @thomthom said:

      But... why do you even have two faces overlapping anyway? It's generally something to avoid in any 3d modelling.

      Following situation in my plugin:

      • you have a model
      • you choose a part of this model, which you like to get milled (for example a pocket)
      • after you have choosen it and add it to the "milling list", my plugin will copy this choosen faces into a hidden group
      • when you click on the list, the "to be milled" faces (I collored it green) will be shown
      • with the help of the hidden faces, the plugin is independent of the real model => so, before calculating the GCode, the user is allowed to change the model itself

      I hoped, I could explained my situation understandably 😄

      posted in Developers' Forum
      N
      niccah
    • RE: Two identical faces, but show just one

      Oh thanks a lot! I think, with the help of your links, I will be able so solve the problem!

      posted in Developers' Forum
      N
      niccah
    • RE: Two identical faces, but show just one

      Hey Joel! Thanks for your help! What exactly do you mean by
      @jolran said:

      and glue the component onto the other face
      ?

      posted in Developers' Forum
      N
      niccah
    • RE: Two identical faces, but show just one

      @cotty said:

      The effect is called z-fighting. You can not give them a different priority to avoid this. You can

      • move them to different positions (a little bit)
      • hide one of them
      • ...

      Ahh okay, thanks a lot for your help! I will try to hide the affected faces....

      posted in Developers' Forum
      N
      niccah
    • Two identical faces, but show just one

      Hi!

      I have the following problem: I have two identical (in the view of position) faces. One is green, the other one grey. Sketchup shows these two faces now with a little bit grey and a little bit green, and it changes by rotating the view.

      Is there a possibility to push one of these two faces to a higher "level"? Means, it is possible to show just the green one?

      To be honest, I don't know the right englisch words descriping this situation, to do a serious search in google and in your forum respectively...

      Thanks a lot for your help!

      posted in Developers' Forum
      N
      niccah
    • RE: Group in a group in a group... - transform point to outside?

      I think, I solved the problem - but I don't know exactly, what WAS wrong...

      I saw, by copiing the selected faces into a new group, not every face has the original direction. So, I changed my Face.copy function (I know, its not good to change the Face.class, but I will solve THIS problem later) in that way:

      outer_face = ents.add_face ov outer_face.material = "green" if outer_face.normal != self.normal outer_face.reverse! end

      Now, all the faces have the right direction and now the problem with the offset of the points is gone.

      But, to be honest, I have realy no idea, how these two problems correlate! And it doesn't help, to change the direction of these faces by hand - the problem stays! Just by copiing all the faces again, the problem of the offset is gone!

      Do you have ANY idea what's going on?

      I thank you sohhhhh much for all your support!!! You helped my realy a lot!

      posted in Developers' Forum
      N
      niccah
    • RE: Group in a group in a group... - transform point to outside?

      Okay, I played a little bit with this problem...
      My new findings:

      • when I move the group, the transformation of the outer group change in the right way
      • but I have still an offset (in my case in -x direction)

      Perhaps it helps a little bit to find the main problem!? 😄

      posted in Developers' Forum
      N
      niccah
    • RE: Group in a group in a group... - transform point to outside?

      @sdmitch said:

      I tried to simulate your problem using the code you posted but I got 0,0,0 points for some of the faces as expected

      Perhaps if you posted a model just so we are working on the same problem.

      Oh, that's so nice! Thanks a lot for your help!

      I uploaded a Sketchupfile:

      http://arbeitenkannstduspaeter.eu/Sketchup/Test3.skp

      When you get the right result - this means, I have to look for the problem on an other position... puhh...

      posted in Developers' Forum
      N
      niccah
    • RE: Group in a group in a group... - transform point to outside?
      <span class="syntaxdefault"><br />Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">modelEnt</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault">    if modelEnt</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">is_a</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Group</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">&&</span><span class="syntaxdefault"> modelEnt</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">name </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Model2GCode_project_x"<br /><br /></span><span class="syntaxdefault">        UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">messagebox modelEnt</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transformation</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">origin</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">to_s<br />        modelEnt</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">projectEnt</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault">            if projectEnt</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">is_a</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Group</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">&&</span><span class="syntaxdefault"> projectEnt</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">name</span><span class="syntaxkeyword">.include?(</span><span class="syntaxstring">"Model2GCode_part_x_"</span><span class="syntaxkeyword">)<br /><br /></span><span class="syntaxdefault">                UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">messagebox projectEnt</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transformation</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">origin</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">to_s<br />                projectEnt</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">partEnt</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault">                    if partEnt</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">is_a</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Face</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">                        partEnt</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">vertices</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">vertex</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault">                            UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">messagebox vertex</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">position</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">to_s<br />                        end<br />                    end<br />                end<br /><br />            end<br />        end<br /><br />    end<br />end<br /></span>
      

      I solved a lot of problems... but a last one is very tricky...

      But let me explain a little bit more:

      I have a group "Model2GCode_project_x". In this group, there is another group "Model2GCode_part_x_y". In this group, there are a lot of faces.
      The faces inside this inner group start in the coordinates origin of Sketchup. So, at the end, I should get at least one point in (0, 0, 0). But I get very strange points with completly different positions.

      However, the group.transformations are identity, means the origin of these transformations are (0, 0, 0).

      At first: Do you understand my problem? 😒
      And then: Do you have any idea, what's going wrong? I tested a lot, but always the same problem...

      Thanks a lot for your help!!

      posted in Developers' Forum
      N
      niccah
    • RE: Group in a group in a group... - transform point to outside?

      @thomthom said:

      Regarding your modification of the Sketchup::Face class: please don't release this code in a public plugin. Modifying base classes can easily conflict with other plugins. More info: http://www.thomthom.net/thoughts/2012/01/golden-rules-of-sketchup-plugin-development/

      Good hint! Thanks a lot! I will try to write everything in a module to avoid problems with other plugins!

      Thanks for pimping my code style!! 😄

      posted in Developers' Forum
      N
      niccah
    • RE: Group in a group in a group... - transform point to outside?

      You helped me a lot! Thanks!!!!

      Now, my current (but not yet perfectly working result):

      <span class="syntaxdefault">group </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> projectGroup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_group<br /><br /></span><span class="syntaxcomment"># add selected faces to group<br /></span><span class="syntaxdefault">model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">selection</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">tmp</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault">    if tmp</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">is_a</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">ComponentInstance</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">||</span><span class="syntaxdefault"> tmp</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">is_a</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Group</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">        getEntities</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">tmp</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> nil</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> group</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    elsif tmp</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">is_a</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Face</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">        newFace </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> tmp</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">copy</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">group</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> nil</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    end<br />end</span>
      
      <span class="syntaxdefault"></span><span class="syntaxcomment"># Thanks to http://sketchucation.com/forums/viewtopic.php?f=180&t=29138&start=0<br /></span><span class="syntaxdefault">class Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Face<br />    def copy</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">ents</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> trans</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">        vec </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Geom</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Vector3d</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">new 0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">0<br />        dist </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0<br /><br />        ov</span><span class="syntaxkeyword">=[]<br /></span><span class="syntaxdefault">        vec</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">length </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> dist if dist </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> 0<br />        self</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">outer_loop</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">vertices</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">v</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault">            if dist </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> 0<br />                ov</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">push</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">v</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">position</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">offset</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">vec</span><span class="syntaxkeyword">))<br /></span><span class="syntaxdefault">            else<br />                if </span><span class="syntaxkeyword">(!</span><span class="syntaxdefault">trans</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">nil</span><span class="syntaxkeyword">?)<br /></span><span class="syntaxdefault">                    ov</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">push</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">v</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">position</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transform</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">trans</span><span class="syntaxkeyword">))<br /></span><span class="syntaxdefault">                else<br />                    ov</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">push</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">v</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">position</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">                end<br />            end<br />        end<br />        outer_face </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> ents</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face ov<br />        outer_face</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">material </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">"green"<br /><br /></span><span class="syntaxdefault">        inner_faces </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">[]<br /></span><span class="syntaxdefault">        if self</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">loops</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">length </span><span class="syntaxkeyword">></span><span class="syntaxdefault"> 1<br />            il </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> self</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">loops<br />            il</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">shift<br />            il</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">loop</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault">                ov</span><span class="syntaxkeyword">=[]<br /></span><span class="syntaxdefault">                loop</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">vertices</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">v</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault">                    if dist </span><span class="syntaxkeyword">!=</span><span class="syntaxdefault"> 0<br />                        ov</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">push</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">v</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">position</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">offset</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">vec</span><span class="syntaxkeyword">))<br /></span><span class="syntaxdefault">                    else<br />                        if </span><span class="syntaxkeyword">(!</span><span class="syntaxdefault">trans</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">nil</span><span class="syntaxkeyword">?)<br /></span><span class="syntaxdefault">                            ov</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">push</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">v</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">position</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transform</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">trans</span><span class="syntaxkeyword">))<br /></span><span class="syntaxdefault">                        else<br />                            ov</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">push</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">v</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">position</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">                        end<br />                    end<br />                end<br />                inner_face </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> ents</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">add_face ov<br />                inner_faces</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">push</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">inner_face</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">            end<br />            inner_faces</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">f</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault">              f</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">erase</span><span class="syntaxkeyword">!<br /></span><span class="syntaxdefault">            end<br />        end<br />        return outer_face<br />    end<br />end </span><span class="syntaxcomment"># Class Face &nbsp;</span><span class="syntaxdefault"></span>
      
      <span class="syntaxdefault">def getEntities</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">element</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> trans</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> group</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    entitiesArray </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Array</span><span class="syntaxkeyword">.new()<br /><br /></span><span class="syntaxdefault">    if </span><span class="syntaxkeyword">(</span><span class="syntaxdefault">element</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">is_a</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">ComponentInstance</span><span class="syntaxkeyword">))<br /></span><span class="syntaxdefault">        elementEnts </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> element</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">definition<br />    else<br />        elementEnts </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> element<br />    end<br /><br />    elementEnts</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">each do </span><span class="syntaxkeyword">|</span><span class="syntaxdefault">entity</span><span class="syntaxkeyword">|<br /></span><span class="syntaxdefault">        if entity</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">is_a</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">ComponentInstance</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">||</span><span class="syntaxdefault"> entity</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">is_a</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Group</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">            if </span><span class="syntaxkeyword">(!</span><span class="syntaxdefault">trans</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">nil</span><span class="syntaxkeyword">?)<br /></span><span class="syntaxdefault">                trans </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> trans </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> entity</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transformation<br />            else<br />                trans </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> entity</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">transformation<br />            end<br />            getEntities</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">entity</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> trans</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> group</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">        elsif entity</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">is_a</span><span class="syntaxkeyword">?(</span><span class="syntaxdefault">Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Face</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">            newFace </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> entity</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">copy</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">group</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">entities</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> trans</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">        end<br />    end<br />end</span>
      

      Oh my goodness - lots of stuff 😄

      So, copying all the faces into the group "group" is successful. Problem: At the end, the position of "group" is different then the original one... so, the transformation doesn't work.

      Do you understand my Ruby code and, with a little bit of luck - can you find a mistake using the transformation? I'm not quite sure about

      trans = trans * entity.transformation

      Thanks again for all your help!!!

      EDIT: Oh, why the tabs in the code are not shown? Now, the code looks not very clear... 😒

      posted in Developers' Forum
      N
      niccah
    • RE: Group in a group in a group... - transform point to outside?

      @thomthom said:

      combine the transformations of the previous levels

      I transform a vertex in such a way:

      vertex.position.transform(group.transformation)

      So, do you mean something like that:

      vertex.position.transform(group3.transformation).transform(group2.transformation).transform(group1.transformation)

      group1: outer group
      group2 and group3: inner group

      posted in Developers' Forum
      N
      niccah
    • RE: Group in a group in a group... - transform point to outside?

      @thomthom said:

      So the user picks a group in the current context and you want to drill down into all the sub-groups and report coordinates for each face?

      Yes, you are right! I mean, I know how to drill down into all the sub-groups until I get a face. But now, whats the easiest ways to get the coordinates? Undependent of the number of the nested groups...

      posted in Developers' Forum
      N
      niccah
    • 1
    • 2
    • 3
    • 4
    • 5
    • 2 / 5