Our system has 3 geometric primitives: curves, surfaces, and volumes. These primitives are defined using a solid modeling structure, where surfaces are bound by a closed set of curves, and volumes bound by a closed set of surfaces. The system uses a graph structure to maintain connections between primitives. When closed loops are detected in the curve graph a surface is constructed. A user can also form a closed loop by sketching a smooth stroke connecting 3D curves in the scene. The user can also construct a closed loop from