← test

Concrete Strip Foundation

v1 AI approved Generated with ElixiFree

Create Concrete strip perimeter foundation, 15000x6000x300mm. Bearing joint: all four SIP wall sole plates bear directly on the foundation top face, fixed with M12 anchor bolts at 600mm centres (bolts placed deterministically downstream — not modelled here) Connects to south_wall, north_wall, east_wall, west_wall.

Interfaces Provided

bearing_surface ()
◉
Agent initialized (status: waiting_for_dependencies, action: check_dependencies)
◉
Provider: claude_code | Profile: balanced
◉
All dependencies resolved, starting generation
◉
Refreshed placement from design spec (bbox %{"x" => 15000.0, "y" => 6000.0, "z" => 300.0})
◉
Generating v1
◉
[ElixiFree] active — code_module=elixifree.sip
◉
[ElixiFree] downgrading to claude-haiku-4-5-20251001 (builder API active)
○
Calling Claude (local subscription) for code generation (claude-haiku-4-5-20251001)...
◉
Generation token budget: max_tokens=12288, thinking_budget=0 (retry_count=0)
●
Received response ( tokens)
◉
[ElixiFree] roof has 2 spec opening(s) but no RoofPanel(...)/PitchedRoofSlope(...) builder call — failing the script for regeneration (freehand opening cuts are rejected)
◆
foundation_v1.py · 30 lines
raise RuntimeError("ElixiFree builder API was required for this roof's 2 spec-declared opening(s): model the deck with RoofPanel(...) or PitchedRoofSlope(...), chain .opening(...) for each opening, then .build(). Importing elixifree without calling the builder and cutting holes with raw Part.makeBox is rejected, because the design-graph opening positions can only be injected into builder calls.")
from elixifree.domains.sip import Foundation

# === ANCHOR POINTS ===
ANCHOR_TOP_FACE = (7.5e3, 3.0e3, 300.0)
ANCHOR_BOTTOM_FACE = (7.5e3, 3.0e3, 0.0)
ANCHOR_FRONT_FACE = (7.5e3, 0.0, 150.0)
ANCHOR_BACK_FACE = (7.5e3, 6.0e3, 150.0)
ANCHOR_LEFT_FACE = (0.0, 3.0e3, 150.0)
ANCHOR_RIGHT_FACE = (1.5e4, 3.0e3, 150.0)
# === END ANCHOR POINTS ===

# === PARAMETERS ===
LENGTH = 15000.0    # mm — outer length along X
WIDTH = 6000.0      # mm — outer width along Y
DEPTH = 300.0       # mm — foundation depth along Z
STRIP_W = 450.0     # mm — concrete strip width

# === BUILD STRIP FOUNDATION ===
# Concrete perimeter strip with bearing surface at Z=300 (local frame)
# Supports wall sole plates with M12 anchor bolts at 600mm centres embedded in strip
result = Foundation(
    length=LENGTH,
    width=WIDTH,
    depth=DEPTH,
    type="strip_foundation",
    strip_w=STRIP_W,
).build()

result.add_to_doc("Body")
◉
[ElixiFree] ✓ generated script uses elixifree imports
●
Executing in FreeCAD...
✖
FreeCAD execution failed: Traceback (most recent call last): File "/Users/briancunningham/elixicad/freecad/bin/../Mod/CadClaude/cadclaude_worker.py", line 207, in _exec_once exec(compile(script_source, "<cadclaude>", "exec"), {}) File "<cadclaude>", line 9, in <module> RuntimeError: ElixiFree builder API was required for this roof's 2 spec-declared opening(s): model the deck with RoofPanel(...) or PitchedRoofSlope(...), chain .opening(...) for each opening, then .build(). Importing elixifree without calling the builder and cutting holes with raw Part.makeBox is rejected, because the design-graph opening positions can only be injected into builder calls.
◉
Retrying (attempt 2/4)
◉
[ElixiFree] routing correction through generation pipeline (not error_correction_system)
◉
Refreshed placement from design spec (bbox %{"x" => 15000.0, "y" => 6000.0, "z" => 300.0})
◉
Generating v1
◉
[ElixiFree] active — code_module=elixifree.sip
◉
[ElixiFree] downgrading to claude-haiku-4-5-20251001 (builder API active)
◉
[ElixiFree] retry 1: escalating claude-haiku-4-5-20251001 -> claude-sonnet-5
○
Calling Claude (local subscription) for code generation (claude-sonnet-5)...
◉
Generation token budget: max_tokens=14336, thinking_budget=0 (retry_count=1)
●
Received response ( tokens)
◉
[ElixiFree] roof has 2 spec opening(s) but no RoofPanel(...)/PitchedRoofSlope(...) builder call — failing the script for regeneration (freehand opening cuts are rejected)
◆
foundation_v1.py · 31 lines
raise RuntimeError("ElixiFree builder API was required for this roof's 2 spec-declared opening(s): model the deck with RoofPanel(...) or PitchedRoofSlope(...), chain .opening(...) for each opening, then .build(). Importing elixifree without calling the builder and cutting holes with raw Part.makeBox is rejected, because the design-graph opening positions can only be injected into builder calls.")
from elixifree.domains.sip import Foundation

# === ANCHOR POINTS ===
ANCHOR_TOP_FACE = (7.5e3, 3.0e3, 300.0)
ANCHOR_BOTTOM_FACE = (7.5e3, 3.0e3, 0.0)
ANCHOR_FRONT_FACE = (7.5e3, 0.0, 150.0)
ANCHOR_BACK_FACE = (7.5e3, 6.0e3, 150.0)
ANCHOR_LEFT_FACE = (0.0, 3.0e3, 150.0)
ANCHOR_RIGHT_FACE = (1.5e4, 3.0e3, 150.0)
# === END ANCHOR POINTS ===

# === PARAMETERS ===
LENGTH = 15000.0    # mm — outer footprint length along X
WIDTH = 6000.0      # mm — outer footprint width along Y
DEPTH = 300.0       # mm — foundation depth along Z
STRIP_W = 450.0     # mm — concrete strip width (perimeter ring)

# === BUILD STRIP FOUNDATION ===
# Concrete perimeter strip, bearing surface at local Z=0 (top of strip after placement)
# Supports all wall sole plates; M12 anchor bolts at 600mm centres are fixed
# downstream per the fastener catalog and are not modelled as geometry here.
result = Foundation(
    length=LENGTH,
    width=WIDTH,
    depth=DEPTH,
    type="strip_foundation",
    strip_w=STRIP_W,
).build()

result.add_to_doc("Body")
◉
[ElixiFree] ✓ generated script uses elixifree imports
●
Executing in FreeCAD...
✖
FreeCAD execution failed: Traceback (most recent call last): File "/Users/briancunningham/elixicad/freecad/bin/../Mod/CadClaude/cadclaude_worker.py", line 207, in _exec_once exec(compile(script_source, "<cadclaude>", "exec"), {}) File "<cadclaude>", line 9, in <module> RuntimeError: ElixiFree builder API was required for this roof's 2 spec-declared opening(s): model the deck with RoofPanel(...) or PitchedRoofSlope(...), chain .opening(...) for each opening, then .build(). Importing elixifree without calling the builder and cutting holes with raw Part.makeBox is rejected, because the design-graph opening positions can only be injected into builder calls.
◉
Retrying (attempt 3/4)
◉
[ElixiFree] routing correction through generation pipeline (not error_correction_system)
◉
Refreshed placement from design spec (bbox %{"x" => 15000.0, "y" => 6000.0, "z" => 300.0})
◉
Generating v1
◉
[ElixiFree] active — code_module=elixifree.sip
◉
[ElixiFree] downgrading to claude-haiku-4-5-20251001 (builder API active)
◉
[ElixiFree] retry 2: escalating claude-haiku-4-5-20251001 -> claude-sonnet-5
○
Calling Claude (local subscription) for code generation (claude-sonnet-5)...
◉
Generation token budget: max_tokens=16384, thinking_budget=0 (retry_count=2)
●
Received response ( tokens)
◉
[ElixiFree] roof has 2 spec opening(s) but no RoofPanel(...)/PitchedRoofSlope(...) builder call — failing the script for regeneration (freehand opening cuts are rejected)
◆
foundation_v1.py · 31 lines
raise RuntimeError("ElixiFree builder API was required for this roof's 2 spec-declared opening(s): model the deck with RoofPanel(...) or PitchedRoofSlope(...), chain .opening(...) for each opening, then .build(). Importing elixifree without calling the builder and cutting holes with raw Part.makeBox is rejected, because the design-graph opening positions can only be injected into builder calls.")
from elixifree.domains.sip import Foundation

# === ANCHOR POINTS ===
ANCHOR_TOP_FACE = (7.5e3, 3.0e3, 300.0)
ANCHOR_BOTTOM_FACE = (7.5e3, 3.0e3, 0.0)
ANCHOR_FRONT_FACE = (7.5e3, 0.0, 150.0)
ANCHOR_BACK_FACE = (7.5e3, 6.0e3, 150.0)
ANCHOR_LEFT_FACE = (0.0, 3.0e3, 150.0)
ANCHOR_RIGHT_FACE = (1.5e4, 3.0e3, 150.0)
# === END ANCHOR POINTS ===

# === PARAMETERS ===
LENGTH = 15000.0    # mm — outer footprint length along X
WIDTH = 6000.0      # mm — outer footprint width along Y
DEPTH = 300.0       # mm — foundation depth along Z
STRIP_W = 450.0     # mm — concrete strip width (perimeter ring)

# === BUILD STRIP FOUNDATION ===
# Concrete perimeter strip, bearing surface at local Z=0 (top of strip after placement).
# Supports all wall sole plates; M12 anchor bolts at 600mm centres are fixed
# downstream per the fastener catalog and are not modelled as geometry here.
result = Foundation(
    length=LENGTH,
    width=WIDTH,
    depth=DEPTH,
    type="strip_foundation",
    strip_w=STRIP_W,
).build()

result.add_to_doc("Body")
◉
[ElixiFree] ✓ generated script uses elixifree imports
●
Executing in FreeCAD...
✖
FreeCAD execution failed: Traceback (most recent call last): File "/Users/briancunningham/elixicad/freecad/bin/../Mod/CadClaude/cadclaude_worker.py", line 207, in _exec_once exec(compile(script_source, "<cadclaude>", "exec"), {}) File "<cadclaude>", line 9, in <module> RuntimeError: ElixiFree builder API was required for this roof's 2 spec-declared opening(s): model the deck with RoofPanel(...) or PitchedRoofSlope(...), chain .opening(...) for each opening, then .build(). Importing elixifree without calling the builder and cutting holes with raw Part.makeBox is rejected, because the design-graph opening positions can only be injected into builder calls.
◉
Retrying (attempt 4/4)
◉
[ElixiFree] routing correction through generation pipeline (not error_correction_system)
◉
Refreshed placement from design spec (bbox %{"x" => 15000.0, "y" => 6000.0, "z" => 300.0})
◉
Generating v1
◉
[ElixiFree] active — code_module=elixifree.sip
◉
[ElixiFree] downgrading to claude-haiku-4-5-20251001 (builder API active)
◉
[ElixiFree] retry 3: escalating claude-haiku-4-5-20251001 -> claude-sonnet-5
○
Calling Claude (local subscription) for code generation (claude-sonnet-5)...
◉
Generation token budget: max_tokens=16384, thinking_budget=0 (retry_count=3)
●
Received response ( tokens)
◉
[ElixiFree] roof has 2 spec opening(s) but no RoofPanel(...)/PitchedRoofSlope(...) builder call — failing the script for regeneration (freehand opening cuts are rejected)
◆
foundation_v1.py · 31 lines
raise RuntimeError("ElixiFree builder API was required for this roof's 2 spec-declared opening(s): model the deck with RoofPanel(...) or PitchedRoofSlope(...), chain .opening(...) for each opening, then .build(). Importing elixifree without calling the builder and cutting holes with raw Part.makeBox is rejected, because the design-graph opening positions can only be injected into builder calls.")
from elixifree.domains.sip import Foundation

# === ANCHOR POINTS ===
ANCHOR_TOP_FACE = (7.5e3, 3.0e3, 300.0)
ANCHOR_BOTTOM_FACE = (7.5e3, 3.0e3, 0.0)
ANCHOR_FRONT_FACE = (7.5e3, 0.0, 150.0)
ANCHOR_BACK_FACE = (7.5e3, 6.0e3, 150.0)
ANCHOR_LEFT_FACE = (0.0, 3.0e3, 150.0)
ANCHOR_RIGHT_FACE = (1.5e4, 3.0e3, 150.0)
# === END ANCHOR POINTS ===

# === PARAMETERS ===
LENGTH = 15000.0    # mm — outer footprint length along X
WIDTH = 6000.0      # mm — outer footprint width along Y
DEPTH = 300.0       # mm — foundation depth along Z
STRIP_W = 450.0     # mm — concrete strip width (perimeter ring)

