Skip to content

Additive Pipe

In one sentence: Sweep a closed 2-D profile sketch along a path curve to create a solid whose cross-section follows that path.


Overview

Workbench: Part Design · Menu: Part Design → Additive Features → Additive Pipe
Toolbar: Part Design Modeling Features · Shortcut: none

Additive Pipe takes two inputs — a profile sketch and a path (spine) — and produces a solid by dragging the profile along the path from one end to the other. The result is fused into the active Body, adding material. Unlike Pad, which only moves in a straight line, Additive Pipe can follow any curve, making it essential for tubular shapes, handrails, tracks, wiring channels, and anything else whose cross-section travels a non-straight route.


Intuition

Think of pasta making: you press dough through a die (the profile) while moving the die along a curved guide (the path). Whatever shape the die has, the pasta takes that shape all the way along the guide's length.

The profile sketch defines the shape of the cross-section. The spine defines the route it travels. The two are independent: a circular profile on a straight spine gives you a cylinder; the same circular profile on a helical spine gives you a coil spring.

One non-obvious detail: the profile is attached at one end of the spine at the start of the operation and moves toward the other end. The profile sketch does not need to be drawn on the spine — FreeCAD positions it correctly as long as the profile's origin lies on or near the spine's start point.


When to use it

  • You need a tube, pipe, channel, or conduit that follows a 2-D or 3-D curve.
  • You are modelling a handrail, cable duct, wiring loom, or any shape that has a consistent cross-section along a non-straight path.
  • You want to model a coil spring (combine a circular profile with a helical spine sketch, or use Additive Helix for the specific spring case).
  • You have a complex path made of multiple joined edges and need a single sweep operation that treats them as one continuous route.
  • You need the cross-section to morph between two different profiles along the path (use Multisection transform mode — see Parameters).

When NOT to use it

  • The cross-section stays constant and the path is a straight line — use Pad instead; it is simpler to set up and less prone to failure.
  • The cross-section revolves around a central axis — use Revolution; it is the right tool for axisymmetric solids.
  • You need the solid to blend smoothly through several free-form profiles in 3-D space — use Additive Loft, which does not require a spine sketch.
  • The path is a helix with a defined pitch and height — use Additive Helix, which generates the helical path for you.
  • You want to remove material — use Subtractive Pipe, which has identical parameters but cuts instead of adds.

Step-by-step walkthrough

Prerequisites: An active Body with at least one existing sketch. You will need two sketches: a profile (cross-section shape) and a spine (the path). Both must be inside the Body before you start.

  1. Create the profile sketch. Draw and fully constrain the cross-section shape on the XY plane or any datum plane. The profile must be a single closed wire (or multiple nested closed wires for a hollow section). Close the Sketcher task panel.

  2. Create the spine sketch. Draw the path curve on a different plane (for a flat path, the XZ plane is common). The spine can be an open or closed wire. A single continuous, connected wire is required — disconnected edges will cause a failure. Close the Sketcher task panel.

  3. Activate Part Design → Additive Features → Additive Pipe. The task panel opens with three collapsible sections: Pipe Parameters, Section Orientation, and Section Transformation.

  4. Set the Profile. In Pipe Parameters, click Object next to the Profile field, then click the profile sketch in the model tree or viewport. The sketch name appears in the text field.

  5. Set the Path. Under Path to Sweep Along, click Object, then click the spine sketch. Alternatively, click Add edge to pick individual edges from any geometry in the Body instead of using a whole sketch.

  6. Set Corner transition if the spine has sharp corners:

    • Transformed (default) — the profile rotates to match the tangent at each corner; may produce self-intersecting geometry at tight bends.
    • Right corner — the pipe makes a mitre-cut join at each corner.
    • Round corner — the pipe is rounded at each corner.
  7. Adjust Orientation mode in Section Orientation if needed (see Parameters). Leave it on Standard for most pipes.

  8. Click OK. FreeCAD sweeps the profile along the path and fuses the result into the Body.

Tip

If the spine is a sketch, you can select the entire sketch as the path (click its entry in the model tree). If the spine is made of edges on an existing solid face, use Add edge to select them individually.


Parameters

The task panel is divided into three sections.

Pipe Parameters

Parameter Type Default Description
Profile Object link — The sketch (or face/wire sub-element) whose outline is swept. Must be a closed profile for an additive solid.
Corner transition Dropdown Transformed How the sweep behaves at kinks in the spine: Transformed (shear), Right corner (mitre), Round corner (fillet). See deep dive below.
Path to Sweep Along Object link + edge list — The spine object (typically a sketch) or a list of individual edges that form the path. Edges must form one connected, non-branching wire.
Add edge / Remove edge Buttons — Toggle selection mode to add or remove individual edges from the edge list when you want a partial path from an existing shape.

