From 6321d5ceb87367703166366ccfced0098ed839ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20W=C3=BCller?= Date: Sat, 20 Apr 2024 16:31:20 +0200 Subject: [PATCH] Fix CSG computing geometry too early onChanged() triggers for the first time before all of the properties are loaded, so it can fail to compute properly at that stage, depending on the load order. However, it's not necessary to compute geometry in onChanged() at all, because that's usually supposed to happen in execute() anyway. The solution here is to just not do onChanged() at all. Fixes #13558 --- src/Mod/OpenSCAD/OpenSCADFeatures.py | 43 ---------------------------- 1 file changed, 43 deletions(-) diff --git a/src/Mod/OpenSCAD/OpenSCADFeatures.py b/src/Mod/OpenSCAD/OpenSCADFeatures.py index 0ff3d11bf2..74fd0af374 100644 --- a/src/Mod/OpenSCAD/OpenSCADFeatures.py +++ b/src/Mod/OpenSCAD/OpenSCADFeatures.py @@ -195,14 +195,7 @@ class Resize: " Resize Vector").Vector = FreeCAD.Vector(vector) obj.Proxy = self - def onChanged(self, fp, prop): - if prop in ['Object','Vector']: - self.createGeometry(fp) - def execute(self, fp): - self.createGeometry(fp) - - def createGeometry(self, fp): import FreeCAD mat = FreeCAD.Matrix() mat.A11 = self.Vector[0] @@ -294,15 +287,7 @@ class IncreaseTolerance: obj.Face = tolerance obj.Proxy = self - def onChanged(self, fp, prop): - # Tolerance property left for backward compatibility - if prop in ["Vertex", "Edge", "Face", "Tolerance"]: - self.createGeometry(fp) - def execute(self, fp): - self.createGeometry(fp) - - def createGeometry(self,fp): if fp.Base: sh=fp.Base.Shape.copy() # Check if property Tolerance exist and preserve support for backward compatibility @@ -355,13 +340,6 @@ class Frustum: obj.Proxy = self def execute(self, fp): - self.createGeometry(fp) - - def onChanged(self, fp, prop): - if prop in ["FacesNumber","Radius1","Radius2","Height"]: - self.createGeometry(fp) - - def createGeometry(self,fp): if all((fp.Radius1,fp.Radius2,fp.FacesNumber,fp.Height)): import math import FreeCAD @@ -407,13 +385,6 @@ class Twist: obj.Proxy = self def execute(self, fp): - self.createGeometry(fp) - - def onChanged(self, fp, prop): - if prop in ["Angle","Height","Scale"]: - self.createGeometry(fp) - - def createGeometry(self, fp): import FreeCAD import Part import math @@ -480,13 +451,6 @@ class PrismaticToroid: obj.Proxy = self def execute(self, fp): - self.createGeometry(fp) - - def onChanged(self, fp, prop): - if prop in ["Angle","Segments"]: - self.createGeometry(fp) - - def createGeometry(self,fp): import FreeCAD import Part import math @@ -561,13 +525,6 @@ class OffsetShape: obj.Proxy = self def execute(self, fp): - self.createGeometry(fp) - - def onChanged(self, fp, prop): - if prop in ["Offset"]: - self.createGeometry(fp) - - def createGeometry(self,fp): if fp.Base and fp.Offset: fp.Shape=fp.Base.Shape.makeOffsetShape(fp.Offset.Value,1e-6)