sketchucation logo sketchucation
    • Login
    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!
    πŸ›£οΈ Road Profile Builder | Generate roads, curbs and pavements easily Download

    Explode and regroup script?

    Scheduled Pinned Locked Moved Extensions & Applications Discussions
    extensions
    26 Posts 3 Posters 4.4k Views 3 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.
    • sdmitchS Offline
      sdmitch
      last edited by

      The problem is some groups being dropped on "top" of others already moved to the surface.

      So to avoid that conflict, I have modified the previous code I posted.

      mod = Sketchup.active_model
      sel = mod.selection
      gat = []
      sel.grep(Sketchup;;Group){|g|
       o = [g.bounds.center.x,g.bounds.center.y,g.bounds.min.z]
       p = mod.raytest([o,[0,0,-1]])[0];
       gat<<[g,Geom;;Transformation.new(p-g.bounds.min)] if p
      }
      gat.each{|g| g[0].transform!(g[1])}
      
      

      badra 5 skp 8.skp

      Nothing is worthless, it can always be used as a bad example.

      http://sdmitch.blogspot.com/

      1 Reply Last reply Reply Quote 0
      • G Offline
        gregswk
        last edited by

        @sdmitch said:

        The problem is some groups being dropped on "top" of others already moved to the surface.

        So to avoid that conflict, I have modified the previous code I posted.

        mod = Sketchup.active_model
        > sel = mod.selection
        > gat = []
        > sel.grep(Sketchup;;Group){|g|
        >  o = [g.bounds.center.x,g.bounds.center.y,g.bounds.min.z]
        >  p = mod.raytest([o,[0,0,-1]])[0];
        >  gat<<[g,Geom;;Transformation.new(p-g.bounds.min)] if p
        > }
        > gat.each{|g| g[0].transform!(g[1])}
        > 
        

        Oh my God, thank you so much, sdmitch!!
        It is working perfectly!! πŸ˜„ πŸ‘ πŸ‘ πŸŽ‰

        1 Reply Last reply Reply Quote 0
        • pilouP Offline
          pilou
          last edited by

          Always amazazed that few line can make! Bravo! 😎

          Frenchy Pilou
          Is beautiful that please without concept!
          My Little site :)

          1 Reply Last reply Reply Quote 0
          • G Offline
            gregswk
            last edited by

            @sdmitch said:

            The problem is some groups being dropped on "top" of others already moved to the surface.

            So to avoid that conflict, I have modified the previous code I posted.

            mod = Sketchup.active_model
            > sel = mod.selection
            > gat = []
            > sel.grep(Sketchup;;Group){|g|
            >  o = [g.bounds.center.x,g.bounds.center.y,g.bounds.min.z]
            >  p = mod.raytest([o,[0,0,-1]])[0];
            >  gat<<[g,Geom;;Transformation.new(p-g.bounds.min)] if p
            > }
            > gat.each{|g| g[0].transform!(g[1])}
            > 
            

            I'm sorry, Sdmitch... There is still one problem.. πŸ˜•
            Capture2.JPG
            Capture3.JPG
            The groups are moving by Z axis perfectly, but when it goes down to terrain, they are changing their X and Y positions. They are messing with each other.. πŸ˜•
            Why is it happening?

            1 Reply Last reply Reply Quote 0
            • sdmitchS Offline
              sdmitch
              last edited by

              @gregswk said:

              @sdmitch said:

              The problem is some groups being dropped on "top" of others already moved to the surface.

              So to avoid that conflict, I have modified the previous code I posted.

              mod = Sketchup.active_model
              > > sel = mod.selection
              > > gat = []
              > > sel.grep(Sketchup;;Group){|g|
              > >  o = [g.bounds.center.x,g.bounds.center.y,g.bounds.min.z]
              > >  p = mod.raytest([o,[0,0,-1]])[0];
              > >  gat<<[g,Geom;;Transformation.new(p-o)] if p
              > > }
              > > gat.each{|g| g[0].transform!(g[1])}
              > > 
              

              I'm sorry, Sdmitch... There is still one problem.. πŸ˜•
              [attachment=2:kcc5danh]<!-- ia2 -->Capture2.JPG<!-- ia2 -->[/attachment:kcc5danh]
              [attachment=1:kcc5danh]<!-- ia1 -->Capture3.JPG<!-- ia1 -->[/attachment:kcc5danh]
              The groups are moving by Z axis perfectly, but when it goes down to terrain, they are changing their X and Y positions. They are messing with each other.. πŸ˜•
              Why is it happening?

              Oops. My bad. I forgot to change the "origin" in the transformation. Code has been fixed.


              badra 5 skp 8.skp

              Nothing is worthless, it can always be used as a bad example.

              http://sdmitch.blogspot.com/

              1 Reply Last reply Reply Quote 0
              • G Offline
                gregswk
                last edited by

                @sdmitch said:

                Oops. My bad. I forgot to change the "origin" in the transformation. Code has been fixed.

                Wonderful, Sdmitch!
                Now it is perfect!!! πŸŽ‰ πŸŽ‰
                Thank you so much!!! πŸ˜„

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

                Advertisement