sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    Vertex Counting plugin?

    Scheduled Pinned Locked Moved Plugins
    14 Posts 7 Posters 2.4k 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.
    • D Offline
      dsarchs
      last edited by

      I've been looking into using the Cryengine 3 (Crysis 2 engine) for some arch. viz. work -- it's a free download, works well with sketchup, and has nice visuals for walkthroughs (that you can shoot at, if you're so inclined).

      Anyway, it has a strict limit to the number of vertices that can be exported in any given model (requiring multiple models to be combined in the editor) and it would be really useful to know how many meshes can be combined for each export to limit the combining later on.

      Does anyone know if a plugin exists that can give you a quick count of how many vertices are in a given selection? If not, would that be an easy script to write?

      Knowledge is a polite word for dead but not buried imagination.

      -e.e.cummings

      1 Reply Last reply Reply Quote 0
      • TIGT Offline
        TIG Moderator
        last edited by

        If the vertices belong to faces [rather than edges that don't necessarily have a face]...
        You can get the vertices in a selection thus:
        vs=[];Sketchup.active_model.selection.each{|e|vs<<e.vertices if e.class==Sketchup::Face};vs.flatten!;vs.uniq!;p vs.length
        Copy+paste into the Ruby Console - it puts the number of vertices in the Select into the Console...
        If the Selection is a Group/Instance either edit it first and Select-All OR recast the code the dig down into group.entities etc...

        TIG

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

          @dsarchs said:

          Does anyone know if a plugin exists that can give you a quick count of how many vertices are in a given selection? If not, would that be an easy script to write?

          Here is one that will. It looks at whole model if nothing is selected.

          
          require 'sketchup'
          
          module SDM_PtCnt
          
            def self.point_counter
              mod=Sketchup.active_model
              ent=mod.active_entities
              sel=mod.selection
              sel=ent if sel.empty?
              @f_cnt=0;@e_cnt=0;@verts=[]
              recurse(sel)
              @verts.flatten!.uniq!
              UI.messagebox "This model contains\n\n#{@f_cnt} faces\n#{@e_cnt} edges\nand #{@verts.length-1} vertices"
            end
            
            def self.recurse(ents)
              ents.each do |e|
                if e.is_a? Sketchup;;Group
                  recurse(e.entities)
                elsif e.is_a? Sketchup;;ComponentInstance
                  recurse(e.definition.entities)
                elsif e.is_a? Sketchup;;Face
                  @f_cnt += 1;@verts<<e.vertices
                elsif e.is_a? Sketchup;;Edge
                  @e_cnt += 1;@verts<<e.vertices
                end
              end
            end
            
          end
          
          if not file_loaded?(File.basename(__FILE__))
            UI.menu("Plugins").add_item("Point Counter") { SDM_PtCnt.point_counter }
            file_loaded(File.basename(__FILE__))
          end
          
          

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

          http://sdmitch.blogspot.com/

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

            @verts.flatten!.uniq!

            Beware of the bang methods. .flatten! and .uniq! - while faster and preferred, will return nil upon no change.
            One has to use them on separate lines to avoid potential, and likely, errors.

            @verts.flatten! @verts.uniq!

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

            1 Reply Last reply Reply Quote 0
            • D Offline
              dsarchs
              last edited by

              Thanks for the responses. I'll have to try this out when I get home tonight.

              Knowledge is a polite word for dead but not buried imagination.

              -e.e.cummings

              1 Reply Last reply Reply Quote 0
              • TIGT Offline
                TIG Moderator
                last edited by

                @thomthom said:

                @verts.flatten!.uniq!

                Beware of the bang methods. .flatten! and .uniq! - while faster and preferred, will return nil upon no change.
                One has to use them on separate lines to avoid potential, and likely, errors.

                @verts.flatten! @verts.uniq!

                But combined as @verts.flatten.uniq! so there's only an end 'bang!' it will work.
                Without the ! it returns the changed array, with it it returns either the changed array OR nil if there's no change !!

                TIG

                1 Reply Last reply Reply Quote 0
                • D Offline
                  dsarchs
                  last edited by

                  I finally had a chance to try this out and it works (almost) perfectly!

                  Almost because for some reason it always returns 1 less vertex than is actually present. For example, a square plane shows 3, a cube shows 7, etc.
                  This is a complete non-issue, though, since I'm just trying to make sure the number is less than (I think) 25,000.

                  Thanks again!

                  Knowledge is a polite word for dead but not buried imagination.

                  -e.e.cummings

                  1 Reply Last reply Reply Quote 0
                  • TIGT Offline
                    TIG Moderator
                    last edited by

                    In my code you compile an array of arrays of vertices from faces... [vs]
                    The vs.flatten! explodes the arrays into one giant array.
                    The vs.uniq! ensures that there are no duplicates [two abutting faces share 2 vertices].
                    The vs.length returns the total number of vertices - it should not be 'short' πŸ˜•

                    TIG

                    1 Reply Last reply Reply Quote 0
                    • D Offline
                      dsarchs
                      last edited by

                      I actually used the code offered by sdmitch (after having separated the command as thomthom suggested), and saved it as a plugin rather than having to cut+paste whenever I wanted to check.

                      Knowledge is a polite word for dead but not buried imagination.

                      -e.e.cummings

                      1 Reply Last reply Reply Quote 0
                      • Rich O BrienR Online
                        Rich O Brien Moderator
                        last edited by

                        Fredo has vertex marking tools and count sides tool maybe ask to report the vert numbers?

                        A small donation goes along way πŸ‘

                        Download the free D'oh Book for SketchUp πŸ“–

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

                          @dsarchs said:

                          I actually used the code offered by sdmitch (after having separated the command as thomthom suggested), and saved it as a plugin rather than having to cut+paste whenever I wanted to check.

                          You are correct. The count was one less than it should be. Out of habit, because Ruby array index always starts at 0, subtracting 1 from the array length is so common that it is a reflex action. The correct message statement would be

                          UI.messagebox "This model contains\n\n#{@f_cnt} faces\n#{@e_cnt} edges\nand #{@verts.length} vertices"
                          
                          

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

                          http://sdmitch.blogspot.com/

                          1 Reply Last reply Reply Quote 0
                          • D Offline
                            dsarchs
                            last edited by

                            Thanks, although I'm not really worried that it lists 1 less than actual. I just checked and the limit is 64,000 vertices -- so being off by 1 is irrelevant. I mostly wanted a tool to see how many object groups I could combine for single export.
                            If I think about it I'll change the code when I get home tonight -- but either way it's working for what I need it to do.

                            Knowledge is a polite word for dead but not buried imagination.

                            -e.e.cummings

                            1 Reply Last reply Reply Quote 0
                            • fredo6F Offline
                              fredo6
                              last edited by

                              @unknownuser said:

                              Fredo has vertex marking tools and count sides tool maybe ask to report the vert numbers?

                              The new version of CountFacesBySides, part of FredoTools, now provide the count of vertices in the selection or the whole model.

                              Fredo

                              1 Reply Last reply Reply Quote 0
                              • bac9-flclB Offline
                                bac9-flcl
                                last edited by

                                Hey, I've just wanted to say thanks for all your answers here!
                                I'm working with CE3 too, and your code is really helpful to me. πŸ˜„

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

                                Advertisement