From 5b3d882afc08de9f2b42c523b54c8d4720c141e0 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Fri, 14 Jun 2024 15:39:39 +0200 Subject: [PATCH 1/2] BIM: fix extrusion vector scaling for IFC export The Dir vector of Part Extrusions also needs to be scaled if obj.LengthFwd.Value is zero. Forum topic: https://forum.freecad.org/viewtopic.php?t=88121 --- src/Mod/BIM/importers/exportIFC.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/BIM/importers/exportIFC.py b/src/Mod/BIM/importers/exportIFC.py index a03fd1ce08..b44f7ca01e 100644 --- a/src/Mod/BIM/importers/exportIFC.py +++ b/src/Mod/BIM/importers/exportIFC.py @@ -2108,7 +2108,7 @@ def getRepresentation( if l: ev = FreeCAD.Vector(ev).normalize() # new since 0.20 - obj.Dir length is ignored ev.multiply(l) - ev.multiply(preferences['SCALE_FACTOR']) + ev.multiply(preferences['SCALE_FACTOR']) ev = pl.Rotation.inverted().multVec(ev) xvc = ifcbin.createIfcDirection(tuple(pl.Rotation.multVec(FreeCAD.Vector(1,0,0)))) zvc = ifcbin.createIfcDirection(tuple(pl.Rotation.multVec(FreeCAD.Vector(0,0,1)))) From ecee1ff0ab6e81da5769d2fb2bdc45788cd6ca25 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Fri, 14 Jun 2024 15:52:11 +0200 Subject: [PATCH 2/2] Ensure that the Dir vector is copied --- src/Mod/BIM/importers/exportIFC.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Mod/BIM/importers/exportIFC.py b/src/Mod/BIM/importers/exportIFC.py index b44f7ca01e..27f2be0b21 100644 --- a/src/Mod/BIM/importers/exportIFC.py +++ b/src/Mod/BIM/importers/exportIFC.py @@ -2103,10 +2103,10 @@ def getRepresentation( profile = getProfile(ifcfile,profile) if profile: profiledefs[pstr] = profile - ev = obj.Dir + ev = FreeCAD.Vector(obj.Dir) l = obj.LengthFwd.Value if l: - ev = FreeCAD.Vector(ev).normalize() # new since 0.20 - obj.Dir length is ignored + ev = ev.normalize() # new since 0.20 - obj.Dir length is ignored ev.multiply(l) ev.multiply(preferences['SCALE_FACTOR']) ev = pl.Rotation.inverted().multVec(ev)