mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-21 23:00:53 +00:00
Now materials that aren't also used as a styled item can be exported
This commit is contained in:
@@ -109,7 +109,7 @@ class IfcParser:
|
|||||||
self.constraints = self.get_constraints()
|
self.constraints = self.get_constraints()
|
||||||
self.load_representations()
|
self.load_representations()
|
||||||
self.load_presentation_layer_assignments()
|
self.load_presentation_layer_assignments()
|
||||||
self.materials = self.get_materials()
|
self.get_materials()
|
||||||
self.styled_items = self.get_styled_items()
|
self.styled_items = self.get_styled_items()
|
||||||
self.spatial_structure_elements = self.get_spatial_structure_elements()
|
self.spatial_structure_elements = self.get_spatial_structure_elements()
|
||||||
self.groups = self.get_groups()
|
self.groups = self.get_groups()
|
||||||
@@ -1134,26 +1134,37 @@ class IfcParser:
|
|||||||
return name
|
return name
|
||||||
|
|
||||||
def get_materials(self):
|
def get_materials(self):
|
||||||
results = {}
|
|
||||||
if not self.ifc_export_settings.has_representations:
|
if not self.ifc_export_settings.has_representations:
|
||||||
return results
|
return
|
||||||
for product in self.selected_products + self.type_products:
|
for product in self.selected_products + self.selected_types:
|
||||||
obj = product["raw"]
|
obj = product["raw"]
|
||||||
if obj.data is None:
|
if obj.BIMObjectProperties.material_type == "IfcMaterial" and obj.BIMObjectProperties.material:
|
||||||
continue
|
self.get_material(obj.BIMObjectProperties.material)
|
||||||
|
elif obj.BIMObjectProperties.material_type == "IfcMaterialConstituentSet":
|
||||||
|
for constituent in obj.BIMObjectProperties.material_set.material_constituents:
|
||||||
|
self.get_material(constituent.material)
|
||||||
|
elif obj.BIMObjectProperties.material_type == "IfcMaterialLayerSet":
|
||||||
|
for layer in obj.BIMObjectProperties.material_set.material_layers:
|
||||||
|
self.get_material(layer.material)
|
||||||
|
elif obj.BIMObjectProperties.material_type == "IfcMaterialProfileSet":
|
||||||
|
for profile in obj.BIMObjectProperties.material_set.material_profiles:
|
||||||
|
self.get_material(profile.material)
|
||||||
for slot in obj.material_slots:
|
for slot in obj.material_slots:
|
||||||
if slot.material is None:
|
if slot.material is None or slot.link == "OBJECT":
|
||||||
continue
|
continue
|
||||||
if slot.material.name in results or slot.link == "OBJECT":
|
self.get_material(slot.material)
|
||||||
continue
|
|
||||||
material = {
|
def get_material(self, material):
|
||||||
"ifc": None,
|
if material.name in self.materials:
|
||||||
"raw": slot.material,
|
return
|
||||||
"attributes": self.get_material_attributes(slot.material),
|
data = {
|
||||||
}
|
"ifc": None,
|
||||||
results[slot.material.name] = material
|
"raw": material,
|
||||||
self.get_material_psets(material, slot.material)
|
"attributes": self.get_material_attributes(material),
|
||||||
return results
|
}
|
||||||
|
print(material.name)
|
||||||
|
self.materials[material.name] = data
|
||||||
|
self.get_material_psets(data, material)
|
||||||
|
|
||||||
def get_material_attributes(self, material):
|
def get_material_attributes(self, material):
|
||||||
attributes = {"Name": material.name}
|
attributes = {"Name": material.name}
|
||||||
|
|||||||
Reference in New Issue
Block a user