Show messages:
1-5
6-25
26-45
46-65
66-76
From: Frenchy Pilou (PILOU)
Yes !
http://cad.onshape.com/help/#massprops-ps.htm?Highlight=volume
From: Max Smirnov (SMIRNOV)
This script can approximately calculate a volume of selected solid object (I told about it in this thread:
http://moi3d.com/forum/index.php?webtag=MOI&msg=3746.7 ).
It can't calculate volume exactly, because it doesn't use any mathematical method (as Michael said above, it's very difficult task).
This script just creates a grid of lines and cut them with surface of the solid object.
Anyway it works :)
I used this object to test the script.
I use it because we can calculate exact volume of this shape:
Box (20x20x5) - Box (12x12x3) + Half sphere (R=5) - Cylinder(R=3,h=5) =
20*20*5 - 12*12*3 + 4*Pi*5*5*5/6 - Pi*3*3*5 = 1688,4277183876
And now script results:
Grid density: 10, time: 0.1s, result: 1570,999037, accuracy: >92%
Grid density: 50, time: 0.6s, result: 1659,717703, accuracy: >98%
Grid density: 100, time: 1.7s, result: 1686,79025, accuracy: >99.9%
Grid density: 300, time: 14.8s, result: 1688,279379, accuracy: >99.99%
Good enough! :)
Default value of the grid density is 100. You can set other values as command line parameters. Example: _CalcVolume 150
To increase performance I put all code in htm file. Be careful, this script can really hang up MoI. Don't set density values more than 300-350.
From: dinos
I did a volume calculation script some time ago, but i didn't post it as it could use some more polishing.
Even so, it works fine for my needs (3D printing).
It uses a different method from Max's script (BTW, cool script & idea Max!).
This script works by exporting the selected solid to an STL file and then loads it back and calculates the volume from the STL data.
Accuracy is adjustable by editing the Angle value at line 12. I've settled on 3 degrees as a nice compromise between speed and accuracy.
Overall its is really fast unless you go too crazy with the angle.
Its biggest limitation is that you have to manually set the STL export format to Ascii. Reading the binary format without typed arrays would be too slow and complicated i think.
That can be easily fixed if there is a way to set the STL export options to Ascii during export, but nothing that i tried worked.
Perhaps Max or Michael can help!
Dinos
Attachments:
CVolume.zip
From: Marbleman
Thank you Max, just tried it out and it works well, I will try it out on a project on Monday....
From: Frenchy Pilou (PILOU)
Cool new tools! max Moi calculate default is 10 second on my computer result: 1686790,25
(free DesignSpark mechanical gives with Step volume exported from moi) in 0 second! ;)
1688427,718mm³ against theoric 1688427,718 3876
From: Max Smirnov (SMIRNOV)
Dinos
Great work!
I didn't knew about this method.
http://research.microsoft.com/en-us/um/people/chazhang/publications/icip01_ChaZhang.pdf
This algorithm is much faster than all moi calculations in my script.
I have some ideas:
1. Add line: moi.copyTextToClipboard(volume);
2. Add line: file.close(); moi.filesystem.deleteFile( fileName );
3. Obj file smaller than Stl. Script will be faster with export to Obj.
Marbleman
Thank you!
But Dinos's script is much better. :)
Pilou
>>free DesignSpark mechanical gives with Step volume exported from moi) in 0 second!
It's incompartable things. :) Of course the C++ compiled code will be faster than thousands calculations of moi factories, or exporting and reading stl files from harddisk.
But it's better than nothing.
P.S. We need to add data about densities of various materials.
From: Frenchy Pilou (PILOU)
About the Dino script
<< This script works by exporting the selected solid to an STL file and then loads it back and calculates the volume from the STL data.
Where I load it back ? In Moi there is not Import STL ! ???
From: dinos
Thanks Max! Really appreciated. :-)
I was looking for an efficient way calculate volume and hit upon this
http://stackoverflow.com/questions/6518404/how-do-i-calculate-the-volume-of-an-object-stored-in-stl-files
Really nice ideas, BTW!
I think that using obj is a good solution and it can improve things a lot. Also, materials!
I'll be away from my computer until monday night, but in the meantime feel free to improve this script any way you like!
I really like the idea of the mini open source scripts that are created on this forum by 2 or more people. That was the case with the LightOptions script. It was Mike's idea and helped a lot during its development. Then you included it in your UI and it was improved once again.
Cool stuff.
Dinos
From: Michael Gibson
Hi Dinos, re:
> That can be easily fixed if there is a way to set the STL export options to Ascii
> during export, but nothing that i tried worked.
That should be something like:
var OldSTLExportType = moi.settings.stlExportFileType;
moi.settings.stlExportFileType = 'Ascii';
<....>
// Reset original STL export type when finished.
moi.settings.stlExportFileType = OldSTLExportType;
- Michael
From: Max Smirnov (SMIRNOV)
Updated version of Dinos's CVolume.
Now it uses obj file. Performance boost +50~100%
Defaut angle = 3. You can use command line parameter to change it. Example: _CVolume 10 or _CVolume 1
From: Frenchy Pilou (PILOU)
How it works ? Inside Moi ? You import an OBJ file ?
Ok , I have found the method : Now 1 second on my computer! :)
But same time and result when adding a number! (little or big)
1685.156253 When importing an OBJ
With the normal file
1688,220446 in 2 seconds by default _Cvolume
1668, 250237 in 1 Second with _Cvolume 10
1561,334244 in 0 second with _Cvolume 100
From: Max Smirnov (SMIRNOV)
Pilou, forget about obj :)
It's internal script mechanics. The script exports solids to an obj-file, then loads them back as polygonal model, and calculates volume.
P.S. I have great ideas about this script. ;))
From: Frenchy Pilou (PILOU)
:=)
Yet existing is now some speedy : just maybe the precision can be improved a little! :)
From: BurrMan
The script requires running MoI with elevated privileges to work in Windows default installs. If you can look at how you are writing the objects to avoid that would be good.
From: Max Smirnov (SMIRNOV)
Hi BurrMan
new version of the script will use system temp dir instead of moi dir.
From: BurrMan
:)
From: Max Smirnov (SMIRNOV)
CVolume v.0.98
Added: User interface, densities of miscellaneous materials etc.
Changed: temporary directory
In the next version I'll add tool for a model resizing by adjusting mass or volume.
P.S. Click to "Volume" or "Mass" label to copy value to clipboard.
From: ed (EDDYF)
Excellent Max.
I don't know how far you want to take this, but if you had the option to input the cost per unit of the material, the script could display the value of the object. Great for jewelers or folks who have their design 3D printed in metal.
Or pull the material cost in from an XML file, if such a file exists in the folder. Possibilities here for the user to update their material cost XML file off the web, using a script outside MoI of course, to pull in the current price of precious metals.
Taking a step further, associate the material cost XML file with a MoI style. Assign a "silver" Style to a ring, you get the material cost if it's cast in silver (not including waste of course). Assign a "18k gold" Style to a ring, you get the material cost if it's cast in gold.
Just some far out ideas ...
Ed Ferguson
From: Frenchy Pilou (PILOU)
Aaaaaaaaah! What a such list to translate! :)
PS I have put _cvolume 0 : that gives the good result with 2 decimal! 1688, 42 (takes just 26 seconds on my computer ;)
The other values goes very more speedy! :)
_cvolume 2 1688, 34 in 3 seconds
_cvolume 3 1688, 22 in 2 seconds
_cvolume 4 1688, 06 in 1 second
_cvolume 5 1687, 84 in 0 second
_Cvolume Alone is like _cvolume 3 : 1688, 22 in 2 seconds
From: hep
very nice touch :-)
Show messages:
1-5
6-25
26-45
46-65
66-76