    

 ## On this page

  

 

 # Design bodies

 Last update: 09.03.2026 

Just as a DesignCurve is a doc object, which has a Shape of type ITrimmedCurve, there is a similar pattern for bodies:

- A DesignBody has a Shape of type Body.
- A DesignFace has a Shape of type Face.
- A DesignEdge has a Shape of type Edge.

This is only true for these doc object masters. For the corresponding general objects, less information is available:

- IDesignBody has a Shape of type ITrimmedSpace.
- IDesignFace has a Shape of type ITrimmedSurface.
- IDesignEdge has a Shape of type ITrimmedCurve.

This means, you can only access detailed topology information, such as loops and fins, from masters:

```
public static void Example(IDesignFace desFace) {
	// we can get the area from the ITrimmedSurface shape
	double area = desFace.Shape.Area;

	// but to access loops, we need to use the master
	DesignFace desFaceMaster = desFace.Master;
	// if we access geometry, remember we are now in master-space
	Matrix transToMaster = desFace.TransformToMaster;

	DesignBody desBodyMaster = desFaceMaster.Parent;

	// the master Shape is a Face rather than an ITrimmedSurface
	Face face = desFaceMaster.Shape;
	foreach (Loop loop in face.Loops)
		foreach (Fin fin in loop.Fins) {
			Edge edge = fin.Edge;

			// get from shape back to doc object master
			DesignEdge desEdgeMaster = desBodyMaster.GetDesignEdge(edge);

			// from master to occurrence equivalent to desFace
			IDesignEdge desEdge = desEdgeMaster.GetOccurrence(desFace);
		}
}


```

However, the general interfaces do provide some convenient connectivity traversals at the doc object level:

```
public static void Example(IDesignFace desFace) {
	IDesignBody desBody = desFace.Parent;

	// the Edge property returns the edges in the face boundary
	foreach (IDesignEdge desEdge in desFace.Edges) {
		Debug.Assert(desEdge.Parent == desBody);

		// the Faces property returns the faces that meet at this edge
		Debug.Assert(desEdge.Faces.Contains(desFace));
	}
}


```