Arch Workbench: Difference between revisions

From FreeCAD Documentation
m (moved Parametric building ideas to Arch Module: Promoted to real project...)
(V0.22 -> V1.0)
 
(206 intermediate revisions by 26 users not shown)
Line 1: Line 1:
<languages/>
This page is an attempt to collect ideas about parametric design in the field of architecture. Since it is a bit different than the mech engineering field, I want to define concepts a bit better before thinking about how to start implementing it... Feel free to add your ideas!
<translate>


<!--T:33-->
== similar software ==
{{Docnav
|[[Std_Base|Std Base]]
|[[Assembly_Workbench|Assembly Workbench]]
|IconL=Freecad.svg
|IconR=Workbench_Assembly.svg
}}


<!--T:38-->
* [http://en.wikipedia.org/wiki/Revit Revit]
[[Image:Workbench_Arch.svg|thumb|128px|Arch workbench icon]]


</translate>
* [http://en.wikipedia.org/wiki/Archicad Archicad]
{{TOCright}}
<translate>


== Introduction == <!--T:1-->
* [http://en.wikipedia.org/wiki/Generative_Components Generative Components]


<!--T:36-->
== file formats ==
The [[File:Workbench_Arch.svg|24px]] [[Arch_Workbench|Arch Workbench]] provides a modern [http://en.wikipedia.org/wiki/Building_Information_Modeling '''B'''uilding '''I'''nformation '''M'''odelling] (BIM) workflow to FreeCAD, with support for features like fully parametric architectural entities such as walls, beams, roofs, windows, stairs, pipes, and furniture. It supports [[Arch_IFC|'''I'''ndustry '''F'''oundation '''C'''lasses]] (IFC) files, and production of 2D floor plans in combination with the [[File:Workbench_TechDraw.svg|24px]] [[TechDraw_Workbench|TechDraw Workbench]].


<!--T:32-->
* [http://en.wikipedia.org/wiki/ISO_10303 STEP] - already fully working in FreeCAD
The Arch Workbench imports all tools from the [[File:Workbench_Draft.svg|24px]] [[Draft_Workbench|Draft Workbench]], as it uses its 2D objects to build 3D parametric architectural objects. Nevertheless, Arch can also use solid shapes created with other workbenches like [[File:Workbench_Part.svg|24px]] [[Part_Workbench|Part]] and [[File:Workbench_PartDesign.svg|24px]] [[PartDesign_Workbench|PartDesign]].


<!--T:13-->
* [http://en.wikipedia.org/wiki/Industry_Foundation_Classes IFC]
The BIM functionality of FreeCAD is now progressively split into this Arch Workbench, which holds basic architectural tools, and the [[File:Workbench_BIM.svg|24px]] [[BIM_Workbench|BIM Workbench]], which is available from the [[File:Std_AddonMgr.svg|24px]] [[Std_AddonMgr|Addon Manager]]. This BIM Workbench adds a new interface layer on top of the Arch tools, with the aim of making the BIM workflow more intuitive and user-friendly. See [https://yorik.uncreated.net/blog/2020-010-freecad-bim-guide FreeCAD BIM migration guide].
** http://forge.osor.eu/plugins/wiki/index.php?id=175&type=g an IFC sdk
** http://www.bimserver.org/
** http://konstruct.nl/parsing-ifc-stepexpress-files-in-python-and-s


<!--T:40-->
== general concepts ==
The developers of Draft, Arch, and BIM also collaborate with the greater [https://osarch.org OSArch community], with the ultimate goal of improving building design by using entirely free software.


</translate>
* FreeCAD is perfect for the task. Designing with parametric objects will greatly reduce the only real problem I see in FreeCAD, which is dealing with thousands of objects. Everything needed is there already, like custom object types, custom properties, etc. The main difficulty, designing a general model for dealing with interaction between objects, is now potentially over, since FreeCAD introduced a dependency graph especially for that purpose.
[[Image:Screenshot arch window.jpg|600px]]
<translate>


== Tools == <!--T:8-->
* [http://en.wikipedia.org/wiki/Building_Information_Modeling BIM] (building information modeling) is a concept invented by a couple of building parametric design software vendors, principally autodesk. It means that you don't project a building by drawing anymore, but by inserting information (parameters). The software would then produce a drawing automatically. This is <strike>totally bullshit</strike> highly questionable in my opinion and only a propaganda concept. Even in most advanced BIM software around (Revit, Archicad and Microstation GC), you can't abstract the act of drawing unless you want to kill any creativity. The goal here is not to be the most automatic, but to keep flexible.


<!--T:3-->
* Mech engineering parametric design is usually based on changes history and constraint solving. Those two concept have much less importance in building design, since you rarely want to crawl back in the steps you did (they are usually very simple), and keeping constraints like horizontality, angle, or distance, even if they are useful, is not as important as in mech design.
These are tools for creating architectural objects.


<!--T:41-->
* Arch parametric design is based on archetypes: wall, door/window, roof, slab, beam, are the basic ones. Outside them, what you'll mostly have are derivatives of those
* [[Image:Arch_Wall.svg|32px]] [[Arch_Wall|Wall]]: Creates a wall from scratch or using a selected object as a base.


<!--T:42-->
* It makes heavy use of assembly: for example several windows are grouped together to form a curtain wall
* [[Image:Arch_Structure.svg|32px]] [[Arch_Structure|Structure]]: Creates a structural element from scratch or using a selected object as a base.


<!--T:43-->
* Relationship is the key. Elements are rarely very complex or require much modeling work, but they must often be transformed by the juxtaposition or inclusion of other elements. For example a wall is nothing else than a simple extrusion, but it must connect to other walls, or take a hole when a window is inserted into it. How to build that relationship model and how/where to store it is the big problem.
* [[Image:Arch_CompRebarStraight.png|48px]] [[Arch_CompRebarStraight|Rebar tools]]: These tools, except the last, are only available if the [[Reinforcement_Workbench|Reinforcement Workbench]] has been installed.


<!--T:44-->
* A problem of about all parametric building modeling software is that they rely heavily on those archetype objects. Creating new, not-in-the-library parts, is extremely hard (Archicad) or much easier (Revit) but always a bit of a problem, and there is always a big communication problem between "parametric" parts and "non-parametric" parts. Basically you only gain the full power of the software if you use parts that are made for the job. For example transforming a simple solid into a wall is extremely problematic.
:* [[Image:Reinforcement_StraightRebar.svg|32px]] [[Reinforcement_StraightRebar|Straight Rebar]]: Creates a straight reinforcement bar in a selected structural element.


<!--T:45-->
* An autodesk paper about Revit: http://images.autodesk.com/adsk/files/bim_parametric_building_modeling_jan07_1_.pdf this article is mostly a propaganda for Revit, and several concepts are IMHO unimportant, like "generated" 2d drawings vs the ability to modify your model in 2d, but it is interesting anyway.
:* [[Image:Reinforcement_UShapeRebar.svg|32px]] [[Reinforcement_UShapeRebar|U-Shape Rebar]]: Creates a U-shape reinforcement bar in a selected structural element.


<!--T:46-->
* Speed of object calculation is not a very big issue IMHO. Modifying an object shouldn't affect many other objects, and it is usually made in a phase of adjustments, so it's not so important to have lightning-speed updates. One important thing, though, is to always save the final shape of objects, so opening saved models should not require calculations. Before saving, everything should always be recomputed.
:* [[Image:Reinforcement_LShapeRebar.svg|32px]] [[Reinforcement_LShapeRebar|L-Shape Rebar]]: Creates an L-shape reinforcement bar in a selected structural element.


<!--T:47-->
* A state-of-the-art section tool is very important.
:* [[Image:Reinforcement_StirrupRebar.svg|32px]] [[Reinforcement_StirrupRebar|Stirrup]]: Creates a stirrup reinforcement bar in a selected structural element.


<!--T:48-->
* There is the problem of annotation. Where to draw dimensions? on the model? Directly on the svg sheet? Not very practical... This point must be investigated further.
:* [[Image:Reinforcement_BentShapeRebar.svg|32px]] [[Reinforcement_BentShapeRebar|Bent-Shape Rebar]]: Creates a bent-shape reinforcement bar in a selected structural element.


<!--T:49-->
* A "parametric building" should be understood as a mix of relationship-capable objects (archetype-based) and other, non-archetype based. Transforming one object from one category to another should be feasible, and all should behave the same way under sectionning (and dimensioning).
:* [[Image:Reinforcement_HelicalRebar.svg|32px]] [[Reinforcement_HelicalRebar|Helical Rebar]]: Creates a helical reinforcement bar in a selected structural element.


<!--T:50-->
* A system for creating new components and assemblies, graphically if possible
:* [[Image:Reinforcement_ColumnRebars.svg|32px]] [[Reinforcement_ColumnRebars|Column Reinforcement]]: Creates reinforcement bars in a selected column.


<!--T:51-->
* An edit mode, so one can modify the original shape that generated the part.
:* [[Image:Reinforcement_BeamRebars.svg|32px]] [[Reinforcement_BeamRebars|Beam Reinforcement]]: Creates reinforcement bars in a selected beam.


<!--T:52-->
== about archetypes ==
:* [[Image:Reinforcement_SlabRebars.svg|32px]] [[Reinforcement_SlabRebars|Slab Reinforcement]]: Creates reinforcement bars in a selected slab.


<!--T:53-->
* All archetypes should always behave like object-oriented programming objects: You can make a new class based on another class.
:* [[Image:Reinforcement_FootingRebars.svg|32px]] [[Reinforcement_FootingRebars|Footing Reinforcement]]: Creates reinforcement bars in a selected footing.


<!--T:54-->
* All archetypes should be able to interact with common object. For this, probably common objects would need custom properties.
:* [[Image:Arch_Rebar.svg|32px]] [[Arch_Rebar|Custom Rebar]]: Creates a custom reinforcement bar in a selected structural element using a sketch.


<!--T:55-->
* Walls should be defined by a simple wire (that would be extruded horizontally, then vertically), a planar shape (that would simply be added a thickness) or a solid (that would be done nothing). The result would always be a solid. Its parameters would therefore vary, depending of your data at the time of creation.
* [[Image:Arch_CurtainWall.svg|32px]] [[Arch_CurtainWall|Curtain Wall]]: Creates a curtain wall from scratch or using a selected object as a base.


<!--T:56-->
* Walls should connect to crossing/touching walls
* [[Image:Arch_BuildingPart.svg|32px]] [[Arch_BuildingPart|Building Part]]: Creates a building part including selected objects.


<!--T:57-->
* Walls could be made of different layers (materials). Same materials would connect together.
* [[Image:Arch_Project.svg|32px]] [[Arch_Project|Project]]: Creates a project including selected objects.


<!--T:58-->
* Walls don't really need a drawing tool. You make them easily by converting something else. But in that case, the draft module could gain a "double-line" tool.
* [[Image:Arch_Site.svg|32px]] [[Arch_Site|Site]]: Creates a site including selected objects.


<!--T:59-->
* Doors/Windows are quite simple objects, their parameter almost only concerns their internal look. But they must have a "box" that creates holes in other objects.
* [[Image:Arch_Building.svg|32px]] [[Arch_Building|Building]]: Creates a building including selected objects.


<!--T:60-->
* Beams and Slabs are simple too, but depending on their materials they must be able to connect to other slabs, beams and walls. Beams and slabs could also be joined into one single "structural" element. There are pillars too. All of them could be defined the same way as walls, by a wire, a shape or a solid. They could even be based on the same basis as walls...
* [[Image:Arch_Floor.svg|32px]] [[Arch_Floor|Level]]: Creates a floor including selected objects.


<!--T:61-->
* Roofs are a special type of object, not very interesting in their own actually, but useful because it's painful to calculate a roof manually. Basically you need to create a shape based on a contour and inclination. Should be easy to do and to extend later to other roof types
* [[Image:Arch_Reference.svg|32px]] [[Arch_Reference|External reference]]: Links objects from another FreeCAD file into the current document.


<!--T:62-->
* Assemblies need to be defined further. They are basically made of other parts, that could be anything, shapes, windows, etc... and custom properties, such as array repetition, deformation (follow a shape?), etc.
* [[Image:Arch_Window.svg|32px]] [[Arch_Window|Window]]: Creates a window from scratch or using a selected object as a base.


<!--T:63-->
== archetypes (object types) ==
* [[Image:Arch_Roof.svg|32px]] [[Arch_Roof|Roof]]: Creates a sloped roof from a selected wire.


<!--T:64-->
=== Wall ===
* [[Image:Arch_CompAxis.png|48px]] [[Arch CompAxis|Axis tools]]


<!--T:65-->
Wall is a vertical building component that follows a path on a defined level (i.e. first floor, third floor, etc.) or is extruded horizontally from a vertical surface. Walls are made of several layers (materials, each one with specific thickness and thermal properties), and allow for openings (resulted from subtractions) or appendices (unions). When two different walls intersect, user can select the option to connect the two walls (with similar structure). All parameters of a wall are available for future structural and thermal calculations, as well to generate reports (bill of materials). So for a wall, face areas, volumes, material quantities, etc. are directly inserted in the bill of materials and cost estimate.
:* [[Image:Arch_Axis.svg|32px]] [[Arch_Axis|Axis]]: Adds a 1-direction array of axes.


<!--T:66-->
As mentioned, walls in BIM are defined by a line/polyline/etc. that represents the "centerline" of the wall. This line can be aligned with the exterior face of the wall, interior face of the wall, or the center or the wall, or if user chose to, it can be custom defined. Walls have several parameters that define them:
:* [[Image:Arch_AxisSystem.svg|32px]] [[Arch_AxisSystem|Axis System]]: Adds an axis system composed of several axes.
- level in which wall is placed( i.e. first floor, basement, fifth floor, etc.)
- width
- height
- composition


<!--T:67-->
The level in which walls are placed, require a previous insertion of that "level" by user. Once a level is inserted in the BIM model, that creates automatically a horizontal section, that in turn will generate a "sheet" (i.e. once I insert level called "First Floor" at height 0.00 that will automatically section all the visible elements at that height (plus and minus up and down so doors/windows/openings will be visible in that floor plan). Levels and elevations are similar in concept, as basically both are "section planes" located to a certain position/rotation in the 3D space.
:* [[Image:Arch_Grid.svg|32px]] [[Arch_Grid|Grid]]: Adds a grid-like object.


<!--T:68-->
Walls allow for insertions of libraries like: doors, windows, curtain walls, and other custom made objects that require an opening in that wall. If just an opening is required, that can be inserted as well.
* [[Image:Arch_SectionPlane.svg|32px]] [[Arch_SectionPlane|Section Plane]]: Adds a section plane object.


<!--T:69-->
=== Door/Window (Insert element) ===
* [[Image:Arch_Space.svg|32px]] [[Arch_Space|Space]]: Creates a space object.


<!--T:70-->
Doors and windows are really the same thing, a totally object which can have a lot of parameters to define its shape, and an invisible volume that is used to cut openings through receiving walls. They are typically inserted into a wall, but not always. since they can differ much, they should be easy to design.
* [[Image:Arch_Stairs.svg|32px]] [[Arch_Stairs|Stairs]]: Creates a stairs object.


<!--T:71-->
=== Roof ===
* [[Image:Arch_CompPanel.png|48px]] [[Arch_CompPanel|Panel tools]]


<!--T:72-->
Roof is simply a handy way to calculate roof slope intersections
:* [[Image:Arch_Panel.svg|32px]] [[Arch_Panel|Panel]]: Creates a panel object from a selected 2D object.


<!--T:73-->
=== Slab ===
:* [[Image:Arch_Panel_Cut.svg|32px]] [[Arch_Panel_Cut|Panel Cut]]: Creates a 2D cut view from a panel.


<!--T:74-->
Slab is horizontal, made from extruding vertically a closed wire or face, should connect by material to other structural members, and can have a number of appendices (union) or holes subtraction), and layers (materials). The horizontal areas and volume must be calculated
:* [[Image:Arch_Panel_Sheet.svg|32px]] [[Arch_Panel_Sheet|Panel Sheet]]: Creates a 2D cut sheet including panel cuts or other 2D objects.


<!--T:75-->
=== Beam/Pillar (Structural element) ===
:* [[Image:Arch_Nest.svg|32px]] [[Arch_Nest|Nest]]: Allows to nest several flat objects inside a container shape.


<!--T:76-->
A closed wire or face extruded in any direction, can have a number of appendices (union) or holes subtraction).
* [[Image:Arch_Equipment.svg|32px]] [[Arch_Equipment|Equipment]]: Creates an equipment or furniture object.


<!--T:77-->
=== Assembly ===
* [[Image:Arch_Frame.svg|32px]] [[Arch_Frame|Frame]]: Creates a frame object from a selected layout.


<!--T:78-->
A group of windows that can be shaped as a whole
* [[Image:Arch_Fence.svg|32px]] [[Arch_Fence|Fence]]: Creates a fence object from a selected post and path.


<!--T:79-->
== generic mechanisms ==
* [[Image:Arch_Truss.svg|32px]] [[Arch_Truss|Truss]]: Creates a truss from a selected line or from scratch.


<!--T:80-->
* Dependency: windows must know which wall they are inserted, walls must know which window they contain, etc... See part booleans
* [[Image:Arch_Profile.svg|32px]] [[Arch_Profile|Profile]]: Creates a parametric 2D profile.
* Joints: walls must know which other wall connect to them and correctly connect their materials together. Moving a wall must therefore recalculate the neighbours. Establish a chart of possible joint types

* Edge categories: some edges must not be drawn when they are between 2 objects of same material. Mark edges for choosing later how to render them.
<!--T:81-->
* Auto-grouping: Objects of a certain type go automatically into specific groups
* [[Image:Arch_CompSetMaterial.png|48px]] [[Arch CompSetMaterial|Material tools]]
* "Window designer": An easy way to design parametric windows, based on profiles

<!--T:82-->
:* [[Image:Arch_SetMaterial.svg|32px]] [[Arch_SetMaterial|Material]]: Creates a material and attributes it to selected objects, if any.

<!--T:83-->
:* [[Image:Arch_MultiMaterial.svg|32px]] [[Arch_MultiMaterial|Multi-Material]]: Creates a multi-material and attributes it to selected objects, if any.

<!--T:84-->
* [[Image:Arch_Schedule.svg|32px]] [[Arch_Schedule|Schedule]]: Creates different types of schedules.

<!--T:85-->
* [[Image:Arch_CompPipe.png|48px]] [[Arch CompPipe|Pipe tools]]

<!--T:86-->
:* [[Image:Arch_Pipe.svg|32px]] [[Arch_Pipe|Pipe]]: Creates a pipe.

<!--T:87-->
:* [[Image:Arch_PipeConnector.svg|32px]] [[Arch_PipeConnector|Connector]]: Creates a corner or T-connection between 2 or 3 selected pipes.

===Modification tools=== <!--T:20-->

<!--T:21-->
These are tools for modifying architectural objects.

<!--T:88-->
* [[Image:Arch_CutPlane.svg|32px]] [[Arch_CutPlane|Cut with plane]]: Cuts an object according to a plane.

<!--T:90-->
* [[Image:Arch_Add.svg|32px]] [[Arch_Add|Add component]]: Adds objects to a component.

<!--T:91-->
* [[Image:Arch_Remove.svg|32px]] [[Arch_Remove|Remove component]]: Subtracts or removes objects from a component.

<!--T:92-->
* [[Image:Arch_Survey.svg|32px]] [[Arch_Survey|Survey]]: Enters or leaves surveying mode.

===Utilities=== <!--T:23-->

<!--T:24-->
These are additional tools to help you in specific tasks.

<!--T:93-->
* [[Image:Arch_Component.svg|32px]] [[Arch_Component|Component]]: Creates a non-parametric Arch component.

<!--T:94-->
* [[Image:Arch_CloneComponent.svg|32px]] [[Arch_CloneComponent|Clone component]]: Produces Arch Components that are clones of selected Arch objects (not to be confused with [[Draft_Clone|Draft Clone]]).

<!--T:95-->
* [[Image:Arch_SplitMesh.svg|32px]] [[Arch_SplitMesh|Split Mesh]]: Splits a selected mesh into separate components.

<!--T:96-->
* [[Image:Arch_MeshToShape.svg|32px]] [[Arch_MeshToShape|Mesh to Shape]]: Converts a mesh into a shape, unifying coplanar faces.

<!--T:97-->
* [[Image:Arch_SelectNonSolidMeshes.svg|32px]] [[Arch_SelectNonSolidMeshes|Select non-manifold meshes]]: Selects all non-manifold meshes from the current selection or from the document.

<!--T:98-->
* [[Image:Arch_RemoveShape.svg|32px]] [[Arch_RemoveShape|Remove Shape from Arch]]: Turns cubic shape-based Arch object fully parametric.

<!--T:99-->
* [[Image:Arch_CloseHoles.svg|32px]] [[Arch_CloseHoles|Close holes]]: Closes holes in a selected shape-based object.

<!--T:100-->
* [[Image:Arch_MergeWalls.svg|32px]] [[Arch_MergeWalls|Merge Walls]]: Merge two or more walls.

<!--T:101-->
* [[Image:Arch_Check.svg|32px]] [[Arch_Check|Check]]: Check if the selected objects are solids and don't contain defects.

<!--T:102-->
* [[Image:Arch_ToggleIfcBrepFlag.svg|32px]] [[Arch_ToggleIfcBrepFlag|Toggle IFC Brep flag]]: Forces a selected object to be exported as an [http://www.buildingsmart-tech.org/ifc/IFC4/final/html/schema/ifcgeometricmodelresource/lexical/ifcfacetedbrep.htm IfcFacetedBrep].

<!--T:103-->
* [[Image:Arch_3Views.svg|32px]] [[Arch_3Views|3 Views from mesh]]: Creates top, front and side views from a [[Mesh_Workbench|mesh]].

<!--T:104-->
* [[Image:Arch_IfcSpreadsheet.svg|32px]] [[Arch_IfcSpreadsheet|Create IFC spreadsheet...]]: Creates a spreadsheet to store [[Arch_IFC|IFC]] properties of an object.

<!--T:105-->
* [[Image:Arch_ToggleSubs.svg|32px]] [[Arch_ToggleSubs|Toggle subcomponents]]: Shows or hides the subcomponents of an Arch object.

==Obsolete tools== <!--T:106-->

<!--T:89-->
* [[Image:Arch_CutLine.svg|32px]] [[Arch_CutLine|Cut with line]]: Cuts an object according to a line. Not available in {{VersionPlus|1.0}}.

===Preferences=== <!--T:26-->

<!--T:27-->
* [[Image:Preferences-arch.svg|32px]] [[Arch_Preferences|Preferences]]: preferences for the default appearance of walls, structures, rebars, windows, stairs, panels, pipes, grids and axes.

===File formats=== <!--T:4-->

<!--T:5-->
* [[Arch_IFC|IFC]]: industry foundation classes
* [[Arch_DAE|DAE]]: Collada mesh format
* [[Arch_OBJ|OBJ]]: OBJ mesh format (export only)
* [[Arch_JSON|JSON]]: JavaScript Object Notation format (export only)
* [[Arch_3DS|3DS]]: 3DS format (import only)
* [[Arch_SHP|SHP]]: GIS Shapefiles (import only)

== API == <!--T:9-->

<!--T:10-->
The Arch module can be used in [[Python|Python]] scripts and [[Macros|macros]] using the [[Arch_API|Arch Python API]] functions.

== Tutorials == <!--T:11-->

<!--T:12-->
* [[Migrating_to_FreeCAD_from_Revit|Migrating to FreeCAD from Revit]]
* [http://yorik.uncreated.net/guestblog.php?tag=freecad Architecture workflow]: An example of how FreeCAD can begin to have its preliminary place in an architecture workflow.
* [[Arch tutorial|Arch tutorial]] (v0.14)
* [http://yorik.uncreated.net/guestblog.php?2012=180 Quick arch overview on Yorik's blog] (v0.13)
* [https://www.youtube.com/watch?v=lTDOeHapv_E Video presentation of the Arch workbench] (2016)
* [[Arch_panel_tutorial|Arch panel tutorial]] (v0.15)
* [[Manual:BIM modeling|BIM modeling chapter from the FreeCAD manual]]
* [[Import_from_STL_or_OBJ|Import from STL or OBJ]]
* [[Export_to_STL_or_OBJ|Export to STL or OBJ]]


<!--T:6-->
{{Docnav
|[[Std_Base|Std Base]]
|[[Assembly_Workbench|Assembly Workbench]]
|IconL=Freecad.svg
|IconR=Workbench_Assembly.svg
}}

</translate>
{{Arch_Tools_navi{{#translation:}}}}
{{Userdocnavi{{#translation:}}}}
[[Category:Workbenches{{#translation:}}]]

Latest revision as of 10:50, 21 April 2024

Arch workbench icon

Introduction

The Arch Workbench provides a modern Building Information Modelling (BIM) workflow to FreeCAD, with support for features like fully parametric architectural entities such as walls, beams, roofs, windows, stairs, pipes, and furniture. It supports Industry Foundation Classes (IFC) files, and production of 2D floor plans in combination with the TechDraw Workbench.

The Arch Workbench imports all tools from the Draft Workbench, as it uses its 2D objects to build 3D parametric architectural objects. Nevertheless, Arch can also use solid shapes created with other workbenches like Part and PartDesign.

The BIM functionality of FreeCAD is now progressively split into this Arch Workbench, which holds basic architectural tools, and the BIM Workbench, which is available from the Addon Manager. This BIM Workbench adds a new interface layer on top of the Arch tools, with the aim of making the BIM workflow more intuitive and user-friendly. See FreeCAD BIM migration guide.

The developers of Draft, Arch, and BIM also collaborate with the greater OSArch community, with the ultimate goal of improving building design by using entirely free software.

Tools

These are tools for creating architectural objects.

  • Wall: Creates a wall from scratch or using a selected object as a base.
  • Structure: Creates a structural element from scratch or using a selected object as a base.
  • Straight Rebar: Creates a straight reinforcement bar in a selected structural element.
  • U-Shape Rebar: Creates a U-shape reinforcement bar in a selected structural element.
  • L-Shape Rebar: Creates an L-shape reinforcement bar in a selected structural element.
  • Stirrup: Creates a stirrup reinforcement bar in a selected structural element.
  • Bent-Shape Rebar: Creates a bent-shape reinforcement bar in a selected structural element.
  • Helical Rebar: Creates a helical reinforcement bar in a selected structural element.
  • Custom Rebar: Creates a custom reinforcement bar in a selected structural element using a sketch.
  • Curtain Wall: Creates a curtain wall from scratch or using a selected object as a base.
  • Building Part: Creates a building part including selected objects.
  • Project: Creates a project including selected objects.
  • Site: Creates a site including selected objects.
  • Building: Creates a building including selected objects.
  • Level: Creates a floor including selected objects.
  • Window: Creates a window from scratch or using a selected object as a base.
  • Roof: Creates a sloped roof from a selected wire.
  • Axis: Adds a 1-direction array of axes.
  • Axis System: Adds an axis system composed of several axes.
  • Grid: Adds a grid-like object.
  • Space: Creates a space object.
  • Stairs: Creates a stairs object.
  • Panel: Creates a panel object from a selected 2D object.
  • Panel Cut: Creates a 2D cut view from a panel.
  • Panel Sheet: Creates a 2D cut sheet including panel cuts or other 2D objects.
  • Nest: Allows to nest several flat objects inside a container shape.
  • Equipment: Creates an equipment or furniture object.
  • Frame: Creates a frame object from a selected layout.
  • Fence: Creates a fence object from a selected post and path.
  • Truss: Creates a truss from a selected line or from scratch.
  • Profile: Creates a parametric 2D profile.
  • Material: Creates a material and attributes it to selected objects, if any.
  • Multi-Material: Creates a multi-material and attributes it to selected objects, if any.
  • Schedule: Creates different types of schedules.
  • Pipe: Creates a pipe.
  • Connector: Creates a corner or T-connection between 2 or 3 selected pipes.

Modification tools

These are tools for modifying architectural objects.

  • Survey: Enters or leaves surveying mode.

Utilities

These are additional tools to help you in specific tasks.

  • Component: Creates a non-parametric Arch component.
  • Split Mesh: Splits a selected mesh into separate components.
  • Mesh to Shape: Converts a mesh into a shape, unifying coplanar faces.
  • Close holes: Closes holes in a selected shape-based object.
  • Check: Check if the selected objects are solids and don't contain defects.

Obsolete tools

  • Cut with line: Cuts an object according to a line. Not available in version 1.0 and above.

Preferences

  • Preferences: preferences for the default appearance of walls, structures, rebars, windows, stairs, panels, pipes, grids and axes.

File formats

  • IFC: industry foundation classes
  • DAE: Collada mesh format
  • OBJ: OBJ mesh format (export only)
  • JSON: JavaScript Object Notation format (export only)
  • 3DS: 3DS format (import only)
  • SHP: GIS Shapefiles (import only)

API

The Arch module can be used in Python scripts and macros using the Arch Python API functions.

Tutorials