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

    [Plugin] Center of Gravity

    Scheduled Pinned Locked Moved Plugins
    183 Posts 41 Posters 297.6k Views 41 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.
    • TIGT Offline
      TIG Moderator
      last edited by

      I'm unclear as to what the problem with some Macs really was - It involved a method loaded inside a class::method not being recognized - it worked fine OK on some Macs and all PCs, but not the few Macs you lot had...
      I had been a bit lazy in defining the several times 'db()' within the several class::methods anyway so I rewrote the whole code !!! It fixed it by not causing the problem - whatever that was ???
      I now have it with all of its methods inside a single class [there are no nested methods this time] and then I call the two 'versions' ['Find CofG' and 'Composite CofG'] with variables CofGravity.new(1) etc in the menu code, so that on def initialize(typo=1) it has a case test and runs appropriate methods to suit... 🤓 😒

      TIG

      1 Reply Last reply Reply Quote 0
      • B Offline
        billwheaton
        last edited by

        I like that a lot. I am making a telescope (12.5" mirror) and balance is very important. The last thing I want to do is add weight to it in order to balance it, because it's already almost too heavy to be portable.

        This is exactly what I have been looking for I think. I just don't know how to program Ruby well enough, and I'm really unclear on the sketchup API object model. This rocks my whole world and maybe now I can finish that telescope.

        Previously I was copying a face, then rotating it to horizontal, then using Centroid.rb to find the centroid, then rotating the centroid and face back the other way and pasting the face back where it came from. Then I placed my centroid component there and moved it half way down the target component.

        Then, in a separate spreadsheet, I put the area of the face times the height of the part times the density of the material to get its weight. Using the 'query tool' I got the xyz coordinates for the spreadsheet.

        I did this for every part and used the resulting moments to find the composite Center of Mass. Let me tell you, it was a pain in the butt and very slow (days). And always with the dread of moving something out of place or adding a new part.

        I think using this will be a lot easier. After all the nested composite Centers of Mass are trickled up to the top component's COG, then all I have to do is to query it to find its XYZ coords.

        A couple of ideas:
        Make the resulting CofG component a Dynamic Component that reports its xyz position, mass, volume etc.
        Is there a way to regen the COG when I modify a component's shape?
        Recursively regen nested composite CoGs when a shape is modified, or when the spacial relationship or density of components changes?
        Create a report of all of them?

        Thinking out loud, I understand that the code takes a while to run, and why. I wonder if there is some sort of mathematical integration trick that wouldn't require slicing it up like that. Polar slices? Integration certainly will work on a cube or a sphere, but that's the hard way of course. But how would you know ahead of time so as to change the method.

        I'm afraid its been too many years out of college to remember any of that.

        EDITED TO ADD THIS:
        But, I have been thinking about the cog of a random solid...
        For every non collinear vertex, if you add a constant weight, and then picking one random vertex calculate vectors to each other vertex. Then average them all. The CofG will lie on a vector's line from the starting vertex. Then pick a second random vertex and do it again. I think that the two lines will actually meet (not be skewed), and the intersection of the two lines should be the centroid of the solid. For a simple convex hull object I think it works, and others like donut or hollow sphere topology I think. But I am way out of my league at this point.

        -billwheaton decaturgausa

        1 Reply Last reply Reply Quote 0
        • B Offline
          billwheaton
          last edited by

          @unknownuser said:

          This is exactly what I have been looking for I think. I just don't know how to program Ruby well enough, and I'm really unclear on the sketchup API object model. This rocks my whole world and maybe now I can finish that telescope.

          I had such high hopes, but here there are a couple things that make it not work for me as is.

          Here is a very simply example to illustrate the problem, and I am sure that woodworkers would be familiar. I corral parts into assemblies of sub parts and create components from them.
          A side and a rail become a 'side assembly'.
          Two side assemblies, a front, a back, and a bottom and a knob become a 'drawer'.
          Three drawers become a 'drawer set'.
          Two drawer sets, side by side go into a desk carcass.

          Drilling down into a 'side assembly' and selecting the rail part I run CoG.
          Then I select the side part and run its CoG.
          Then I select both CoGs and run their composite CoG, to get CoG of the 'side assembly' system as a whole.
          Because the side assembly is mirrored on the other side of the drawer, it too gets a composite CoG in it.
          But the COG for it is physically on the other side of the drawer.
          Going up a level in the assembly hierarchy is the 'drawer' component I'd like to get the CoG of it. It is the composite of the individual drawer parts.

          the COG of the back
          the COG of the front
          the COG of the bottom
          the COG of the knob
          the COG of the left side (problem here)
          the COG of the right side (problem here too)

          The problem is, the left and right side assemblies don't have their CoG exposed at the same level as the other 4 parts.
          If I use the outliner to drag the left one out of the one instance to the containing instance (the first drawer for example)then it has the correct position for the left side, but then its not part of the component anymore. Opening the right side assembly reveals that it is indeed gone. So before moving anything to the containing instance, I must first make a copy of it for each instance it exists in. Then, I visit each of those instances, select one of them in outliner and move it up a level. That works pretty good. Everything then being at the same level, (drawer) a composite COG for the drawer can be made. But again, once made, if you use more than one drawer (the 'drawer set') then you have to copy the CompCOG object for as many drawers as you have and visit each drawer with outliner and move those up a level in order to make a second level 'drawer set' CompCOG. And likewise for the desk carcass which consists of two of those 'drawer sets'. As you can see, its pretty darned cumbersome, but it works, and its potentially better than I had before with spreadsheets.

          Of course, finding the CoG of a desk with drawers is trivial because who cares. It's on four legs and it sits stationary in an office. But a telescope is required to be balanced. There are mirror cells, draw tubes, eyepieces, bearings, gimbals, finder rings, finders, prisms, dew heaters, tracking motors, cameras and every imaginable part.

          A warning when you pull something in from a saved component that has one of these CoG elements in it. Sometimes the embedded "CoG" crosshairs get renamed to "CoG#1" and "CoG#2" etc. The code, as it stands ignores them. To make them work, you need to replace them with "CoG" after you reload the saved component... which negates the whole reason for saving components in my estimation... I haven't gotten the hang of all that, especially when it comes to replacing complex components for simplified proxy components to speed up rendering.

          The thing is, I really like Sketchup. It's intuitive, accurate enough for actually building things. I understand how it works out of the box. And every time I go back to TurboCad I feel like I want to take a shower. The learning curve on Autocad and SolidWorks (as if I could ever afford that) is so far beyond my capability If it were my job it would be a different story, but I'm not an architect or mechanical engineer.

          When I have $400 - $4000 to kill, I spend it on tools for my woodshop. I think a lot of other Sketchup users are the same way. Spending $10-#20 on a great script is not a problem though. I drop that kind of dough in a heartbeat down at the home improvement store every week.

          So TIG, if you can figure out my ramblings (sorry, I am like that) I would be willing to donate $20 or more and I would urge others to contribute to make it worth your while too.

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

            Bill
            Sorry not to reply before - somehow I missed your post.
            Could you explain why you want to find the CoGs of your joinery items and how you perhaps need to combine them, and ultimately how you'll use them all to help you.
            Don't get hung up on what the current tool does - just say what some new 'wonder-tool' would do for you - a step-by-step explanation of how you might use it [without worrying about technicalities, grouping, sub-componenting etc too much...] would be good...
            Then I can have a think about how I might help you further... 🤓

            TIG

            1 Reply Last reply Reply Quote 0
            • S Offline
              Stefanka
              last edited by

              Hello,
              I'm sorry but my english is véry bad! (normal, i'm french! 😉
              I have just a question about the plugin CofG (that was a wonderfull plugin.. thanks for this work!)
              I have SU8pro.
              I have installed the plugin and it work marvelously for some of calcul of center of gravity, and weight.
              But when the pieces was littel... it doesn't work. because there is a problem with the units of calcul of density and cube metter..
              When the pieces was smaller then 0.001 cube meter the calcul of the weignt was 0.0kg...
              then when i use the composite CofG... the adition was wrong too...
              Look at the picture, cube 808080mm was the same weight ten à 100100100mm with the same density.

              So is it possible to change the units of the calcul?
              Thanks for the answers, and so sorry for my english...

              Best reggards
              Stef


              CofG problem units.jpg

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

                You could use 'g/cm3' as the density.
                You'll then get a result you can use
                1 g/cm3 == 1000 kg/m3 !

                Vous pourriez utiliser 'g/cm3' comme la densité.
                Vous aurez alors obtenir un résultat que vous pouvez utiliser
                1 g/cm3 == 1000 kg/m3!

                TIG

                1 Reply Last reply Reply Quote 0
                • S Offline
                  Stefanka
                  last edited by

                  Hello TIG!
                  Thanks for this logic answers.... I haven't see that I can change the units of density...
                  i'm so stupid.... I have loose a day to find how it works!!
                  Thanks for your job!!
                  Just a think, I have installed sketchyphysic 3.2 to try to find something for de CofG... and to move my model (it was a spécial door for boat)..
                  But when Sketchyphysic was installed, your plugin CofG run correctly, but not the composite... when i run it, nothing happend... I have unistalled Sketchyphysic, and it works...
                  Thats strange!

                  Other think, my door is arround 25 group in an other group. when I run CofG, the résult was really haevy (arround 320kg) and the center of gravity looks wrong, and when a run CofG for each group, and i Composite after, i looks like better. (117 kg thats reallist)
                  Center of gravity looks better too.

                  All groups are in the same matérial Steel arround 7800kg/cu.m

                  I dont understand why?

                  Thanks for your answers.!

                  Best reggards
                  Stef

                  1 Reply Last reply Reply Quote 0
                  • A Offline
                    Anton_S
                    last edited by

                    Very, very good plugin!!!

                    I can't even think how to calculate that kind of stuff, that's just pro.

                    1 Reply Last reply Reply Quote 0
                    • A Offline
                      Anton_S
                      last edited by

                      @stefanka said:

                      Hello TIG!
                      Thanks for this logic answers.... I haven't see that I can change the units of density...
                      i'm so stupid.... I have loose a day to find how it works!!
                      Thanks for your job!!
                      Just a think, I have installed sketchyphysic 3.2 to try to find something for de CofG... and to move my model (it was a spécial door for boat)..
                      But when Sketchyphysic was installed, your plugin CofG run correctly, but not the composite... when i run it, nothing happend... I have unistalled Sketchyphysic, and it works...
                      Thats strange!

                      Other think, my door is arround 25 group in an other group. when I run CofG, the résult was really haevy (arround 320kg) and the center of gravity looks wrong, and when a run CofG for each group, and i Composite after, i looks like better. (117 kg thats reallist)
                      Center of gravity looks better too.

                      All groups are in the same matérial Steel arround 7800kg/cu.m

                      I dont understand why?

                      Thanks for your answers.!

                      Best reggards
                      Stef

                      Sketchy Physics doesn't uses center of mass/gravity. It just uses the bounds center

                      1 Reply Last reply Reply Quote 0
                      • P Offline
                        Phono
                        last edited by

                        Hi,
                        I have just installed CofG in Trimble Sketchup 8 and it works fine.
                        However I have a special need. I am designing a houseboat, and I need to calculate the global center of mass of it.
                        For the parts that are made with materials, like walls, floors, the plugin is ok. But for components that I have added as a whole, like a diesel genset, or a washing machine, I do not know the equivalent density.
                        What I would like to do is to assume the component is homogeneous, and to assign it a weight.
                        I have studied how CofG works, and I noticed that each CofG group is given 2 attributes : volume and weight. I have tried to edit the weight attribute, to see what happens. Of course, the text associated with it must also be manually edited.
                        What surprises me is that whenever I change the weight attribute, the composite calculation command fails. It says "calculating", but produces nothing : no new CofG object is created. What prevents it from working?
                        Actually what I would like is an additional command with a new dialog to calculate the CofG: instead of entering the density, I would like to be able to enter the total weight, and have the command place the G point at the center of mass of the group or component. In other words, once the volume is calculated, and the center of mass found, assign the weight attribute with the weight specified in the dialog.
                        Is this feasible?
                        Jean-Marc

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

                          Hello, I have applied all the proper steps but the Composite C of G but nothing happens :<
                          Its not working, I selected two CofG groups but after I applied Composite C of G only

                          CofG Composite:
                          Weight= 0.0 kg

                          appears and it is enclosed in a box when you click it, can you help interpret what this means? Thank you, ill upload the photo


                          Thesis model COG3.jpg

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

                            It is NOT the Composite tool that's the issue.
                            Because if you notice, the two 'motor's' CofG's have 0 weight returned anyway !
                            This is probably because the two selected objects are too complex, and are not 'solids' and probably have internal partitions, single planes etc.
                            If you make a simple grouped solid cylinder the same size as the 'motor' you should get a proper a weight and a true CofG for it...
                            Of course none of this is definite because you haven't supplied the SKP in question...
                            😕

                            TIG

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

                              Here's v1.6
                              http://sketchucation.com/forums/viewtopic.php?p=229401#p229401
                              1.6 20130209 Intersection gaps caused by tiny facets healed to improve accuracy.
                              Volume is now exact if it's a solid or best approximation otherwise.
                              Accuracy option added: default is 1%, note that making if lower will dramatically slow things down, more that 5% could be inaccurate on some complex forms.
                              The lingvo files have been updated to suit.

                              TIG

                              1 Reply Last reply Reply Quote 0
                              • M Offline
                                matt.gordon320
                                last edited by

                                I did not expect to see a tool like this available for SU. TIG, you continue to astound and amaze us. Thanks!

                                1 Reply Last reply Reply Quote 0
                                • M Offline
                                  markstephens
                                  last edited by

                                  Hi TIG,

                                  Great plugin, but I'm having a bit of a trouble getting Composite C of G to work. It is probably just user error!

                                  I select two previously made CofG groups (different group names, same density). I get no errors, but no Composite C of G either. Ruby console has the following:

                                  Error: #<NoMethodError: undefined method entities' for nil:NilClass> /Library/Application Support/Google SketchUp 8/SketchUp/Plugins/CofGravity.rb:649:in do_composite'
                                  /Library/Application Support/Google SketchUp 8/SketchUp/Plugins/CofGravity.rb:116:in initialize' /Library/Application Support/Google SketchUp 8/SketchUp/Plugins/CofGravity.rb:816:in new'
                                  /Library/Application Support/Google SketchUp 8/SketchUp/Plugins/CofGravity.rb:816
                                  /Library/Application Support/Google SketchUp 8/SketchUp/Plugins/CofGravity.rb:649:in `call'
                                  /Library/Application Support/Google SketchUp 8/SketchUp/Plugins/CofGravity.rb:649

                                  I'm on a MacBook Pro running 10.7 using SketchUp 8 and CofG v 1.6. I'm also in the process of learning Ruby, but am as yet a novice, especially Ruby with SketchUp.

                                  I know you have probably moved on to other things by now, but a hint on any changes would be great!
                                  thanks,
                                  mark

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

                                    Are the CofG groups intact with all of their contents etc as originally made.
                                    Maybe there's some text missing ?
                                    Can you post the SKP ?
                                    Or PM it...

                                    TIG

                                    1 Reply Last reply Reply Quote 0
                                    • jgbJ Offline
                                      jgb
                                      last edited by

                                      Tig

                                      CofG has become a MUST Have for me lately. I am starting to map out the CofG for a few hundred groups and components on 2 major aviation models. Grouping helps but I have a serious need for an improvement to CofG.

                                      Some background......
                                      To compute the CofG for an airplane, I need to locate each of the components CofG in relation to a common point of origin, called the "Datum Zero" line, which is almost always the nose tip, but could be offset fore or aft of that. Multiply the distance from that origin to the CofG for that component gives a moment arm value. Sum all the moments values and divide by the total weight gives the airplanes center of gravity, which has to lie very close to the center of lift.

                                      Then calculating the variables of fuel, payload, etc and the control surfaces ability to vary the center of lift gives me the operating envelope, or an indication of what needs to be moved to put the CofG and CofLift within the operating envelope.

                                      Right now I have to measure the offset of the CofG from the components most forward point, and the distance of that forward point from Datum Zero. Those values, and the components weight go into an Excel spreadsheet. A significant problem is when my components bounding box is rotated away from normal, making the finding of the most forward point difficult.

                                      Grouping helps but I have a serious need for an improvement to CofG.

                                      ❓ ❓ Would it be possible to map the components CofG offset (X-Y-Z) from the SU axis origin point, as an option?

                                      I can then place the models Datum Zero on the SU Axis Origin point, and it would vastly simplify my task. I would only need to enter the offset and weight into my Excel sheet, and not have to measure anything.

                                      Thanks.


                                      jgb

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

                                        @Joel

                                        Have you considered moving the axes of your components ?
                                        Select an instance and right-click context-menu Change Axes...
                                        That way you can ensure that all axes are sensible arranged, making other tasks easier...
                                        I also wrote a tool to move all selected components' axes to the model-origin...
                                        Perhaps using that will do what you want ?


                                        Capture.PNG

                                        TIG

                                        1 Reply Last reply Reply Quote 0
                                        • jgbJ Offline
                                          jgb
                                          last edited by

                                          Hadn't thought of that, but, in my case it won't work. I have many of the same component strung out along the length and breadth of the aircraft. These would be skin panels, frames, passenger seats, washrooms, etc, as well as structural parts and equipment. So moving the components origin to the SU origin is unworkable. It would also make the bounding boxes so large that it would be a visual nightmare trying to select individual components with all the overlapping bounding boxes. It would also require me to change the comps axis position every time I moved the comp.

                                          Also, changing the comps local axes point won't help either, especially when the comp is rotated a bit in final placement. Regardless of rotation, I will still need to measure every components location of its most forward point from Datum Zero and then measure its CofG offset from that point as well.

                                          If your CofGravity.rb could measure the distance from SU origin in X-Y-Z (Green-Blue-Red) to the comps computed CofG then that would eliminate any measuring and would give me a more accurate moment offset.

                                          CATIA does this moment offset (distance from Datum Zero to CofG of part) automatically and generates the moments table as the parts are defined (as solids with material defined). The table is dynamic, so if parts are moved, the CofG of the airplane is updated in real time, but then CATIA is purpose designed for aerospace and costs $35,000++ a seat. A bit too rich for my blood. 😆


                                          jgb

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

                                            Can't you use Xray mode, then a tool like my 'Coords Text Tag from Datum' http://sketchucation.com/forums/viewtopic.php?p=284829#p284829to add the XYZ in the model, set from the Origin as the datum OR you could set any other 3d point as the datum... The tag can be relocated to any point and gives the current XYZ values, you can also tailor how the numbers are shown...

                                            TIG

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

                                            Advertisement