> For the complete documentation index, see [llms.txt](https://gitbook.testingwaters.in/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gitbook.testingwaters.in/patterns/pattern-2.md).

# Pattern

![](/files/-LhLcjOqSxQ-lOm1D4Pi)

{% file src="/files/-LhLcrm9lr0NM\_M5ewC8" %}

```d
c1 = NurbsCurve.ByPoints(Autodesk.Point.ByCoordinates
([0,0.1,0.5,0.9,1],[0.1,0.125,0.5,0.74,0.75]));
c2 = Arc.ByCenterPointStartPointEndPoint(Autodesk.Point.ByCoordinates(1,0),
Autodesk.Point.ByCoordinates(1,0,-0.75),Autodesk.Point.ByCoordinates(1,0.75));
c3 = Arc.ByCenterPointStartPointEndPoint(Autodesk.Point.ByCoordinates(0,0.75),
Autodesk.Point.ByCoordinates(0,0.1),Autodesk.Point.ByCoordinates(0,0.75,-0.75));
[c2,c3];
```

```d
surface1 = Surface.BySweep(c1, t3);
plane1 = Plane.XZ();
geometry1 = Geometry.Mirror(surface1, plane1);
t4 = [surface1, geometry1];
plane2 = Plane.YZ();
geometry2 = Geometry.Mirror(t4, plane2);
t5 = [t4, geometry2];
t6 = List.Flatten(t5, -1);
polySurface1 = PolySurface.ByJoinedSurfaces(t6);
t1 = (0..#10..2);
t2 = (0..#10..1.5);
geometry3 = Geometry.Translate(polySurface1<1>, t1<2>, t2<3>, 0);
```
