• Login
sketchucation logo sketchucation
  • Login
โš ๏ธ Libfredo 15.4b | Minor release with bugfixes and improvements Update

Explode and regroup script?

Scheduled Pinned Locked Moved Extensions & Applications Discussions
extensions
26 Posts 3 Posters 4.2k 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.
  • G Offline
    gregswk
    last edited by 16 Sept 2016, 13:43

    @pilou said:

    In this special case (flat terrain) ๐Ÿ˜„
    If you Select All Groups / Right Click / Make Component : the Ray Tracer works!

    Then just explode one time and you have your original groups on the terrain!

    But sure your groups have a special state! ๐Ÿ˜ฒ
    A little mystery! ๐Ÿ˜ฎ

    My terrain isnt flat ๐Ÿ˜ข
    Yeah...Maybe a big mystery!
    Pleasee find out for me! ๐Ÿ’š

    1 Reply Last reply Reply Quote 0
    • G Offline
      gregswk
      last edited by 16 Sept 2016, 14:04

      Capture.PNG
      @pilou said:

      SmartDrop works for any terrain but maybe that is not that you want ? ๐Ÿค“ (Right Click on Selection)

      And sure that resovle not the little mystery! ๐Ÿ˜„

      So, I've done the landscape above importing all those buildings solids and doing the following steps:

      1. Transforming all groups as single components using "tt_groups2comps" plugin
      2. Transforming all components as single groups using "Make_Components" plugin
        *BUT THIS PLUGIN DOESNT MAKE ALL SELECTED COMPONENTS AS SINGLE GROUPS AT ONCE. THE "MAKE COMPONENTS TO SINGLE GROUPS" SCRIPT ONLY TRANSFORM 1 COMPONENT TO GROUP AT A TIME. SO I'VE MADE A SHORTCUT FOR THAT FUNCTION AND I KEPT REPEATING PRESSING THE SHORTCUT KEY AND THE ENTER KEY, WHICH TOOK ME A LOT OF TIME... ๐Ÿ˜ 
      3. I used Raytracer to drop all groups to the terrain

      I really would like to make this process as quickly as possible... For my future projects. Any idea? ๐Ÿ˜„
      Thank you

      1 Reply Last reply Reply Quote 0
      • S Offline
        sdmitch
        last edited by 16 Sept 2016, 14:40

        @gregswk said:

        @sdmitch said:

        Why? Is there a point to this exercise?

        Hi! The reason is that I can't use "drop to terrain" plugins like DropGC and Raytracer. I select the groups and click the plugin but nothing happens.
        BUT if I explode and regroup them (one by one), everything works normally. I really dont know why...

        I'm with you, I can't figure out why this is so. But, since these are buildings, you wouldn't want them to conform to the surface like Pilou's SmartDrop demo. So something as simple as

        mod = Sketchup.active_model
        sel = mod.selection
        sel.grep(Sketchup;;Group){|g|
         t=mod.raytest([g.bounds.min,[0,0,-1]])[0]
         g.transform!(Geom;;Transformation.new(t-g.bounds.min)) if t
        }
        
        

        This works on your groups whether they are exploded and regrouped or not.

        Select group(s), paste code into Ruby Console, press Enter.

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

        http://sdmitch.blogspot.com/

        1 Reply Last reply Reply Quote 0
        • P Offline
          pilou
          last edited by 16 Sept 2016, 20:27

          Sdmitch to the rescue! ๐Ÿ˜‰

          But that resolve not the little mystery of the 2 groups states! ๐Ÿ˜„
          What are special on them ?
          How do you create that ?

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

          1 Reply Last reply Reply Quote 0
          • G Offline
            gregswk
            last edited by 17 Sept 2016, 00:53

            @sdmitch said:

            @gregswk said:

            @sdmitch said:

            Why? Is there a point to this exercise?

            Hi! The reason is that I can't use "drop to terrain" plugins like DropGC and Raytracer. I select the groups and click the plugin but nothing happens.
            BUT if I explode and regroup them (one by one), everything works normally. I really dont know why...

            I'm with you, I can't figure out why this is so. But, since these are buildings, you wouldn't want them to conform to the surface like Pilou's SmartDrop demo. So something as simple as

            mod = Sketchup.active_model
            > sel = mod.selection
            > sel.grep(Sketchup;;Group){|g|
            >  t=mod.raytest([g.bounds.min,[0,0,-1]])[0]
            >  g.transform!(Geom;;Transformation.new(t-g.bounds.min)) if t
            > }
            > 
            

            This works on your groups whether they are exploded and regrouped or not.

            Select group(s), paste code into Ruby Console, press Enter.

            Hi, Sdmitch!
            Thaaaank you so muchh!! That's all what I needed!!
            ๐Ÿ˜„ ๐Ÿ‘ ๐Ÿ‘

            1 Reply Last reply Reply Quote 0
            • G Offline
              gregswk
              last edited by 17 Sept 2016, 01:04

              @pilou said:

              Sdmitch to the rescue! ๐Ÿ˜‰

              But that resolve not the little mystery of the 2 groups states! ๐Ÿ˜„
              What are special on them ?
              How do you create that ?

              Hi, Pilou!
              First of all, thank you so much for all support you are giving to me. ๐Ÿ˜„
              Yes, the groups states remain. Mystery!
              I've used Autocad Map 3d to generate those buildings with their proper heights attaching a shapefile. Before I export, I converted polygons to solids using -convtosolid command.
              Then I saved as .dwg to export those buildings to Sketchup.

              1 Reply Last reply Reply Quote 0
              • P Offline
                pilou
                last edited by 17 Sept 2016, 11:54

                Even genious Sdmitch has find a solution for your problem ๐Ÿ‘
                taka a look to these architect tools by Thomthom!

                A suite of tools to help with imported DWG files aimed at Architecture
                Maybe there there are some tricky things nside!

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

                1 Reply Last reply Reply Quote 0
                • S Offline
                  sdmitch
                  last edited by 17 Sept 2016, 13:40

                  @pilou said:

                  But that resolve not the little mystery of the 2 groups states! ๐Ÿ˜„
                  What are special on them ?
                  How do you create that ?

                  My new project for the weekend!!!!!!!!

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

                  http://sdmitch.blogspot.com/

                  1 Reply Last reply Reply Quote 0
                  • P Offline
                    pilou
                    last edited by 17 Sept 2016, 16:58

                    I believe that the problem comes from the export DXF from external program! ๐Ÿ˜„
                    (double vertices ?...)

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

                    1 Reply Last reply Reply Quote 0
                    • S Offline
                      sdmitch
                      last edited by 17 Sept 2016, 18:02

                      @pilou said:

                      I believe that the problem comes from the export DXF from external program! ๐Ÿ˜„
                      (double vertices ?...)

                      No the problem is that the transformation.origin is not over the "surface"
                      ` name = Group#445
                      origin = (-420.075838m, -663.573913m, 8.06m)
                      x axis = [1.0,0.0,0.0]
                      y axis = [0.0,1.0,0.0]
                      z axis = [0.0,0.0,1.0]
                      x,y,z = [-16538.41882347539,-26124.9572089176,317.32283464566945]

                      name = Group#468
                      origin = (-420.075838m, -663.573913m, 8.06m)
                      x axis = [1.0,0.0,0.0]
                      y axis = [0.0,1.0,0.0]
                      z axis = [0.0,0.0,1.0]
                      x,y,z = [-16538.41882347539,-26124.9572089176,317.32283464566945]` which is why the "Drop" fails. By exploding and regrouping the group, the transformation.orig is reset to bounds.min which is over the "surface".

                      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 18 Sept 2016, 14:23

                        @sdmitch said:

                        @pilou said:

                        I believe that the problem comes from the export DXF from external program! ๐Ÿ˜„
                        (double vertices ?...)

                        No the problem is that the transformation.origin is not over the "surface"
                        ` name = Group#445
                        origin = (-420.075838m, -663.573913m, 8.06m)
                        x axis = [1.0,0.0,0.0]
                        y axis = [0.0,1.0,0.0]
                        z axis = [0.0,0.0,1.0]
                        x,y,z = [-16538.41882347539,-26124.9572089176,317.32283464566945]

                        name = Group#468
                        origin = (-420.075838m, -663.573913m, 8.06m)
                        x axis = [1.0,0.0,0.0]
                        y axis = [0.0,1.0,0.0]
                        z axis = [0.0,0.0,1.0]
                        x,y,z = [-16538.41882347539,-26124.9572089176,317.32283464566945]` which is why the "Drop" fails. By exploding and regrouping the group, the transformation.orig is reset to bounds.min which is over the "surface".

                        -So that means I need to explode and regroup to reset them? Or there is another way to change their transformation.orig to bounds? Sorry, I didnt understand very well..
                        -I'm using your script to drop the groups down to terrain, but I'm having some problem... Many groups arent dropping well, they fly. ๐Ÿ˜•
                        flying.JPG

                        1 Reply Last reply Reply Quote 0
                        • S Offline
                          sdmitch
                          last edited by 18 Sept 2016, 16:56

                          @gregswk said:

                          -I'm using your script to drop the groups down to terrain, but I'm having some problem... Many groups arent dropping well, they fly. ๐Ÿ˜•
                          [attachment=0:373faxky]<!-- ia0 -->flying.JPG<!-- ia0 -->[/attachment:373faxky]

                          Could you post a sample of the one's that "fly".

                          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 18 Sept 2016, 19:51

                            @sdmitch said:

                            @gregswk said:

                            -I'm using your script to drop the groups down to terrain, but I'm having some problem... Many groups arent dropping well, they fly. ๐Ÿ˜•
                            [attachment=1:2366zu5c]<!-- ia1 -->flying.JPG<!-- ia1 -->[/attachment:2366zu5c]

                            Could you post a sample of the one's that "fly".


                            badra 5 skp 8.skp

                            1 Reply Last reply Reply Quote 0
                            • S Offline
                              sdmitch
                              last edited by 18 Sept 2016, 21:34

                              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 18 Sept 2016, 21:57

                                @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
                                • P Offline
                                  pilou
                                  last edited by 18 Sept 2016, 22:13

                                  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 18 Sept 2016, 23:09

                                    @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
                                    • S Offline
                                      sdmitch
                                      last edited by 19 Sept 2016, 01:08

                                      @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 19 Sept 2016, 02:59

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

                                        Advertisement