# === BUILD STRIP FOUNDATION ===
# Concrete perimeter strip, bearing surface at local Z=0 (top of strip after placement).
# Supports all wall sole plates; M12 anchor bolts at 600mm centres are fixed
# downstream per the fastener catalog and are not modelled as geometry here.
result = Foundation(
    length=LENGTH,
    width=WIDTH,
    depth=DEPTH,
    type="strip_foundation",
    strip_w=STRIP_W,
).build()

result.add_to_doc("Body")
◉
[ElixiFree] ✓ generated script uses elixifree imports
●
Executing in FreeCAD...
✖
FreeCAD execution failed: Traceback (most recent call last): File "/Users/briancunningham/elixicad/freecad/bin/../Mod/CadClaude/cadclaude_worker.py", line 207, in _exec_once exec(compile(script_source, "<cadclaude>", "exec"), {}) File "<cadclaude>", line 9, in <module> RuntimeError: ElixiFree builder API was required for this roof's 2 spec-declared opening(s): model the deck with RoofPanel(...) or PitchedRoofSlope(...), chain .opening(...) for each opening, then .build(). Importing elixifree without calling the builder and cutting holes with raw Part.makeBox is rejected, because the design-graph opening positions can only be injected into builder calls.
✖
Max retries exhausted. Requesting human intervention.
◉
Provider updated to claude_code
◉
Provider updated to claude_code / balanced
◉
Provider updated to claude_code / balanced
◉
Provider updated to claude_code
◉
Provider updated to claude_code
◉
Regeneration requested by user
◉
Refreshed placement from design spec (bbox %{"x" => 15000.0, "y" => 6000.0, "z" => 300.0})
◉
Refreshed placement from design spec (bbox %{"x" => 15000.0, "y" => 6000.0, "z" => 300.0})
◉
Generating v1
◉
[ElixiFree] active — code_module=elixifree.sip
◉
[ElixiFree] downgrading to claude-haiku-4-5-20251001 (builder API active)
○
Calling Claude (local subscription) for code generation (claude-haiku-4-5-20251001)...
◉
Generation token budget: max_tokens=12288, thinking_budget=0 (retry_count=0)
●
Received response ( tokens)
◉
[ElixiFree] roof has 2 spec opening(s) but no RoofPanel(...)/PitchedRoofSlope(...) builder call — failing the script for regeneration (freehand opening cuts are rejected)
◆
foundation_v1.py · 38 lines
raise RuntimeError("ElixiFree builder API was required for this roof's 2 spec-declared opening(s): model the deck with RoofPanel(...) or PitchedRoofSlope(...), chain .opening(...) for each opening, then .build(). Importing elixifree without calling the builder and cutting holes with raw Part.makeBox is rejected, because the design-graph opening positions can only be injected into builder calls.")
import FreeCAD
from elixifree.domains.sip import Foundation

# === ANCHOR POINTS ===
ANCHOR_TOP_FACE = (7.5e3, 3.0e3, 300.0)
ANCHOR_BOTTOM_FACE = (7.5e3, 3.0e3, 0.0)
ANCHOR_FRONT_FACE = (7.5e3, 0.0, 150.0)
ANCHOR_BACK_FACE = (7.5e3, 6.0e3, 150.0)
ANCHOR_LEFT_FACE = (0.0, 3.0e3, 150.0)
ANCHOR_RIGHT_FACE = (1.5e4, 3.0e3, 150.0)
# === END ANCHOR POINTS ===

# === PARAMETERS ===
LENGTH = 1.5e4    # mm — outer concrete footprint span along X
WIDTH = 6.0e3     # mm — outer concrete footprint span along Y
DEPTH = 300.0     # mm — strip depth along Z
STRIP_W = 450     # mm — perimeter strip width
# === END PARAMETERS ===

# === DOCUMENT ===
doc = FreeCAD.ActiveDocument or FreeCAD.newDocument("Foundation")

# === BUILD GEOMETRY ===
result = Foundation(
    length=LENGTH,
    width=WIDTH,
    depth=DEPTH,
    type="strip_foundation",
    strip_w=STRIP_W,
).build()

feature = result.add_to_doc("Body")

# === FINAL ===
doc.recompute()
if FreeCAD.GuiUp:
    FreeCAD.Gui.ActiveDocument.ActiveView.fitAll()
