Arch Floor

From FreeCAD Documentation

Arch Floor

Menu location
Arch → Level
Default shortcut
Introduced in version
See also
Arch Building, Arch BuildingPart, Arch Site


The Arch Floor is a special type of FreeCAD group object that has a couple of additional properties particularly suited for building floors. Particularly, they have a height property, that its children objects (walls and structures) can use to set their own height automatically. They are mostly used to organize your model.

As of version 0.18 and above the Arch Floor is derived entirely from the Arch BuildingPart object, which is a general container to organize a building model not limited to floors or storeys. Older Floor objects can be converted to the new type by right clicking on them and choosing Convert to BuildingPart.


  1. Optionally, select one or more objects to be included in your new floor.
  2. Invoke the Arch Floor command several ways:
    • Pressing the Arch Floor button on the toolbar.
    • Using the L then V keyboard keys.
    • Using the Arch → Floor entry from the top menu.


  • After creating a floor, you can add more objects to it by drag and dropping them in the Tree View or by using the Arch Add tool.
  • You can remove objects from a floor by drag and dropping them out of it the Tree View or by using the Arch Remove tool.


An Arch Floor object shares all properties from an Arch BuildingPart, with the DataIfc Type set to "Building Storey".


See also: Arch API and FreeCAD Scripting Basics.

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

Floor = makeFloor(objectslist=None, baseobj=None, name="Floor")
  • Creates a Floor object from objectslist, which is a list of objects.


import FreeCAD, Draft, Arch

p1 = FreeCAD.Vector(0, 0, 0)
p2 = FreeCAD.Vector(2000, 0, 0)
baseline = Draft.makeLine(p1, p2)
baseline2 = Draft.makeLine(p1, -1*p2)

Wall1 = Arch.makeWall(baseline, length=None, width=150, height=2000)
Wall2 = Arch.makeWall(baseline2, length=None, width=150, height=1800)

Floor = Arch.makeFloor([Wall1, Wall2])

Building = Arch.makeBuilding([Floor])
Site = Arch.makeSite(Building)