Section Orientation

Controls how the profile is rotated as it travels along the path.

Parameter Type Default Description
Orientation mode Dropdown Standard How the profile rotates as it travels the path: Standard / Fixed / Frenet / Auxiliary / Binormal. See deep dive below.
Curvilinear equivalence Checkbox On (Auxiliary mode only) Distribute orientation points by arc length rather than parallel projection.
Auxiliary spine Object link + edge list — (Auxiliary mode only) A secondary path that drives the profile's roll angle.
X / Y / Z Float 0.0 (Binormal mode only) The fixed binormal vector components.

Orientation mode in depth

The Orientation mode dropdown controls how the profile rotates about the spine axis as it travels along the path. The spine tells the profile where to go; the orientation mode tells it which way to face at each point along the journey.

Standard (default)

Intuition: Like threading a needle onto a curved wire and letting it find its own least-twisted resting orientation — the profile tilts to follow the path but never spins more than necessary.

Technically, FreeCAD uses the Darboux frame with minimum-rotation transport (sometimes called "parallel transport"). The total accumulated twist from start to end is minimised.

Use this mode when: - You want the most natural result with no explicit configuration - The spine is a flat 2-D curve (Standard and Frenet give identical results for planar paths) - No deliberate twist or roll is needed in the swept solid

Watch out for: On highly curved 3-D spines, Standard can still accumulate a visible twist. If the finished solid looks rotated at one end, try Frenet or Auxiliary to diagnose whether the path curvature is causing it.

Fixed

Intuition: Like carrying a tray of drinks level through a winding corridor — the profile keeps its original world-space orientation no matter how the path turns and dips.

The profile's X, Y, Z axes in world space are frozen at their initial values and never rotate throughout the sweep. The cross-section always faces the same compass direction.

Use this mode when: - The profile must maintain an absolute world orientation regardless of the path (e.g. a sign bracket that must always face front, or a slide channel that must stay horizontal) - You intentionally want the ends of the sweep to not be perpendicular to the path

Watch out for: On curved paths, a profile that cannot tilt to stay tangent to the path will quickly twist and self-intersect. Fixed is practical only for paths with minimal curvature, or when the profile is small enough that the mismatch does not cause self-intersection.

Frenet

Intuition: Like a roller-coaster car whose "up" arrow always points toward the inside of the current curve — the profile tips inward on bends, following the local curvature of the path.

Technically this uses the classical Frenet–Serret frame: the profile normal follows the principal curvature normal of the path. On a tightly curved section the profile leans steeply; on a nearly-straight section the lean is almost zero.

Use this mode when: - You want the profile normal to track the path curvature rather than minimise overall rotation - A mathematically defined curve requires Frenet-frame behaviour specifically - Standard produces unexpected rotation and you need a different algorithm to compare

Watch out for: On nearly-straight sections (very low curvature), the Frenet normal is mathematically undefined and can abruptly flip 180° — the classical Frenet "flip" problem, which produces a sudden twist in the solid. Avoid Frenet for any spine that includes straight or near-straight segments.

Auxiliary

Intuition: Like tracing both strands of a twisted rope to define its twist — you draw a second guide spine alongside the main path, and FreeCAD reads the angular relationship between them to determine exactly how much the profile should roll at every point.

This mode gives you the most control: any twist behaviour you can express as a second curve can be encoded.

Use this mode when: - You need a deliberately twisted sweep (propeller blade, twisted square column, helical channel with a specific roll profile) - Standard and Frenet both produce unwanted rotation and manual control is needed - The twist must geometrically match another piece of the design

Sub-parameters active in Auxiliary mode:

Sub-parameter Type Default Description
Auxiliary spine Object link + edge list — The guide path that drives roll. Should span the full length of the primary spine.
Curvilinear equivalence Checkbox On On: distribute orientation points by arc length (natural, recommended). Off: parallel projection — can produce bunching on spines of unequal length.

Watch out for: The auxiliary spine must span the same range as the primary spine. Mismatched start/end points prevent the orientation mapping from being computed and produce an error.

Binormal

Intuition: Like a satellite dish on a moving arm — no matter which way the arm points, the dish always faces a fixed direction you specify (north, vertical, toward a wall).

You provide an X/Y/Z vector; the profile's out-of-plane axis (the binormal) is locked parallel to that vector throughout the entire sweep.

Use this mode when: - One face of the profile must consistently point toward a fixed world direction (not just stay upright, but face a specific direction) - Sweeping along a 3-D path where a functional face must always point toward a mating surface or datum plane

Sub-parameters active in Binormal mode:

Sub-parameter Type Default Description
X / Y / Z Float 0.0 Components of the fixed binormal vector. FreeCAD normalises it; all three being zero is invalid.

Watch out for: A zero binormal vector (0, 0, 0) causes a recompute failure. Also, if the path tangent becomes exactly parallel to the binormal vector at any point along the spine, the orientation is geometrically undefined there and the sweep will fail.

Corner transition in depth

The Corner transition dropdown controls what happens when the spine has sharp kinks — points where two edges meet at an angle rather than blending smoothly. The profile must somehow "navigate" each corner.

Transformed (default)

At each kink, the profile is sheared to match the local tangent of the incoming edge. The transition is abrupt — there is no blending radius.

Use this mode when: - The spine has gentle curves where shearing does not cause self-intersection - You want the mathematically simplest result with no added geometry at corners - The spine segments are tangent-continuous (no actual kinks)

Watch out for: At tight bends or very large profiles, the sheared section can self-intersect. FreeCAD will report "Pipe could not be built". Reduce the profile size, increase the bend radius in the spine, or switch to Round corner.

Right corner

The sweep makes a sharp mitre cut at each corner — like picture-frame moulding, where two pieces meet at a 45° mitre rather than bending around.

Use this mode when: - You need a crisp architectural corner with no rounding (square conduit, sheet-metal box sections, rectangular hollow sections) - The profile is rectangular and a mitred join is geometrically appropriate

Watch out for: Produces flat triangular corner faces. At very acute corner angles the mitre face becomes large and the resulting topology is complex, which can cause downstream Boolean or fillet operations to fail.

Round corner

The corner is smoothed with a fillet arc. The pipe curves gradually around the kink rather than making a sharp turn.

Use this mode when: - The profile is round (pipe, rod, wire) and a smooth bend is physically expected - The spine has tight corners where Transformed produces self-intersection - Modelling real-world tubing, handrails, conduit runs, or bent bar stock

Watch out for: The fillet radius is computed automatically by OCCT from the geometry — you cannot specify it directly. The only way to control the radius is to change the corner angle in the spine sketch or add intermediate tangent points to guide the curvature.

Section Transformation

Controls whether the profile changes shape along the path.

Parameter Type Default Description
Transform mode Dropdown Constant Constant: identical profile at every point. Multisection: profile morphs through intermediate section sketches. See deep dive below.
Add Section / Remove Section Buttons — (Multisection only) Pick additional profile sketches.
Section list Ordered list — (Multisection only) Intermediate sections in path order, top = spine start. Reorder by drag-and-drop.

Transform mode in depth

The Transform mode dropdown controls whether the profile shape stays constant or morphs along the path.

Constant (default)

The identical profile cross-section is used at every point along the path. The swept solid has the same shape from start to finish — like extruding pasta through a die of fixed shape.

Use this mode when: - You are sweeping a uniform cross-section (pipe, rod, channel, rail, wiring duct) - The cross-section is not supposed to change at any point along the spine

Watch out for: Nothing — this is the correct mode for the vast majority of sweeps.

Multisection

The profile morphs through a sequence of intermediate section sketches positioned along the spine. The solid is interpolated between the start profile, each intermediate section in path order, and the end of the spine.

Use this mode when: - You need a shape that transitions from one cross-section to another along its length (e.g. round inlet → square outlet on a duct or nozzle) - The transition must pass through specific intermediate cross-sections at defined positions — more controlled than Additive Loft's free-form blending

Sub-parameters active in Multisection mode:

Sub-parameter Type Default Description
Add Section / Remove Section Buttons — Toggle selection mode to add or remove intermediate section sketches from the list.
Section list Ordered list — Sections in path order (top = spine start). Reorder by drag-and-drop.

Watch out for: All intermediate sections must have the same number of closed wires (loops) as the start profile. Only the very last section in the list may be reduced to a single point (which closes the solid to a cone tip or similar). Mismatching wire counts always causes a "Pipe could not be built" failure.


Advanced usage

Multisection sweeps

In Multisection mode the sweep morphs between the start profile and each intermediate section in order. This is the right approach for a shape like a nozzle that transitions from a round inlet to a rectangular outlet:

  1. Draw the start profile (e.g. circle) attached to the spine's start.
  2. Draw intermediate section sketches positioned at desired points along the spine (attach each to a datum plane perpendicular to the spine at that point).
  3. In Section Transformation, switch to Multisection and add the intermediate sketches in path order.

All sections must have the same number of closed loops (wires). The last section can be a single point (which closes the solid to a cone tip or similar).