◉
[ElixiFree] ✓ generated script uses elixifree imports
●
Executing in FreeCAD...
✖
FreeCAD execution failed: Traceback (most recent call last): File "/Users/briancunningham/elixicad/freecad/bin/../Mod/CadClaude/cadclaude_worker.py", line 207, in _exec_once exec(compile(script_source, "<cadclaude>", "exec"), {}) File "<cadclaude>", line 9, in <module> RuntimeError: ElixiFree builder API was required for this roof's 2 spec-declared opening(s): model the deck with RoofPanel(...) or PitchedRoofSlope(...), chain .opening(...) for each opening, then .build(). Importing elixifree without calling the builder and cutting holes with raw Part.makeBox is rejected, because the design-graph opening positions can only be injected into builder calls.
◉
Retrying (attempt 2/4)
◉
[ElixiFree] routing correction through generation pipeline (not error_correction_system)
◉
Refreshed placement from design spec (bbox %{"x" => 15000.0, "y" => 6000.0, "z" => 300.0})
◉
Generating v1
◉
[ElixiFree] active — code_module=elixifree.sip
◉
[ElixiFree] downgrading to claude-haiku-4-5-20251001 (builder API active)
◉
[ElixiFree] retry 1: escalating claude-haiku-4-5-20251001 -> claude-sonnet-5
○
Calling Claude (local subscription) for code generation (claude-sonnet-5)...
◉
Generation token budget: max_tokens=14336, thinking_budget=0 (retry_count=1)
●
Received response ( tokens)
◉
[ElixiFree] roof has 2 spec opening(s) but no RoofPanel(...)/PitchedRoofSlope(...) builder call — failing the script for regeneration (freehand opening cuts are rejected)
◆
foundation_v1.py · 29 lines
raise RuntimeError("ElixiFree builder API was required for this roof's 2 spec-declared opening(s): model the deck with RoofPanel(...) or PitchedRoofSlope(...), chain .opening(...) for each opening, then .build(). Importing elixifree without calling the builder and cutting holes with raw Part.makeBox is rejected, because the design-graph opening positions can only be injected into builder calls.")
from elixifree.domains.sip import Foundation

# === ANCHOR POINTS ===
ANCHOR_TOP_FACE = (7.5e3, 3.0e3, 300.0)
ANCHOR_BOTTOM_FACE = (7.5e3, 3.0e3, 0.0)
ANCHOR_FRONT_FACE = (7.5e3, 0.0, 150.0)
ANCHOR_BACK_FACE = (7.5e3, 6.0e3, 150.0)
ANCHOR_LEFT_FACE = (0.0, 3.0e3, 150.0)
ANCHOR_RIGHT_FACE = (1.5e4, 3.0e3, 150.0)
# === END ANCHOR POINTS ===

# === PARAMETERS ===
LENGTH = 1.5e4    # mm — outer concrete footprint span along X
WIDTH = 6.0e3     # mm — outer concrete footprint span along Y
DEPTH = 300.0     # mm — strip depth along Z
STRIP_W = 450     # mm — perimeter strip width
# === END PARAMETERS ===

# === BUILD GEOMETRY ===
result = Foundation(
    length=LENGTH,
    width=WIDTH,
    depth=DEPTH,
    type="strip_foundation",
    strip_w=STRIP_W,
).build()

result.add_to_doc("Body")
◉
[ElixiFree] ✓ generated script uses elixifree imports
●
Executing in FreeCAD...
✖
FreeCAD execution failed: Traceback (most recent call last): File "/Users/briancunningham/elixicad/freecad/bin/../Mod/CadClaude/cadclaude_worker.py", line 207, in _exec_once exec(compile(script_source, "<cadclaude>", "exec"), {}) File "<cadclaude>", line 9, in <module> RuntimeError: ElixiFree builder API was required for this roof's 2 spec-declared opening(s): model the deck with RoofPanel(...) or PitchedRoofSlope(...), chain .opening(...) for each opening, then .build(). Importing elixifree without calling the builder and cutting holes with raw Part.makeBox is rejected, because the design-graph opening positions can only be injected into builder calls.
◉
Retrying (attempt 3/4)
◉
[ElixiFree] routing correction through generation pipeline (not error_correction_system)
◉
Refreshed placement from design spec (bbox %{"x" => 15000.0, "y" => 6000.0, "z" => 300.0})
◉
Generating v1
◉
[ElixiFree] active — code_module=elixifree.sip
v0.0.985