I have an 3D Graphic generated with Mathematica's Graphics3D, and want to use it later in SolidWorks. SolidWorks files are usually *.stp, *.step, *.stl extentions.
google search hasn't given me a solution yet, and I didn't find anything on this page either.
Are there solutions to that? What is the best way to do this? Or do you know any workarounds?
edit: Just for info - my 3D Graphics (from here) is:
Graphics3D[{GraphicsComplex[
Join[{Cos[#], Sin[#], 0} & /@ Range[0, Pi, Pi/(25)], {{0, 0, 1}}],
{
{#, Rotate[Rotate[#, 180 °, {0, 0, 1}], 90 °, {0, 1, 0}]} &[
GeometricTransformation[Polygon[{##, 27} & @@@ Partition[Range[26], 2, 1]],
{IdentityMatrix[3], ScalingTransform[{1, 1, -1}]}]
]
}]}]
edit2: Thanks to Simon Woods' wonderful answere, I was able to export to Solid Works, and print it with my 3D-printer. Here are real-world results:
Thanks alot again :)
Answer
You need to use Normal
to explicitly apply the various transformations, resulting in an ordinary collection of polygons which Export
can translate to STL. Unfortunately, it looks like Normal
has a problem when multiple transformations are supplied to GeometricTransformation
. We need to handle this with a specific rule.
Assuming g
is your Graphics3D
:
gn = Normal[g /. GeometricTransformation[prims_, tf_List] :>
(GeometricTransformation[prims, #] & /@ tf)]
Export["test.stl", gn]
This produces an output file. I do not have SolidWorks to tell if it's any good or not.
Comments
Post a Comment