Spine from existing geometry

The spine does not have to be a dedicated sketch. You can click Add edge and select edges directly from a face of an existing solid in the Body. This is useful for routing a cable channel along the edge of an enclosure.

Open vs. closed spines

If the spine is a closed loop (e.g. a circle), the resulting solid is a torus-like shape — the profile travels all the way around and meets itself. Ensure the profile's origin lies on the spine; otherwise the solid will self-intersect.


Common mistakes and pitfalls

Spine is not connected

Cause: The selected edges or spine sketch contain a gap — the path is two or more disconnected segments.
Fix: Edit the spine sketch to ensure every line or arc shares endpoints with its neighbours, or use the Add edge workflow to select only a contiguous sequence of edges.

Pipe could not be built / Result is not a solid

Cause: The profile is too large for the curvature of the path at some point. If the cross-section overhangs the centre of curvature, OCCT cannot form a valid solid.
Fix: Reduce the profile size, increase the path's bend radius, or switch the Corner transition to Round corner to smooth sharp turns.

Profile sketch is not closed

Cause: The profile sketch has an open wire (a line that does not connect back to the start), which cannot form a solid face.
Fix: Open the profile sketch, close the gap (add a closing line or enable Close shape for curves), and ensure the Sketcher reports zero open edges.

Unexpected profile twist along the path

Cause: The Standard orientation mode can produce a visible twist on certain curved paths, especially when the path has low curvature (nearly straight sections).
Fix: Try Frenet mode, or use Auxiliary mode with a second guiding spine to take explicit control of the roll angle.


Python API

Minimal example

import FreeCAD as App
import Part
import Sketcher

doc = App.newDocument()

# Create the body
body = doc.addObject("PartDesign::Body", "Body")

# Profile sketch: a circle of radius 5 mm on the XY plane
profile = doc.addObject("Sketcher::SketchObject", "Profile")
body.addObject(profile)
profile.addGeometry(Part.Circle(App.Vector(0, 0, 0), App.Vector(0, 0, 1), 5), False)
profile.addConstraint(Sketcher.Constraint("Coincident", 0, 3, -1, 1))
doc.recompute()

# Spine sketch: a line 50 mm along Y, on the XZ plane
spine = doc.addObject("Sketcher::SketchObject", "Spine")
body.addObject(spine)
spine.MapMode = "FlatFace"
spine.AttachmentSupport = (doc.XZ_Plane, [""])
doc.recompute()
spine.addGeometry(Part.LineSegment(App.Vector(0, 0, 0), App.Vector(0, 50, 0)), False)
spine.addConstraint(Sketcher.Constraint("Coincident", 0, 1, -1, 1))
doc.recompute()

# Create the Additive Pipe
pipe = doc.addObject("PartDesign::AdditivePipe", "AdditivePipe")
body.addObject(pipe)
pipe.Profile = profile
pipe.Spine = spine
doc.recompute()

print(f"Volume: {pipe.Shape.Volume:.4f} mm³")
# Expected: π × 5² × 50 ≈ 3926.9908 mm³

Key properties

All properties live in the Sweep property group.

Property Type Default Description
Profile App::PropertyLinkSub — The profile sketch or sub-element. Inherited from ProfileBased.
Spine App::PropertyLinkSub — The path object and optionally specific sub-edges.
SpineTangent App::PropertyBool False When True, tangent-continuous edges adjoining the spine are automatically included in the path.
AuxiliarySpine App::PropertyLinkSub — Secondary spine used when Mode is "Auxiliary".
AuxiliarySpineTangent App::PropertyBool False Include tangent-continuous edges into the auxiliary spine.
AuxiliaryCurvilinear App::PropertyBool True Use curvilinear equivalence when computing orientation from the auxiliary spine.
Mode App::PropertyEnumeration "Standard" Profile orientation mode. Values: "Standard", "Fixed", "Frenet", "Auxiliary", "Binormal".
Binormal App::PropertyVector (0, 0, 0) Fixed binormal vector, used only when Mode is "Binormal".
Transition App::PropertyEnumeration "Transformed" Corner behaviour. Values: "Transformed", "Right corner", "Round corner".
Transformation App::PropertyEnumeration "Constant" Section transform mode. Values: "Constant", "Multisection".
Sections App::PropertyLinkSubList [] Intermediate section profiles for Multisection mode, in path order.

See also

  • Subtractive Pipe — identical parameters, removes material instead
  • Additive Loft — blends through multiple profiles without a spine
  • Additive Helix — sweeps a profile along a helix; best for springs and threads
  • Pad — simpler extrusion for straight paths
  • Revolution — simpler rotation for axisymmetric profiles