|
|
| Menu location |
|---|
| 3D/BIM → Covering |
| Workbenches |
| BIM |
| Default shortcut |
| C V |
| Introduced in version |
| 1.2 |
| See also |
| None |
The BIM Covering tool creates a parametric object representing a surface finish applied to a planar face. Typical use cases include floor tiling, wall cladding, ceiling finishes, roofing, skirting boards, and any other repeating surface material.
Depending on the selected Finish Mode, the object produces either individual 3D tile geometry with real joint gaps, a flat parametric representation, or a technical hatch pattern. All modes update a set of Quantity Take-Off properties on every recompute, making the object useful for material schedules and cost estimation regardless of the level of geometric detail chosen.
The Covering object is semantically equivalent to the IFC IfcCovering class. Its DataPredefinedType property maps directly to the IFC subtypes (FLOORING, CLADDING, ROOFING, MOLDING, SKIRTINGBOARD, CEILING, WRAPPING), making it suitable for BIM workflows that require IFC export.
Double-click an existing Covering object in the model tree to reopen the task panel in edit mode. All parameters can be changed. To reassign the base face, activate the Pick button and select a new face.
The undo behaviour differs between creation modes:
The Finish Mode controls how the covering geometry is generated and displayed. It can be changed at any time without losing other settings.
All modes except Hatch Pattern support texture mapping via the Visuals task panel section.
Individual 3D tiles are generated with real joint gaps between them via boolean subtraction. Each tile is a separate solid extruded to the specified thickness. This mode is the most geometrically accurate and produces the most informative Quantity Take-Off data (including individual tile counts and waste). It is also the less performant. It is best suited for close-up renders, detailed drawings, and material schedules.
Performance note: When the tile count exceeds 10,000 or the joint width is less than 0.1 mm, the engine automatically switches to analytical mode: the geometry falls back to a single monolithic solid, while tile counts and areas are still computed mathematically. A warning is printed to the Report View when this occurs. At counts above 100,000, layout lines are also hidden.
A grid of tile layout lines is drawn on a single flat slab without extruding individual tiles. The slab thickness is controlled by the Tile Thickness parameter. This mode is lighter to display and recompute than Solid Tiles, making it suitable for large-scale views, preliminary layouts, or performance-sensitive models.
A single continuous surface is produced with no tile subdivisions. The tile dimensions define the texture repeat period only. This mode is intended for seamless or near-seamless materials such as plaster, paint, polished concrete, carpet, or linoleum, where individual unit boundaries are absent or irrelevant.
A 2D CAD-style hatch pattern is applied to a single flat slab using a standard .PAT pattern file. This mode is intended for technical drawings and plans. A PAT file and pattern name must be specified; FreeCAD's bundled FCPAT.pat is offered as the default. Texture mapping is not available in this mode.

