# 4.4.2 Workplanes¶

Workplanes allow 2D construction on planes in 3D space.

:

from netgen.occ import *
from netgen.webgui import Draw as DrawGeo

:

wp = WorkPlane()
wp.Rectangle(5,2)
face = wp.Face()
DrawGeo(face);


A workplane is defined by a local coordinate system given by an ‘Axes’ object. This is specified by its origin, the normal vector to the plane, and the horizontal direction (i.e. the local x direction).

:

f1 = WorkPlane(Axes((0,0,0), n=Z, h=X)).Rectangle(2,1).Face()
f2 = WorkPlane(Axes((0,1,0), n=-Y, h=X)).Rectangle(2,1).Face()
f3 = WorkPlane(Axes((0,0,0), n=X, h=Y)).Rectangle(1,1).Face()
DrawGeo (f1+f2+f3);


The workplane stores the current position and direction. With Line we draw a straight line of given length in the current direction, with Arc we draw a tangential arc of given radius and angle.

:

wp = WorkPlane()
for i in range(6):
wp.Line(1).Rotate(60)
wp.MoveTo(3,0)
for i in range(6):
wp.Line(0.6).Arc(0.4, 60)
face = wp.Face()
DrawGeo(face);


We can draw several wires. Holes a defined by reveriting the orientation of an wire:

:

wp=WorkPlane().RectangleC(2,1) \
.Circle(0.5,0,0.2).Reverse() \
.Circle(-0.5,0,0.2).Reverse()
DrawGeo(Compound(wp.Wires()))
DrawGeo(wp.Face());


Faces can be extruded

:

face = WorkPlane().RectangleC(2,1).RectangleC(1.8,0.8).Reverse().Face()
frame = face.Extrude(1)
DrawGeo(frame);


and also revolved:

:

face = WorkPlane().MoveTo(10,0).Line(18).Arc(2,90).Line(6).Arc(2,90) \
.Line(18).Rotate(90).Line(2).Rotate(90).Line(10) \
.Arc(3,-180).Line(10).Close().Face()
p = face.Revolve(Axis((0,0,0),Y),180)
DrawGeo(p);

[ ]: