R = 10;

r = 4;

d = 10;

a = 750;

â€‹

x = (R-r)*Math.Cos(0..a)+d*Math.Cos(((R-r)/r)*(0..a));

y = (R-r)*Math.Sin(0..a)-d*Math.Sin(((R-r)/r)*(0..a));

â€‹

p = Point.ByCoordinates(x,y);

s = NurbsCurve.ByPoints(p);

R = 5;

r = 3;

d = 5;

a = 0..n..1;

x = (R-r)*Math.Cos(a)+d*Math.Cos(((R-r)/r)*a);

y = (R-r)*Math.Sin(a)-d*Math.Sin(((R-r)/r)*a);

p1 = Point.ByCoordinates(x,y);

â€‹

p2 = (Point.Origin().Translate(Vector.XAxis(),R-r))

.Rotate(Point.Origin(),Vector.ZAxis(),a);

l1 = Line.ByStartPointEndPoint(p1,p2);

c1 = Circle.ByCenterPointRadius(Point.Origin(),R);

c2 = Circle.ByCenterPointRadius(p2,r);

[p1,c1,List.LastItem(l1),List.LastItem(c2)];