Sections¶
In one sentence: Loft a smooth NURBS surface through a series of cross-section edges in order.
Overview¶
Workbench: Surface
Menu: Surface → Sections
Shortcut: none
Creates a Surface::Sections object by interpolating a NURBS surface through
an ordered list of cross-section edges or wires. Each profile is a section;
the tool constructs the smoothest surface that passes through all of them in
sequence.
Intuition¶
Imagine a ship hull drawn as a set of frame cross-sections, each one a curved line at a different station along the hull's length. Sections stretches a smooth NURBS skin through all those frames in order, interpolating the curves between them. The result is a surface that passes exactly through every section.
This is similar to Part Loft, but it produces a surface (not a solid) and works with existing geometry edges rather than sketches.
When to use it¶
- You have a series of cross-section curves (edges from existing geometry) and need the surface skin that connects them.
- You are doing surface-based styling (automotive, consumer products) where section curves are the design intent and the surface derives from them.
- You need the first or last edge to blend tangentially into an adjacent surface (G1 continuity at the ends).
When NOT to use it¶
- For a solid loft, use Part Loft or Part Design Additive Loft — Sections produces a surface only.
- For a 2-, 3-, or 4-curve patch, Fill Boundary Curves or Filling are more direct.
Step-by-step¶
- Select the cross-section edges in order from first to last (Ctrl+click). The order matters — the surface interpolates between them in the selection sequence.
- Choose Surface → Sections.
- In the task panel, verify the section list. Use the up/down arrows to reorder if needed.
- For each section edge, use the reverse button (⇄) to flip its direction if the surface appears to twist.
- Optionally set Tangent edges at the first and last sections for G1 continuity with adjacent surfaces.
- Click OK.
Parameters¶
| Parameter | Type | Default | Description |
|---|---|---|---|
| NSections | Reference list | — | Ordered list of cross-section edges/wires (first to last) |
| Tangent Edges | Reference list | — | Edges on the adjacent surface at the first or last section, used to enforce G1 continuity at the ends |
Compared to Part Loft¶
| Feature | Surface Sections | Part Loft |
|---|---|---|
| Input | Edges and wires | Sketches and wires |
| Output | NURBS surface | Solid shell |
| End tangency | Yes (via tangent edges) | Yes (via profile tangency) |
| Closed result | No | Optional |
| Editable after creation | Yes (parametric) | Yes (parametric) |
Common mistakes and pitfalls¶
Surface twists between profiles
Cause: Adjacent section curves run in opposite directions.
Fix: Use the reverse button (⇄) in the task panel to flip profiles
until all run in the same direction.
Sections not in order
Cause: Sections were selected in an incorrect order and the surface
folds back on itself.
Fix: Use the up/down arrows in the task panel to reorder the sections
from one end of the loft to the other.
Tangent edge continuity has no effect
Cause: The adjacent surface at the tangent edge is planar or the
tangent direction is perpendicular to the section.
Fix: G1 continuity only works when the tangent edge is on a smoothly
curved surface and is geometrically compatible with the first or last section.
Python API¶
import FreeCAD as App
doc = App.ActiveDocument
surf = doc.addObject("Surface::Sections", "Sections")
# NSections is a list of (object, edge_name) tuples
surf.NSections = [
(doc.getObject("Sketch"), "Edge1"), # first section
(doc.getObject("Sketch001"), "Edge1"), # second section
(doc.getObject("Sketch002"), "Edge1"), # third section
]
doc.recompute()
See also¶
- Fill Boundary Curves — simpler for 2–4 boundary curves
- Filling — arbitrary closed boundary with continuity control
- Blend Curve — smooth transition curve between two edges
- Surface Workbench — overview of the Surface workbench