Arch: Fixed materials merge in IFC import

This commit is contained in:
Yorik van Havre 2015-05-19 10:15:07 -03:00
parent 4c383527f8
commit afef89a8ef

View File

@ -341,15 +341,7 @@ def insert(filename,docname,skip=[],only=[],root=None):
properties.setdefault(obj.id(),[]).extend([e.id() for e in r.RelatingPropertyDefinition.HasProperties]) properties.setdefault(obj.id(),[]).extend([e.id() for e in r.RelatingPropertyDefinition.HasProperties])
for r in ifcfile.by_type("IfcRelAssociatesMaterial"): for r in ifcfile.by_type("IfcRelAssociatesMaterial"):
for o in r.RelatedObjects: for o in r.RelatedObjects:
if MERGE_MATERIALS: mattable[o.id()] = r.RelatingMaterial.id()
for k,v in mattable.items():
if ifcfile[v].Name == r.RelatingMaterial.Name:
mattable[o.id()] = v
break
else:
mattable[o.id()] = r.RelatingMaterial.id()
else:
mattable[o.id()] = r.RelatingMaterial.id()
for r in ifcfile.by_type("IfcStyledItem"): for r in ifcfile.by_type("IfcStyledItem"):
if r.Styles[0].is_a("IfcPresentationStyleAssignment"): if r.Styles[0].is_a("IfcPresentationStyleAssignment"):
if r.Styles[0].Styles[0].is_a("IfcSurfaceStyle"): if r.Styles[0].Styles[0].is_a("IfcSurfaceStyle"):
@ -628,14 +620,19 @@ def insert(filename,docname,skip=[],only=[],root=None):
if DEBUG and materials: print "Creating materials..." if DEBUG and materials: print "Creating materials..."
fcmats = {}
for material in materials: for material in materials:
name = material.Name or "Material" name = material.Name or "Material"
mat = Arch.makeMaterial(name=name) if MERGE_MATERIALS and (name in fcmats.keys()):
mdict = {} mat = fcmats[name]
if material.id() in colors: else:
mdict["Color"] = str(colors[material.id()]) mat = Arch.makeMaterial(name=name)
if mdict: mdict = {}
mat.Material = mdict if material.id() in colors:
mdict["Color"] = str(colors[material.id()])
if mdict:
mat.Material = mdict
fcmats[name] = mat
for o,m in mattable.items(): for o,m in mattable.items():
if m == material.id(): if m == material.id():
if o in objects: if o in objects: