Draft Hatch

From FreeCAD Documentation
This page contains changes which are not marked for translation.
Other languages:

Draft Hatch

Menu location
Drafting → Hatch
Draft, Arch
Default shortcut
Introduced in version
See also
Draft Pattern


The Draft Hatch command creates hatches on the planar faces of a selected object.


  1. Select an object with faces. Only the planar faces of the object will be hatched.
  2. There are several ways to invoke the command:
    • Press the Hatch button.
    • Select the Drafting → Hatch option from the menu.
    • Use the keyboard shortcut: H then A.
  3. The Hatch task panel opens. See Options for more information.
  4. Press the OK button to finish the command.


  • Press the ... button to select a PAT file. See Notes.
  • Select a Pattern from the file. It is currently advisable to avoid patterns with dashed lines.
  • Specify a Scale for the pattern.
  • Specify a Rotation for the pattern.
  • Press Esc or the Cancel button to abort the command.

Pattern alignment

When the hatch pattern for a face is calculated it is temporarily translated to the global XY plane by default. For a face with straight edged the first straight edge determines how this happens. The first point of that edge is put on the origin, and the edge itself is aligned with the X-axis. If you create Draft Wires with that in mind you can control how the hatch pattern is aligned with the outline of the face.

If all faces of the selected object are on the global XY plane you can switch off this default behavior by setting the DataTranslate property of the Draft Hatch to false. The hatch pattern is then aligned with the origin and the X axis of the global coordinate system. For faces on the XY plane with straight edges the DataTranslate property can be used to switch between absolute (on the left in the image) and relative (on the right in the image) patterns.

Two Draft Wires with hatches.
The wires were created in a CCW direction starting from the bottom left point.
For the Draft Hatch on the left the Translate property is set to false.
For the Draft Hatch on the right it is set to true.


  • For now the advice is to download a PAT file. Many can be found online. You can for example do a web search for acad.pat or acadiso.pat.
  • A small PAT file is installed with FreeCAD: <program_folder>/data/Mod/TechDraw/PAT/FCPAT.pat, where <program_folder> is the FreeCAD program folder:
    • On Linux it is usually /usr/share/freecad.
    • On Windows it is usually C:\Program Files\FreeCAD.
    • On macOS it is usually /Applications/FreeCAD.


See also: Preferences Editor and Draft Preferences.

The following preferences are involved:

  • PAT file: Tools → Edit parameters... → BaseApp → Preferences → Mod → TechDraw → PAT → FilePattern.
  • Pattern: Tools → Edit parameters... → BaseApp → Preferences → Mod → TechDraw → PAT → NamePattern.
  • Scale: Tools → Edit parameters... → BaseApp → Preferences → Mod → Draft → HatchPatternScale.
  • Rotation: Tools → Edit parameters... → BaseApp → Preferences → Mod → Draft → HatchPatternRotation.


See also: Property editor.

A Draft Hatch object is derived from a Part Feature object and inherits all its properties. It also has the following additional properties:



  • DataBase (Link): specifies the object whose faces are hatched.
  • DataFile (File): specifies the PAT file.
  • DataPattern (String): specifies the pattern name.
  • DataRotation (Angle): specifies the rotation of the pattern.
  • DataScale (Float): specifies the scale of the pattern.
  • DataTranslate (Bool): specifies if the faces are temporarily translated to the global XY plane during the hatching process. Setting it to false may give wrong results for non-XY faces.


See also: Autogenerated API documentation and FreeCAD Scripting Basics.

To create a Draft Hatch use the make_hatch method of the Draft module.

hatch = make_hatch(baseobject, filename, pattern, scale, rotation)


import FreeCAD as App
import Draft

doc = App.newDocument()

rectangle = Draft.make_rectangle(4000, 1000)
rectangle.MakeFace = True
filename = App.getHomePath() + "data/Mod/TechDraw/PAT/FCPAT.pat"
pattern = "Horizontal5"
hatch = Draft.make_hatch(rectangle, filename, pattern, scale=50, rotation=45)