From 4057de63463377d04a32d1d2393c8cc24ff682a5 Mon Sep 17 00:00:00 2001 From: DeepSOIC Date: Thu, 17 Dec 2015 03:31:33 +0300 Subject: [PATCH] OpenSCAD: fix replaceChild was broken because it failed trying to set a read-only "ExpressionEngine" property --- src/Mod/OpenSCAD/replaceobj.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Mod/OpenSCAD/replaceobj.py b/src/Mod/OpenSCAD/replaceobj.py index 290109303..ebafa1092 100644 --- a/src/Mod/OpenSCAD/replaceobj.py +++ b/src/Mod/OpenSCAD/replaceobj.py @@ -32,10 +32,16 @@ def replaceobj(parent,oldchild,newchild): for propname in parent.PropertiesList: propvalue=parent.getPropertyByName(propname) if type(propvalue) == list: + bModified = False for dontcare in range(propvalue.count(oldchild)): propvalue[propvalue.index(oldchild)] = newchild - setattr(parent,propname,propvalue) - #print propname, parent.getPropertyByName(propname) + bModified = True + if bModified: + if propname == "ExpressionEngine": + # fixme: proper handling? + FreeCAD.Console.PrintWarning("Expressions in "+parent.Name+" need to be modified, but they were not. Please do that manually.") + continue + setattr(parent,propname,propvalue) else: if propvalue == oldchild: setattr(parent,propname,newchild)