From fb8c802f5d5c1bb84927e56020eb48ee3a1f1cbe Mon Sep 17 00:00:00 2001 From: petemar Date: Thu, 9 Jul 2026 19:24:02 +0200 Subject: [PATCH] SideType replaces Midplane/Symmetric for FC 1.1.1 compatibility --- _patch_fix.py | 24 ++++++++++++++++++++++++ src/freecad_mcp/tools/partdesign.py | 18 ++++++++++++------ 2 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 _patch_fix.py diff --git a/_patch_fix.py b/_patch_fix.py new file mode 100644 index 0000000..e5eb778 --- /dev/null +++ b/_patch_fix.py @@ -0,0 +1,24 @@ +with open("src/freecad_mcp/tools/partdesign.py", "r") as f: + c = f.read() + +# Fix pad_sketch: Midplane -> SideType +old = '# FC 1.1.1: use Midplane instead of Symmetric\nif "Midplane" in pad.PropertiesList:\n pad.Midplane = {symmetric}\nelif "Symmetric" in pad.PropertiesList:\n pad.Symmetric = {symmetric}' +new = '# FC 1.1.1: SideType replaces Midplane/Symmetric\nif "SideType" in pad.PropertiesList:\n pad.SideType = "Symmetric" if {symmetric} else "One side"\nelif "Midplane" in pad.PropertiesList:\n pad.Midplane = {symmetric}\nelif "Symmetric" in pad.PropertiesList:\n pad.Symmetric = {symmetric}' +c = c.replace(old, new) +print("Pad: SideType applied" if old not in c else "Pad NOT found") + +# Fix revolution_sketch +old2 = '# FC 1.1.1: use Midplane instead of Symmetric\nif "Midplane" in rev.PropertiesList:\n rev.Midplane = {symmetric}\nelif "Symmetric" in rev.PropertiesList:\n rev.Symmetric = {symmetric}' +new2 = '# FC 1.1.1: SideType replaces Midplane/Symmetric\nif "SideType" in rev.PropertiesList:\n rev.SideType = "Symmetric" if {symmetric} else "One side"\nelif "Midplane" in rev.PropertiesList:\n rev.Midplane = {symmetric}\nelif "Symmetric" in rev.PropertiesList:\n rev.Symmetric = {symmetric}' +c = c.replace(old2, new2) +print("Rev: SideType applied" if old2 not in c else "Rev NOT found") + +# Fix groove_sketch +old3 = '# FC 1.1.1: use Midplane instead of Symmetric\nif "Midplane" in groove.PropertiesList:\n groove.Midplane = {symmetric}\nelif "Symmetric" in groove.PropertiesList:\n groove.Symmetric = {symmetric}' +new3 = '# FC 1.1.1: SideType replaces Midplane/Symmetric\nif "SideType" in groove.PropertiesList:\n groove.SideType = "Symmetric" if {symmetric} else "One side"\nelif "Midplane" in groove.PropertiesList:\n groove.Midplane = {symmetric}\nelif "Symmetric" in groove.PropertiesList:\n groove.Symmetric = {symmetric}' +c = c.replace(old3, new3) +print("Groove: SideType applied" if old3 not in c else "Groove NOT found") + +with open("src/freecad_mcp/tools/partdesign.py", "w") as f: + f.write(c) +print("Done") diff --git a/src/freecad_mcp/tools/partdesign.py b/src/freecad_mcp/tools/partdesign.py index 6b79f8e..8652b2c 100644 --- a/src/freecad_mcp/tools/partdesign.py +++ b/src/freecad_mcp/tools/partdesign.py @@ -289,8 +289,10 @@ pad_name = {name!r} or "Pad" pad = body.newObject("PartDesign::Pad", pad_name) pad.Profile = sketch pad.Length = {length} -# FC 1.1.1: use Midplane instead of Symmetric -if "Midplane" in pad.PropertiesList: +# FC 1.1.1: SideType replaces Midplane/Symmetric +if "SideType" in pad.PropertiesList: + pad.SideType = "Symmetric" if {symmetric} else "One side" +elif "Midplane" in pad.PropertiesList: pad.Midplane = {symmetric} elif "Symmetric" in pad.PropertiesList: pad.Symmetric = {symmetric} @@ -565,8 +567,10 @@ rev_name = {name!r} or "Revolution" rev = body.newObject("PartDesign::Revolution", rev_name) rev.Profile = sketch rev.Angle = {angle} -# FC 1.1.1: use Midplane instead of Symmetric -if "Midplane" in rev.PropertiesList: +# FC 1.1.1: SideType replaces Midplane/Symmetric +if "SideType" in rev.PropertiesList: + rev.SideType = "Symmetric" if {symmetric} else "One side" +elif "Midplane" in rev.PropertiesList: rev.Midplane = {symmetric} elif "Symmetric" in rev.PropertiesList: rev.Symmetric = {symmetric} @@ -653,8 +657,10 @@ groove_name = {name!r} or "Groove" groove = body.newObject("PartDesign::Groove", groove_name) groove.Profile = sketch groove.Angle = {angle} -# FC 1.1.1: use Midplane instead of Symmetric -if "Midplane" in groove.PropertiesList: +# FC 1.1.1: SideType replaces Midplane/Symmetric +if "SideType" in groove.PropertiesList: + groove.SideType = "Symmetric" if {symmetric} else "One side" +elif "Midplane" in groove.PropertiesList: groove.Midplane = {symmetric} elif "Symmetric" in groove.PropertiesList: groove.Symmetric = {symmetric}