Plantilla 3D
Author: Rafael Losada Liste

a = 1
paso = 0.0777
C = (-6, 7)
zz2 = OrthogonalLine(C, xAxis)
zz0 = Circle(C, 0.62)
ZZ4 = Intersect(zz0, zz2, 1.0)
ZZ3 = Intersect(zz0, zz2, 2.0)
zElipse2 = Ellipse(ZZ3, ZZ4, 0.65)
Z = Point(zElipse2)
ZZ7, ZZ8 = Intersect(zElipse2, zz2)
zAngInc = Angle(ZZ8, C, Z)
zz1 = OrthogonalLine(C, yAxis)
ZZ2 = Intersect(zz0, zz1, 2.0)
ZZ1 = Intersect(zz0, zz1, 1.0)
zElipse1 = Ellipse(ZZ1, ZZ2, 0.65)
XY = Point(zElipse1)
ZZ5, ZZ6 = Intersect(zElipse1, zz1)
zAngRot = Angle(ZZ6, C, XY)
r = 4 (slider from 0 to 6, step 0.1)
α = 3.735004599267867 rad (slider from 0 to 6.283185307179586, step 0.017453292519943295)
β = 0.40142572795869547 rad (slider from 0 to 6.283185307179586, step 0.017453292519943295)
nada = 0
zz4 = Segment(ZZ5, ZZ6)
zz3 = Segment(ZZ7, ZZ8)
zPunto1 = Intersect(zElipse2, zElipse1, 1.0)
zPunto2 = Intersect(zElipse2, zElipse1, 4.0)
zSeg2 = Segment(zPunto1, zPunto2)
A = (-4, 7)
list1 = Sequence(CurveCartesian[r * (a * cos(u + v) * cos(u - v) * sin(zAngRot) + a * sin(u + v) * cos(u - v) * cos(zAngRot)), r * (-1.0 * a * cos(u + v) * cos(u - v) * cos(zAngRot) * sin(zAngInc) + a * sin(u + v) * cos(u - v) * sin(zAngRot) * sin(zAngInc) + a * sin(u - v) * cos(zAngInc)), u, 0.0, 6.28319], v, 0.0, 6.28319, 3.0 * paso)
list2 = Sequence(CurveCartesian[r * (a * cos(u + v) * cos(u - v) * sin(zAngRot) + a * sin(u + v) * cos(u - v) * cos(zAngRot)), r * (-1.0 * a * cos(u + v) * cos(u - v) * cos(zAngRot) * sin(zAngInc) + a * sin(u + v) * cos(u - v) * sin(zAngRot) * sin(zAngInc) + a * sin(u - v) * cos(zAngInc)), v, 0.0, 6.28319], u, 0.0, 6.28319, paso)
a1 = CurveCartesian(r / 2.0 * (a * (1.0 + cos(t)) * sin(zAngRot) + a * sin(t) * cos(zAngRot)), r / 2.0 * (-1.0 * a * (1.0 + cos(t)) * cos(zAngRot) * sin(zAngInc) + a * sin(t) * sin(zAngRot) * sin(zAngInc) + 2.0 * sin(t / 2.0) * cos(zAngInc)), t, -6.283185307179586, 6.28319)
list3 = Sequence(CurveCartesian[r / 2.0 * ((a + cos(u)) * sin(zAngRot) + sin(u) * cos(zAngRot)), r / 2.0 * (-1.0 * (a + cos(u)) * cos(zAngRot) * sin(zAngInc) + sin(u) * sin(zAngRot) * sin(zAngInc) + v * cos(zAngInc)), u, 0.0, 6.28319], v, -2.0, 2.0, paso)
list4 = Sequence(CurveCartesian[r / 2.0 * ((a + cos(u)) * sin(zAngRot) + sin(u) * cos(zAngRot)), r / 2.0 * (-1.0 * (a + cos(u)) * cos(zAngRot) * sin(zAngInc) + sin(u) * sin(zAngRot) * sin(zAngInc) + v * cos(zAngInc)), v, -2.0, 2.0], u, 0.0, 6.283185307179586, paso)