FC 1.1.1 fixes: AttachmentSupport via PropertiesList, import Sketcher, Midplane fallback
CodeQL Analysis / Analyze (python) (push) Has been cancelled
Pre-commit Checks / Run Pre-commit Hooks (push) Has been cancelled
Docker Build / Build Docker Image (push) Failing after 2m27s
Tests / Python Tests (push) Has been cancelled
Deploy Documentation / deploy (push) Waiting to run

This commit is contained in:
petemar
2026-07-09 19:13:56 +02:00
parent 9db4138fb9
commit 29f63d19c7
2 changed files with 45 additions and 6 deletions
+20
View File
@@ -0,0 +1,20 @@
with open("src/freecad_mcp/tools/partdesign.py", "r") as f:
c = f.read()
# Revolution fix
old1 = "rev.Symmetric = {symmetric}\nrev.Reversed = {reversed}"
new1 = "# 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}\nrev.Reversed = {reversed}"
c = c.replace(old1, new1)
print(f"Revolution: {'fixed' if old1 in c else 'may have issues'}")
# Groove fix
old2 = "groove.Symmetric = {symmetric}\ngroove.Reversed = {reversed}"
new2 = "# 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}\ngroove.Reversed = {reversed}"
c = c.replace(old2, new2)
print(f"Groove: {'fixed' if old2 in c else 'may have issues'}")
with open("src/freecad_mcp/tools/partdesign.py", "w") as f:
f.write(c)
print("Done")
+25 -6
View File
@@ -95,11 +95,17 @@ if {body_name!r}:
# Set support plane # Set support plane
plane = {plane!r} plane = {plane!r}
if plane in ["XY_Plane", "XZ_Plane", "YZ_Plane"]: if plane in ["XY_Plane", "XZ_Plane", "YZ_Plane"]:
sketch.Support = (body.Origin.getObject(plane), [""]) # FC 1.1.1: use PropertiesList check (hasattr unreliable for C++ properties)
if "AttachmentSupport" in sketch.PropertiesList:
sketch.AttachmentSupport = (body.Origin.getObject(plane), [""])
else:
sketch.Support = (body.Origin.getObject(plane), [""])
sketch.MapMode = "FlatFace" sketch.MapMode = "FlatFace"
elif plane.startswith("Face"): elif plane.startswith("Face"):
# Attach to face if "AttachmentSupport" in sketch.PropertiesList:
sketch.Support = (body, [plane]) sketch.AttachmentSupport = (body, [plane])
else:
sketch.Support = (body, [plane])
sketch.MapMode = "FlatFace" sketch.MapMode = "FlatFace"
else: else:
# Standalone sketch # Standalone sketch
@@ -161,6 +167,7 @@ if sketch is None:
# Add rectangle # Add rectangle
import Part import Part
import Sketcher
x, y, w, h = {x}, {y}, {width}, {height} x, y, w, h = {x}, {y}, {width}, {height}
@@ -282,7 +289,11 @@ pad_name = {name!r} or "Pad"
pad = body.newObject("PartDesign::Pad", pad_name) pad = body.newObject("PartDesign::Pad", pad_name)
pad.Profile = sketch pad.Profile = sketch
pad.Length = {length} pad.Length = {length}
pad.Symmetric = {symmetric} # FC 1.1.1: use Midplane instead of Symmetric
if "Midplane" in pad.PropertiesList:
pad.Midplane = {symmetric}
elif "Symmetric" in pad.PropertiesList:
pad.Symmetric = {symmetric}
pad.Reversed = {reversed} pad.Reversed = {reversed}
doc.recompute() doc.recompute()
@@ -554,7 +565,11 @@ rev_name = {name!r} or "Revolution"
rev = body.newObject("PartDesign::Revolution", rev_name) rev = body.newObject("PartDesign::Revolution", rev_name)
rev.Profile = sketch rev.Profile = sketch
rev.Angle = {angle} rev.Angle = {angle}
rev.Symmetric = {symmetric} # FC 1.1.1: use Midplane instead of Symmetric
if "Midplane" in rev.PropertiesList:
rev.Midplane = {symmetric}
elif "Symmetric" in rev.PropertiesList:
rev.Symmetric = {symmetric}
rev.Reversed = {reversed} rev.Reversed = {reversed}
# Set axis reference # Set axis reference
@@ -638,7 +653,11 @@ groove_name = {name!r} or "Groove"
groove = body.newObject("PartDesign::Groove", groove_name) groove = body.newObject("PartDesign::Groove", groove_name)
groove.Profile = sketch groove.Profile = sketch
groove.Angle = {angle} groove.Angle = {angle}
groove.Symmetric = {symmetric} # FC 1.1.1: use Midplane instead of Symmetric
if "Midplane" in groove.PropertiesList:
groove.Midplane = {symmetric}
elif "Symmetric" in groove.PropertiesList:
groove.Symmetric = {symmetric}
groove.Reversed = {reversed} groove.Reversed = {reversed}
# Set axis reference # Set axis reference