Arch Pipe

From FreeCAD Documentation
This page has been updated for that version.

Arch Pipe

Menu location
3D/BIM → Pipe
Default shortcut
Introduced in version
See also


This tool allows to create pipes from scratch, or from selected objects. The selected objects must be Part-based (Draft, Sketch, etc..) and contain one and only one open Wire.


  1. Optionally, select a linear Part shape such as a Draft Line, a Draft Wire or an open Sketch.
  2. Invoke this command using several methods:
    • Pressing the Pipe button on the toolbar.
    • Pressing the P then I keyboard shortcut.
    • Pressing the 3D/BIM → Pipe entry from the top menu.



  • DataLength: Sets the length of this pipe, when it is not based on a wire
  • DataDiameter: The diameter of this pipe, when it is not based on a profile
  • DataBase: The base wire of this pipe, if any
  • DataProfile: The base profile of this pipe. If not given, the pipe is cylindrical.

Typical workflow

  • Start by placing sanitary/hydraulic appliance items (below is an imported step file). You turn these objects into Arch Equipments by selecting them, and pressing the Arch Equipment button.

  • Arch Equipments now have a new SnapPoints property, which is a list of 3D vectors. This allows you to add custom snap points, to which you can snap when the new Draft Special snap button is turned on. Currently that property is only available to Python, though. In the case above I added a new snap point at the exit of the WC appliance. The vectors inside SnapPoints appear on the model as white dots:

  • With the new "Snap Special" Draft Snap, you can now snap to these custom points:

  • Now we can draw our piping using Draft Lines, Draft Wires, or Sketches. The best way, though, is using only Draft Lines:

  • There is now a new Draft Slope tool that allows to change the slope of Draft lines, to, for example, 5% (0.05). So we can quickly give our waste lines a correct slope. Only z coordinates are change by this tool, so we only need to snap them back to each other, the top projection will stay unchanged.

  • We now only have to select all our lines, and press the Arch Pipe button. Arch Pipe works with any Part-based object that contains one and only one open wire.

  • We can now create connections by selecting 2 or 3 coincident tubes, and press the Arch PipeConnector button. If 3 pipes are selected, two of them must be aligned in order to create a tee element:

  • Changing the connectors radius doesn't change the length of the underlying base line, only the resulting tube (by changing their OffsetStart or OffsetEnd property). So you can still draw your line layout with only straight lines, without the need to care about curves and radius.

It is also possible to create Arch Pipes without a base line, in this case use its "Length" property to define the length.


See also: Arch API and FreeCAD Scripting Basics.

The Pipe tool can be used in macros and from the Python console by using the following function:

Pipe = makePipe(baseobj=None, diameter=0, length=0, placement=None, name="Pipe")
  • Creates a Pipe object from the given baseobj and diameter.
    • baseobj is a Draft Line or Draft Wire.
    • If baseobj is omitted, a straight pipe can be created with just the diameter and the length in the Z direction.
  • If a placement is given, it is used.
import Draft, Arch

p1 = FreeCAD.Vector(1000, 0, 0)
p2 = FreeCAD.Vector(2500, 200, 0)
p3 = FreeCAD.Vector(3100, 1000, 0)
p4 = FreeCAD.Vector(3500, 500, 0)
Line = Draft.makeWire([p1, p2, p3, p4])

Pipe = Arch.makePipe(Line, 200)

Pipe2 = Arch.makePipe(diameter=120, length=3000)