sketchucation logo sketchucation
    • Login
    โ„น๏ธ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    [Plugin] Solids Penetration Check

    Scheduled Pinned Locked Moved Plugins
    23 Posts 7 Posters 13.5k Views 7 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.
    • pilouP Offline
      pilou
      last edited by

      Hello
      What is suposed to do?
      Post an image will be a great help! ๐Ÿ˜‰ (or a video)

      As a selection is "blue" enlightting, in what color is the Interception?

      you must click on each face message dialog before can exit from the plug!
      That is some painful ๐Ÿ˜‰

      I have nothing special visual! ๐Ÿ˜ฎ
      (I am in V6)
      Interception.jpg

      (that is the same with 2 cubes grouped nammed!
      Interception1.jpg

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

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

        So information must be done in the first post ๐Ÿ˜‰
        But give an image! ๐Ÿ˜‰

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

        1 Reply Last reply Reply Quote 0
        • voljankoV Offline
          voljanko
          last edited by

          Hello,
          this plugin is only useful for checking SOLID groups and components,if they are penetrating itch other.
          I have remove the message boxes (and updated the file for download) that show you the "ungrupped" entities.So no more painful clicking.
          And also it is only for versions 8 and more,because the SOLIDS exists only from version 8 (i think).

          SuSolid.com - solid check - solid repair- solid intersection check - weight plugin

          1 Reply Last reply Reply Quote 0
          • thomthomT Offline
            thomthom
            last edited by

            Congratulations on your first plugin.

            I got a couple of tips:

            1. Wrap your code into a module with a unique name that relates to you. This way to isolate your code from the other plugins running.

            Example

            
            module VJO_Intersection_Inspector
              
              def self.check_intersections
                # ...
              end
              
            end
            
            

            ( VJO was just a shortening of voljanko that I made just for this purpose of creating an initial for the module name.)

            1. Entity.typename isextremely slow! There's rare any need it use this method and it should be avoided.
              Instead, use Entity.is_? or Entity.kind_of? to check for types.

            Examples:
            ` if entity.is_a?( Sketchup::Face )

            if entity.is_a?( Sketchup::Group)

            if entity.is_a?( Sketchup::ComponentInstance )`

            It is many time faster. Check this thread for more info and other performance tips: http://forums.sketchucation.com/viewtopic.php?f=180&t=25305

            There is another sticky thread that is worth checking out: http://forums.sketchucation.com/viewtopic.php?f=180&t=10142

            Thomas Thomassen โ€” SketchUp Monkey & Coding addict
            List of my plugins and link to the CookieWare fund

            1 Reply Last reply Reply Quote 0
            • voljankoV Offline
              voljanko
              last edited by

              I would also like to change the colour of the result to make it more visible,but I don't know how.
              Any suggestions?

              SuSolid.com - solid check - solid repair- solid intersection check - weight plugin

              1 Reply Last reply Reply Quote 0
              • thomthomT Offline
                thomthom
                last edited by

                @voljanko said:

                I would also like to change the colour of the result to make it more visible,but I don't know how.
                Any suggestions?

                Create a material and apply it to the entities.
                http://code.google.com/apis/sketchup/docs/ourdoc/material.html

                ` my_material = model.materials.add( 'IntersectionMaterial' )
                my_material.color = 'orange'

                face.material = my_material
                group.material = my_material`

                Thomas Thomassen โ€” SketchUp Monkey & Coding addict
                List of my plugins and link to the CookieWare fund

                1 Reply Last reply Reply Quote 0
                • thomthomT Offline
                  thomthom
                  last edited by

                  Trying to read your code - but I struggle to follow the code flow. Seems that your indentation isn't properly aligned throughout your code...

                  Thomas Thomassen โ€” SketchUp Monkey & Coding addict
                  List of my plugins and link to the CookieWare fund

                  1 Reply Last reply Reply Quote 0
                  • voljankoV Offline
                    voljanko
                    last edited by

                    Updated version:
                    -now is a tool (you can zoom to check the penetration area)
                    -automatic x_ray view
                    -red colored penetration area
                    -new name ๐Ÿ˜„

                    SuSolid.com - solid check - solid repair- solid intersection check - weight plugin

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

                      Now seems very cool ๐Ÿ˜„

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

                      1 Reply Last reply Reply Quote 0
                      • K Offline
                        kyyu
                        last edited by

                        @thomthom said:

                        @voljanko said:

                        I would also like to change the colour of the result to make it more visible,but I don't know how.
                        Any suggestions?

                        Create a material and apply it to the entities.
                        http://code.google.com/apis/sketchup/docs/ourdoc/material.html

                        ` my_material = model.materials.add( 'IntersectionMaterial' )
                        my_material.color = 'orange'

                        face.material = my_material
                        group.material = my_material`

                        voljanko, I see this is how you did it in your plugin. But the way you have it set up, you add a new identical material every single time your plugin is run. You can open up "Window > Model Info > Statistics" to check the number of materials.

                        You don't need to define a new material. Instead use the following, which will only ever add one pre-defined material to your drawing, no matter how many times you use it:
                        group.material = 'red'

                        1 Reply Last reply Reply Quote 0
                        • voljankoV Offline
                          voljanko
                          last edited by

                          Ok,thanks.
                          Updated.
                          Please note,if you have a big model (more than 20 solids),the plugin will need more time to compute all the intersections.
                          If you want to see that plugin is doing something (not freezed),you can select the Outliner (Window menu) as the activity display.It can be some kind of progress bar.

                          SuSolid.com - solid check - solid repair- solid intersection check - weight plugin

                          1 Reply Last reply Reply Quote 0
                          • K Offline
                            kyyu
                            last edited by

                            @voljanko said:

                            Please help me find the solution for this bug:
                            -when one solid is a subcomponent and a subgroup in a component, the plugin can't find the penetration.
                            I know the problem is in line 132 def1=solid1.entities.parent ,but don't know what to do about it.
                            Thanks

                            You probably have more experience playing with components, than me. ๐Ÿ˜› But what I can see is, there is no need to blame sub(groups or components), yet. Your plugin doesn't even work for two simple intersecting components. "def1=solid1.entities.parent" finds the definition of groups, not components. Component instances don't have the method for "entities". It's the component definition that has that method. That's why the error message saids undefine method. It should be something like "def1 = componentInstance.definition" for components.

                            Also, another strange thing(bug?) I see is when you have (group or component) inside a (group or component), I get a volume of "-1.0"

                            1 Reply Last reply Reply Quote 0
                            • voljankoV Offline
                              voljanko
                              last edited by

                              Ups,I was sure that tested with components.Now it is ok and updated for download.
                              Now the code indentation is properly aligned so perhaps readable ๐Ÿ˜„

                              You wrote :"Also, another strange thing(bug?) I see is when you have (group or component) inside a (group or component), I get a volume of "-1.0"

                              Sketchup assign the volume to -1 when the item is not a solid.If you mean something related to my plugin,please explain more.

                              You wrote:"That's why the error message saids undefined method."

                              How do you get this message?Hod do you debug? Im only using message boxes to debug.

                              SuSolid.com - solid check - solid repair- solid intersection check - weight plugin

                              1 Reply Last reply Reply Quote 0
                              • voljankoV Offline
                                voljanko
                                last edited by

                                Please help me find the solution for this bug:
                                -when one solid is a subcomponent and a subgroup in a component, the plugin can't find the penetration.
                                I know the problem is in line 132 def1=solid1.entities.parent ,but don't know what to do about it.
                                Thanks

                                EDIT:SOLVED


                                checkSolids.skp

                                SuSolid.com - solid check - solid repair- solid intersection check - weight plugin

                                1 Reply Last reply Reply Quote 0
                                • K Offline
                                  kyyu
                                  last edited by

                                  @voljanko said:

                                  Sketchup assign the volume to -1 when the item is not a solid.If you mean something related to my plugin,please explain more.

                                  No, I just mention it just in case you didn't know about it. Components are hard for me to follow, so I just briefly looked through your code to learn more. At 1st, I was thinking this was causing your bug. But then figured out the error message.

                                  @voljanko said:

                                  You wrote:"That's why the error message saids undefined method."

                                  How do you get this message?Hod do you debug? Im only using message boxes to debug.

                                  Error messages are printed out in the Ruby Console. See picture of one way I debug, by running small snippets of code with Jim Foltz's "Web Console" plugin. Jim also has a "Ruby Toolbar" plugin, that lets you reload your plugin. But I think you need to add a check for if the plugin has been installed previously, or you will get multiple menu items.

                                  require 'sketchup.rb'
                                  
                                  if( not file_loaded?('solids_penetration_check.rb') )
                                  	plugins_menu = UI.menu("Tools")
                                  	plugins_menu.add_item("Solids Penetration Check") { penetrationcheck }
                                  end
                                  file_loaded 'solids_penetration_check.rb'
                                  

                                  Where to find SU error messages.png

                                  1 Reply Last reply Reply Quote 0
                                  • voljankoV Offline
                                    voljanko
                                    last edited by

                                    Thank you thomthom for your suggestions.
                                    I have test the plugin on a model with 31 solids organised in many subgroups and it takes 40 seconds to
                                    find 10 "penetrations".So it is slow and need some speed-up like you suggest.

                                    SuSolid.com - solid check - solid repair- solid intersection check - weight plugin

                                    1 Reply Last reply Reply Quote 0
                                    • R Offline
                                      richhaas
                                      last edited by

                                      Any way to get this to Intersect With Model to make bright orange(selectable color) lines to check all the other geometry that is NOT solids?

                                      Richard

                                      1 Reply Last reply Reply Quote 0
                                      • voljankoV Offline
                                        voljanko
                                        last edited by

                                        Yes,there is a way,why are you asking ๐Ÿ˜„
                                        Anyway,if you want to find the mistakes,that makes your group a non-solid,there is another plugin - Solid Inspector from thomthom.

                                        SuSolid.com - solid check - solid repair- solid intersection check - weight plugin

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

                                          is the plugin able to check intersections between solids when they are part of components?
                                          i checked, and it doesn't seem so

                                          the connections are solids, intersection is detected when they are outside the component, and not when theyare inside

                                          is there a way to solve the problem?


                                          bracing connection intersection

                                          1 Reply Last reply Reply Quote 0
                                          • R Offline
                                            richhaas
                                            last edited by

                                            @voljanko said:

                                            Yes,there is a way,why are you asking ๐Ÿ˜„
                                            Anyway,if you want to find the mistakes,that makes your group a non-solid,there is another plugin - Solid Inspector from thomthom.

                                            I don't draw with solids. Need a tool to check all the other things I draw to look for possible overlap conflicts between components, groups etc. 'Tile components' "intersecting" 'cabinet components' for instance...

                                            Richard

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

                                            Advertisement