sketchucation logo sketchucation
    • Login
    1. Home
    2. niccah
    3. Posts
    ⚠️ Attention | Having issues with Sketchucation Tools 5? Report Here
    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