Shows the BIM Material dialog. The dialog allows to quickly and easily perform material-related operations, with extra focus on efficient working with many objects and many materials.
If there is no existing material in the active document, the Material Manager window is not displayed, and a new material will be created.
If there is at least one material or multimaterial in the document, the Material Manager window will open.
When BIM objects with a shape are attributed a material, their DataMaterial (Link) property is assigned that material (such BIM objects are generally based on Arch Component and inherit its properties).
Material Manager tools
The materials Manager allows you to:
The New Material task panel.The New Multimaterial task panel.
Search materials by name: Use the search box
Assign a material to the selected object(s): Pressing OK with a material selected will assign it to the selected object(s)
Create a multimaterial: Press the New Multi-Material button
Delete a material: Select a material and right-click a material and choose "Delete"
Delete unused materials: Press the Delete Unused button. All materials that are not used by any object will be removed
Merge duplicate materials: Press the Merge Duplicates button. Merges the materials with exact same names (ex. Concrete and Concrete) or exact same names with a numeric suffix (ex. Concrete and Concrete001) together
Rename a material: Right-click a material and choose "Rename"
Duplicate a material: Right-click a material and choose "Duplicate". This will create a full, independent copy of the chosen material with same settings
Merge two materials together: Right-click a material and choose "Merge To…", then select another material. The first one will be removed, and all objects that were using the first one will be assigned the second one
New material
TBD
Material properties
An Arch Material object will have the following properties
Data
Material
DataDescription (String): A description for this material
DataStandardCode (String): A standard code (MasterFormat, OmniClass,…)
DataProductURL (String): A URL where to find information about this material
DataTransparency (Percent): The transparency value of this material
DataColor (Color): The color of this material
DataSectionColor (Color): The color of this material when cut
New multi-material
TBD
The relationship between the BIM and Core material systems
Since version 1.0, FreeCAD contains two distinct and parallel systems for managing materials: a legacy, Python-based system primarily used by the BIM workbench, and a modern, C++ based system intended for global use in any workbench.
The Core (C++) material system
Architecture: This system is designed around a centralized library model. The primary definition of a material is stored externally in files (e.g., .FCMat format) located in system-wide or user-specific directories. The Material Workbench documents this system in more detail.
Data Linking: When a material is assigned to an object (e.g., a PartDesign::Body), the object does not store a full copy of the material's data. Instead, a hidden property named ShapeMaterial is added to the object. This property holds a complete material object in memory, and upon saving the document, it serializes either a reference to an external library material using the material's object UUID property, or embeds a full copy of the material's data if it has no external source.
Workflow: This approach ensures a single source of truth; updates to the central library file will propagate to all documents that link to it. However, it means document portability can be compromised if the corresponding material libraries are not present on another system. The materials themselves are not directly visible as objects within the document's Tree View.
The BIM (Python) material system
Architecture: This system is designed around a document-centric model. A material is a standalone object within the document itself, an instance of App::MaterialObjectPython.
Data Storage: The full definition of the material, including its properties like color and description, is stored directly within this object inside the .FCStd file. These material objects are visible in the Tree View, collected within a "Materials" group. When assigned, an object's DataMaterial property holds a direct link to this in-document material object.
Workflow: This approach ensures document portability, as all material definitions are embedded. It also provides discoverability, as the materials used in a project are explicitly listed in the Tree View. However, it can result in data duplication and lacks a mechanism for centrally updating materials across multiple projects.
The point of interaction: a one-way import
The two systems do not have a deep or persistent integration. Their interaction is limited to a one-way data import initiated from the BIM system.
Mechanism: The BIM/Arch material editor UI is capable of scanning the directories that contain the core system's .FCMat library files. It presents these external materials to the user as available templates in the material task panel, when choosing a preset.
Process: When a user selects an .FCMat material from this list, the BIM system performs the following actions:
It reads the data from the selected .FCMat file.
It uses this data to populate the fields for a new, native App::MaterialObjectPython.
This new object is then created within the active document.
Once this import process is complete, there is no further link between the newly created Arch/BIM material and the original .FCMat file. It is a one-time copy of the data at that specific moment. Subsequent changes to the source material in the core library will have no effect on the Arch/BIM materials that were created from it.
Physical vs. appearance Properties
The FreeCAD material systems are designed with a distinction between a material's physical characteristics and its visual appearance. However, these properties differ significantly between the core Material system and the legacy BIM system.
The Core material system
The core, C++-based system provides an extensible framework for defining a wide range of material properties. It is organized into "Models," which are schemas that group related properties.
Physical Properties: These define the engineering characteristics required for simulation and analysis. The system supports numerous models, including: Mechanical (e.g., Density, YoungsModulus, PoissonRatio), Thermal, Electromagnetic.
Appearance Properties: These define the visual look for rendering. Multiple rendering models are supported, defining properties such as: DiffuseColor, SpecularColorShininess, Transparency, Texture image paths and scaling
Extensibility: The model-based architecture is designed to be extensible. Add-on workbenches or future FreeCAD versions can introduce new models to support additional physical domains or render engines without altering the core framework.
The BIM material system
This legacy, Python-based system has a fixed and more limited set of properties, focusing primarily on visual representation and basic metadata for BIM workflows.
Physical Properties: This system does not have a formal concept of physical properties for engineering analysis. It does not manage data like density or Young's Modulus.
Appearance Properties: The properties are hard-coded and limited to a basic set necessary for architectural visualization and metadata, consisting of 6 properties: DataColor, DataSectionColor, DataTransparency (appearance), DataDescription, DataStandardCode, DataProductURL (metadata).
Extensibility: The property set is fixed within the Python code and is not designed to be extended.
This distinction is critical: the core system is necessary for any engineering analysis (like FEM), while the BIM system is tailored for architectural visualization and IFC compatibility.
Coexistence and interoperability of material systems
While the long-term goal is full migration of the BIM workbench to the core Materials system, a transition period requires understanding how they can coexist on a single object.
Can both systems be assigned to one object?
It is technically possible to assign a material from both systems to the same object (e.g., an Arch Wall). The two systems use different, non-conflicting properties to store their data:
Core System: Uses the hidden DataShapeMaterial property.
BIM System: Uses the visible DataMaterial property.
An object can have both of these properties simultaneously.
The "dual-assignment" workflow for maximum compatibility
For users who require both advanced engineering analysis and correct BIM data exchange (specifically IFC export), a "dual-assignment" workflow is currently the only viable approach.
Why it is necessary:
The tools for different domains are coded to look for different properties.
Workbenches like FEM read physical data exclusively from the Core material assigned to the DataShapeMaterial property.
The IFC exporter is part of the BIM workbench and reads material information exclusively from the BIM material assigned to the DataMaterial property.
Recommended Workflow:
Users who require physical and appearance material properties, and to ensure an object is fully functional across both domains, can perform the following two steps:
Assign the Core Material: Select the object and use the context menu (Right-click -> Material...) to assign the desired material. This makes the object's physical data available for analysis.
Assign the BIM Material: With the same object selected, use the BIM Workbench's Material tool (BIM_Material command) to assign a corresponding BIM material. This ensures the object will be exported to IFC with the correct material information.
Caveats and Risks:
This workaround introduces a significant risk of data desynchronization. The two material assignments are completely independent. If you update the name or color of the BIM material, it will not affect the Core material, and vice-versa. Users must manually ensure that the two assigned materials are kept consistent to avoid conflicting information between their internal analyses and their external BIM deliverables. The BIM system's MultiMaterial object, which has no equivalent in the Core system, must still be used and managed exclusively with BIM materials.