From a125770d636dfbd6366ce9a2b4560b778550e8f1 Mon Sep 17 00:00:00 2001 From: paullee Date: Sat, 20 Jul 2024 02:14:15 +0800 Subject: [PATCH] [Arch ExportIFC] Bug-fix Consecutive Face Touch at Corner Bug-fix Consecutive face (Wall segment) touch at corner. Forum Discussion : https://forum.freecad.org/viewtopic.php?p=771954#p771954 --- src/Mod/BIM/importers/exportIFC.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/Mod/BIM/importers/exportIFC.py b/src/Mod/BIM/importers/exportIFC.py index 861e08032e..cb0f541352 100644 --- a/src/Mod/BIM/importers/exportIFC.py +++ b/src/Mod/BIM/importers/exportIFC.py @@ -2080,10 +2080,22 @@ def getRepresentation( profile = profiledefs[pstr] shapetype = "reusing profile" else: - profile = getProfile(ifcfile,pi) - if profile: - profiledefs[pstr] = profile - if profile and not(DraftVecUtils.isNull(evi)): + # Fix bug in Forum Discussion + # https://forum.freecad.org/viewtopic.php?p=771954#p771954 + if not isinstance(pi, Part.Compound): + profile = getProfile(ifcfile,pi) + if profile: + profiledefs[pstr] = profile + profiles=[profile] + else: # i.e. Part.Compound + profiles=[] + for pif in pi.Faces: + profile = getProfile(ifcfile,pif) + if profile: + profiledefs[pstr] = profile + profiles.append(profile) + if profiles and not(DraftVecUtils.isNull(evi)): + for profile in profiles: #ev = pl.Rotation.inverted().multVec(evi) #print("evi:",evi) if not tostore: