Message Boards Message Boards

0
|
10544 Views
|
16 Replies
|
8 Total Likes
View groups...
Share
Share this post:

[?] Plot in 3D a X-zylo ?

Posted 7 years ago
POSTED BY: Donghwan Roh
16 Replies
Posted 7 years ago

Yes, ParametricRegion and ImplicitRegion can be an option. ParametricPlot3D function does not support thickness(range function).

Mathematica is plotting program, and now it support coming into 3D printing.

So I hope Mathematica support CAD like feature by mathematical function or intuitive editing.

Upper thickness 1mm and Lower base thickness 3mm(for example rr[x_] if x<0.5, 1<rr[x]<1.3 (3mm), if x>0.5 1<rr[x]<1.1 (1mm))Anyway thanks for intuitive opinion Hans Milton!

POSTED BY: Donghwan Roh
Posted 7 years ago

Donghwan, I do not know how to control thickness value in plot option PlotTheme->"ThickSurface".

There may be other approaches if one wants to use Mathematica. See for example ImplicitRegion and ParametricRegion.

However if I myself wanted to construct a tightly controlled model to be 3D printed I would use a dedicated 3D CAD program. My own personal preference would be SolidWorks. But there are many other programs that could be used. In an earlier post you mention three of them.

Mathematica is not a 3D CAD program. It is something else.

POSTED BY: Hans Milton
Posted 7 years ago

Thank you Hans Milton! Your reply was really helpful^^ I can now try 3D printing above stl file! Now I have one more question. Can I adjust the thickness of the 3D model by PlotTheme->"ThickSurface"? For example thinner like 1mm thickness or thicker just at the base part? (and thin middle and Cos[6t] part)

POSTED BY: Donghwan Roh
Posted 7 years ago

Increasing the number of PlotPoints gives a smoother model. In the attached model the number of PlotPoints is 200. It has also been scaled by a factor of 50.

r[s_, a_, b_] := 1 + a Exp[-b s^2]
example =
    ParametricPlot3D[
    50 {r[s, .3, 10] Cos[t], r[s, .3, 10] Sin[t], s},
    {t, 0, 2 Pi}, {s, 0, 1 + 1/2 Cos[6 t]},
    PlotPoints -> 200, Mesh -> False, PlotTheme -> "ThickSurface"]

When opened in a CAD program:

enter image description here

Attachments:
POSTED BY: Hans Milton
Posted 7 years ago

To get a solid STL model from a Mathematica surface plot you could try to use the option PlotTheme -> "ThickSurface" in the plot.

enter image description here

Attachments:
POSTED BY: Hans Milton

Hello Donghwan,

However, no 3D program(Sketchup, Rhinocerus, Autodesk fusion 360, etc.) can recognize the mathematical plane into 3D printable object!

Whatever that means? I don't know Sketchup, Rhinocerus and so on and I have not idea how these programs work.

So this model need to have full thickness to be printed into real world

And what do you mean by "full thickness"? And what do you mean by "model"?

Regards, Hans

POSTED BY: Hans Dolhaine
Posted 7 years ago

Great Hans, you made a cycloid-zylo, using nested function definition!

Now I have exported the X-zylo and Cycloid zylo model into STL and tried to 3D Print it. However, no 3D program(Sketchup, Rhinocerus, Autodesk fusion 360, etc.) can recognize the mathematical plane into 3D printable object!

So this model need to have full thickness to be printed into real world^^ For example, the whole cylinder thickness 2 mm, and base thickness maybe 5mm with the height of 10mm(1/5 of whole height 50).

Please finally make a 3D full thickness X-zylo and cycloid-zylo model as well as STL if possible!

Your inspiration and mathematica spirit is really appreciated!

Attachments:
POSTED BY: Donghwan Roh

I don't understand what you mean by thickness of the base.

This perhaps?

r[s_, a_, b_] := 1 + a Exp[-b s^2]

ParametricPlot3D[{r[s, .3, 10] Cos[t], r[s, .3, 10] Sin[t], s}, 
{t, 0, 2 Pi}, {s, 0, 1 + 1/2 Cos[6 t]}, PlotPoints -> 50, 
PlotRange -> All, Mesh -> False]

Here is your cycloid, albeit it looks somewhat peculiar

cycl[a_] := Module[{},
  t = x /. FindRoot[a == x - Sin[x], {x, .1}];
  1 - Cos[t]
  ]

ParametricPlot3D[{r[s, .3, 10] Cos[t], r[s, .3, 10] Sin[t], 
  If[s < 1, s, 2 + cycl[5 t]]}, {t, 0, 2 Pi}, {s, 0, 2}, 
 PlotPoints -> 50, PlotRange -> All, Mesh -> False]

Another one. The cycloid is removend from the iterator and put in the vector- function

ParametricPlot3D[{Cos[t], Sin[t], If[s < 1, s, 2 + cycl[5 t]]}, {t, 0,
   2 Pi}, {s, 0, 2}, PlotPoints -> 50, PlotRange -> All, 
 Mesh -> False]

And some (simpler )thickness

rr[x_] := If[x < .5, 1.3, 1]

ParametricPlot3D[{rr[s] Cos[t], rr[s] Sin[t], 
If[s < 1, s, 2 + cycl[5 t]]}, {t, 0, 2 Pi}, {s, 0, 2}, 
PlotPoints -> 50, PlotRange -> All, Mesh -> False]

And last not least the "self-made one. Add a function of h in xx[ a, h ] to Sin and Cos to get some thickness

xx[a_, h_] := {Cos[a], Sin[a], Min[h, 1 + cycl[5 a]]}

pol[a_, h_, da_, dh_] := 
 Polygon[{xx[a, h], xx[a + da, h], xx[a + da, h + dh], xx[a, h + dh]}]

nda = 60; ndh = 20; ffh = .48;
da = 2 Pi/nda; dh = 5/ndh;
zylo = Table[{Hue[ffh n dh], 
    Table[pol[m da, n dh, da, dh], {m, 0, nda - 1}]}, {n, 0, ndh - 1}];
Graphics3D[zylo
 ]
POSTED BY: Hans Dolhaine
Posted 7 years ago
POSTED BY: Donghwan Roh
Posted 7 years ago

[?] Plot in 3D Cycloid curves on Zylo ??

POSTED BY: Donghwan Roh

Last remark concerning self-made zylos

xx[a_, h_] := {Cos[a], Sin[a], Min[h, 1 + Cos[5 a]/2]}
zz[a_, h_] := {Cos[a], Sin[a], Min[h, 1 + Cos[5 a]/2]}
pol[a_, h_, da_, dh_] := 
 Polygon[{xx[a, h], xx[a + da, h], zz[a + da, h + dh], zz[a, h + dh]}]

nda = 60; ndh = 20; ffh = .48;
da = 2 Pi/nda; dh = 2/ndh;
zylo = Table[{Hue[ffh n dh], 
    Table[pol[m da, n dh, da, dh], {m, 0, nda - 1}]}, {n, 0, ndh - 1}];
Graphics3D[zylo]

and

Animate[
 Graphics3D[Rotate[zylo, u, {0, 0, 1}]],
 {u, 0, 2 Pi}]
POSTED BY: Hans Dolhaine

Or we can do it for our own:

xx[a_] := {Cos[a], Sin[a], 0}
zz[a_] := {Cos[a], Sin[a], 1 + Cos[5 a]/2}
pol[a_, da_] := Polygon[{xx[a], xx[a + da], zz[a + da], zz[a]}]

da = 2 Pi/60;
Graphics3D[
 Table[{Hue[zz[a][[3]]], pol[a, da]}, {a, 0, 2 Pi - da, da}]]

or

pol1[a_, da_] := 
 Polygon[{xx[a], xx[a + da], zz[a + da], zz[a]}, 
  VertexColors -> {Red, Green, Blue}]

da = 2 Pi/60;
Graphics3D[Table[pol1[a, da], {a, 0, 2 Pi - da, da}]]
POSTED BY: Hans Dolhaine

Poor man's solution (so it was done long long ago):

execute

Do[
Print[ParametricPlot3D[{Cos[t], Sin[t], s}, {t, 0, 2 Pi}, {s, 0, 1 + 1/2 Cos[5 t + u]}, PlotPoints -> 50, 
PlotRange -> All,  Mesh -> False, ColorFunction -> Function[{x, y, z}, Hue[.75 z]]]],
{u, 0, 2 Pi, .3}]

Double click on the second bracket from the right. All plots below the 1st one should vanish, and the bracket should be highlighted (in blue). Then press ctrl-shift -y

POSTED BY: Hans Dolhaine

Both of these are nice als well

ParametricPlot3D[{Cos[t], Sin[t], s}, {t, 0, 2 Pi}, {s, 0,1 + 1/2 Cos[5 t]}, PlotPoints -> 50, PlotRange -> All, 
Mesh -> False, ColorFunction -> Function[{x, y, z}, Hue[.75 z]]]

and

Animate[
ParametricPlot3D[{Cos[t], Sin[t], s}, {t, 0, 2 Pi}, {s, 0, 1 + 1/2 Cos[5 t + u]}, PlotPoints -> 50, 
PlotRange -> All, Mesh -> False], {u, 0, 2 Pi, 0.1}]

But when I try to rotate the colored object my system crashes. What is going wrong?

Animate[
 ParametricPlot3D[{Cos[t], Sin[t], s}, {t, 0, 2 Pi}, {s, 0,  + 1/2 Cos[5 t + u]}, 
PlotPoints -> 50, PlotRange -> All, 
  Mesh -> False, ColorFunction -> Function[{x, y, z}, Hue[.75 z]]],
 {u, 0, 2 Pi, 0.1}]
POSTED BY: Hans Dolhaine

Try

ParametricPlot3D[{ Cos[t], Sin[t], s}, {t, 0, 2 Pi}, {s, 0, 1 + 1/2 Cos[5 t]}, 
PlotPoints -> 50, PlotRange -> All, Mesh -> False]
POSTED BY: Hans Dolhaine
Posted 7 years ago

ParametricPlot3D[{Cos[t],Sin[t],Sin[5t],{t,0,2Pi}] Primitive X-Zylo shape of top only

Then How can I make a cylinder below to make a full 3D printable X-zylo? Please give some Ideas!

POSTED BY: Donghwan Roh
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract