← Shed

Perimeter strip foundation

v1 AI approved Generated with ElixiFree

Reinforced concrete strip foundation, 8000mm L × 6000mm W × 300mm deep. Sole plate bearing surface. All four walls bear via anchor bolts M12 at 600mm centres.

Interfaces Provided

bearing_top_face ()
◉
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" => 8000.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)
◉
Provider updated to claude_code / balanced
●
Received response ( tokens)
◆
foundation_v1.py · 79 lines
from elixifree.domains.sip import Foundation
import FreeCAD
import Part
from FreeCAD import Vector

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

# === PARAMETERS ===
LENGTH = 8.0e3      # mm — span along X
WIDTH = 6.0e3       # mm — depth along Y
HEIGHT = 300.0      # mm — height along Z
STRIP_W = 450       # mm — strip width in plan
BOLT_DIAMETER = 12  # mm — M12 anchor bolts
BOLT_EMBEDMENT = 150  # mm — bolt embedment depth
BOLT_SPACING = 600  # mm — centres along perimeter
BOLT_END_CLEARANCE = 150  # mm — minimum distance from plate ends
# === END PARAMETERS ===

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

# Build the strip foundation using ElixiFree builder
result = Foundation(
    length=LENGTH,
    width=WIDTH,
    depth=HEIGHT,
    type="strip_foundation",
    strip_w=STRIP_W,
).build()

feature = result.add_to_doc("Body")
doc.recompute()

# ElixiFree gap: anchor bolts embedded in foundation for sole plate fixings
# (Foundation builder does not include fastener geometry)
bolts = []
strip_center_y = STRIP_W / 2

# South edge — bolts along X axis at Y = strip center offset
for x in range(int(BOLT_END_CLEARANCE), int(LENGTH - BOLT_END_CLEARANCE) + 1, int(BOLT_SPACING)):
    bolt = Part.makeCylinder(BOLT_DIAMETER / 2, BOLT_EMBEDMENT,
                              Vector(x, strip_center_y, 0))
    bolts.append(bolt)

# North edge — bolts along X axis at Y = WIDTH - strip center offset
for x in range(int(BOLT_END_CLEARANCE), int(LENGTH - BOLT_END_CLEARANCE) + 1, int(BOLT_SPACING)):
    bolt = Part.makeCylinder(BOLT_DIAMETER / 2, BOLT_EMBEDMENT,
                              Vector(x, WIDTH - strip_center_y, 0))
    bolts.append(bolt)

# West edge — bolts along Y axis at X = strip center offset (skip corner positions)
for y in range(int(BOLT_END_CLEARANCE + BOLT_SPACING), int(WIDTH - BOLT_END_CLEARANCE), int(BOLT_SPACING)):
    bolt = Part.makeCylinder(BOLT_DIAMETER / 2, BOLT_EMBEDMENT,
                              Vector(strip_center_y, y, 0))
    bolts.append(bolt)

# East edge — bolts along Y axis at X = LENGTH - strip center offset (skip corner positions)
for y in range(int(BOLT_END_CLEARANCE + BOLT_SPACING), int(WIDTH - BOLT_END_CLEARANCE), int(BOLT_SPACING)):
    bolt = Part.makeCylinder(BOLT_DIAMETER / 2, BOLT_EMBEDMENT,
                              Vector(LENGTH - strip_center_y, y, 0))
    bolts.append(bolt)

# Fuse bolts into foundation
if bolts:
    combined_shape = feature.Shape
    for bolt in bolts:
        combined_shape = combined_shape.fuse(bolt)
    combined_shape = combined_shape.removeSplitter()
    feature.Shape = combined_shape
    doc.recompute()

if FreeCAD.GuiUp:
    FreeCAD.Gui.ActiveDocument.ActiveView.fitAll()
◉
[ElixiFree gap] anchor bolts embedded in foundation for sole plate fixings
◉
[ElixiFree] ✓ generated script uses elixifree imports
●
Executing in FreeCAD...
◉
StepAnalyzer failed: FreeCAD could not read STEP file: FreeCAD exception thrown (File to load not existing or not readable) — skipping
●
FreeCAD execution succeeded
●
Exported: model.stl
★
Ready for review (v1)
◉
Provider updated to claude_code / balanced
◉
Provider updated to claude_code
◉
Component approved by user
◉
Provider updated to claude_code / balanced
v0.0.985