The task panel is divided into three collapsible sections that logically group all controls.
| Control | Description |
|---|---|
| Base | The face or object the covering is applied to. Click Pick to change it interactively. |
| Mode | Selects the geometry generation strategy (see Finish Modes above). |
| Thickness | Extrusion depth of each tile (or slab thickness in non-Solid modes). |
| Length | Tile body length along the U axis. |
| Width | Tile body width along the V axis. |
| Joint Width | Width of the gap between tiles. |
| Stagger | Running bond offset: None (stacked), 1/2, 1/3, 1/4, or Custom. The Custom option enables a free offset input. |
| When checked, pressing OK creates the covering and immediately resets the panel for a new one, without closing the task panel. |
| Control | Description |
|---|---|
| Rotation | Rotates the entire tile grid around the face normal. |
| Alignment | Preset or Custom grid anchor (see Alignment section below). |
| U Offset | Manual offset of the grid origin along the face U axis. Active only in Custom alignment mode. FreeCAD expressions are supported. |
| V Offset | Same as above, for V axis. |
| Border Setback | Shrinks the tiling area inward from the face boundary by the given distance. Useful to keep tiles away from skirting boards or other perimeter elements. |
| Control | Description |
|---|---|
| Texture Image | An image file mapped continuously onto the covering surface. The file is embedded in the document. |
| Texture Scale | Multiplier applied to the texture repeat in U and V independently. Values above 1.0 stretch the texture; values below 1.0 compress it. |
The Alignment setting controls where the tile grid is anchored relative to the base face boundary.
Five presets are available: Center, Top Left, Top Right, Bottom Left, Bottom Right.
For corner presets, the named corner of the lead tile is aligned to the named corner of the face. For instance, Top Right places the top-right corner of the lead tile flush with the top-right corner of the face. The lead tile is a conceptual anchor, not a physical tile: it's the one used to define the alignment. For Center, the center of the lead tile is placed at the center of the face.
Corner names follow the face orientation: on a rotated surface, Top Right refers to the top-right corner of the face itself, not of the viewport or the world. Grout joints at the aligned corner extend outward beyond the face boundary. For the Center preset, the center of a single tile is placed at the face center.
Selecting Custom activates the U Offset and V Offset input fields, which shift the grid origin by an arbitrary distance along the face coordinate axes. The offset is measured from the face centre. FreeCAD parametric expressions are accepted in both fields, allowing the offset to be driven by a VarSet, spreadsheet cell or a model dimension.
The Interactive button (available in Custom mode) enters an interactive grid placement mode. While active, a tile preview tracks the mouse cursor in the 3D View, anchored at its bottom-left corner.
Setting the origin: click any point in the 3D View — typically a vertex of the base face — to set the grid origin at that point. The click ends the interactive session: the U offsed, V offset and rotation fields are updated automatically and the alignment is switched to Custom. To exit without placing, press Esc.
Rotating the grid: optionally, before clicking to confirm the origin, press R to rotate the tile wireframe clockwise by one step, or Shift+R to rotate counter-clockwise. The Rotation field updates live with each keypress. The step size defaults to 15° and can be changed by setting ViewPickRotationStep in the View tab of the object's properties panel.
If a rotation has been entered manually in the Rotation field before activating Interactive, the wireframe will start at that angle rather than zero. It is not possible to manually enter the rotation in the input field during interactive mode.
The Match Working Plane button sets the grid origin to the projection of the current FreeCAD working plane origin onto the base face, expressed as a U/V offset. This allows the tile grid to be aligned to a known reference point in the model.
Texture images are mapped onto the covering surface using a continuous linear projection with a period equal to TileLength + JointWidth in U and TileWidth + JointWidth in V. The texture repeats seamlessly across the entire surface with no gaps.
The following properties are computed automatically on every recompute and can be read from the object's Data panel or referenced in a FreeCAD spreadsheet:
| Property | Description |
|---|---|
| DataCountFullTiles | Number of tiles that fit entirely within the face boundary. |
| DataCountPartialTiles | Number of tiles that are cut by the boundary. |
| DataHoleAreas | The individual area of each hole in the base face, in mm², sorted by size (largest first). |
| DataNetArea | Surface area of the base face (the area to be covered). |
| DataGrossArea | Total area of material consumed, including partial tiles ordered as full units. |
| DataOuterArea | The area enclosed by the outer boundary of the base face, ignoring any holes. |
| DataWasteArea | GrossArea − NetArea: the area of cut-off material that is discarded. |
| DataTotalJointLength | Sum of all joint centre-line lengths. |
| DataPerimeterLength | Perimeter of the base face. |
When the tile count is within normal limits (up to 10,000 tiles) and the joint width is at least 0.1 mm, quantities are derived from the actual computed geometry (physical mode): tile counts are obtained by counting the resulting solids, and areas are measured from their faces. This is the most accurate method.
When the tile count exceeds 10,000, or the joint is too narrow for stable boolean operations (< 0.1 mm), the engine switches to analytical mode: the geometry falls back to a single monolithic solid, and counts and areas are computed mathematically from the tile dimensions and face area. The QTO values remain valid and usable in schedules; only the 3D representation is simplified.
At counts above 100,000 (extreme count mode), layout lines are additionally hidden to prevent display freezes.
A status message is printed to the Report View whenever the engine falls back from physical to analytical mode.
To reference a Covering's quantities in a FreeCAD spreadsheet, use the standard expression syntax. For example, to read the net area of a covering named Covering:
=Covering.NetArea
An Arch Covering object shares the common properties and behaviors of all Arch Components.
Covering
Tiles
Boundaries
Quantities
Integer): Number of uncut tiles.Integer): Number of cut tiles.FloatList): Sorted list of individual hole areas, largest first, in mm².Area): Surface area of the base face.Area): Total material area consumed.Area): Total covering area including hole areas.Area): Cut-off material area (Gross − Net).Length): Total joint centre-line length.Length): Base face perimeter length.Visual
Pattern
IFC
IFC Attributes
Standard FreeCAD ViewProvider properties (Visibility, ShapeColor, Transparency, etc.) are inherited from the Arch Component base class.
Interactive
Covering objects can be created from Python using Arch.makeCovering().
import Arch
# Create a covering on a specific face of an object
box = FreeCAD.ActiveDocument.addObject("Part::Box", "Box")
FreeCAD.ActiveDocument.recompute()
covering = Arch.makeCovering((box, ["Face6"]))
covering.TileLength = 300.0 # mm
covering.TileWidth = 300.0
covering.TileThickness = 10.0
covering.JointWidth = 5.0
covering.TileAlignment = "Center"
covering.FinishMode = "Solid Tiles"
FreeCAD.ActiveDocument.recompute()
The makeCovering function accepts:
Arch.makeCovering(obj) — applies to the most visible face.(object, [face_name]) tuple: Arch.makeCovering((obj, ["Face6"])) — applies to a specific face.None: creates an unbound covering to be configured later.