← Bungalow

North roof slope (SIP, with 2 Velux skylights)

v1 AI approved Generated with ElixiFree

Create North roof slope (SIP, with 2 Velux skylights), 12000.0x4000.0x142mm. half_span 4000.0mm (horizontal eave-to-ridge run — pass this value directly as the half_span argument, do NOT substitute slope_length or adjust for panel thickness). pitch_degrees 30.0deg (use this exact value for pitch_degrees — do NOT guess or derive from other dimensions). stock SIP-120 (use this exact ElixiFree stock key — do NOT substitute a different SIP stock). eave_overhang 400.0mm rake_overhang 300.0mm (pass both directly to PitchedRoofSlope — do NOT use default values). Bears on north wall bevelled top plate at eave; plumb-cut mitre at ridge lands on ridge board arris; rake edges over east & west gable wal

Interfaces Provided

body (component)
◉
Agent initialized (status: waiting_for_dependencies, action: check_dependencies, delay: 3000ms)
◉
Provider: claude_code | Profile: balanced
◉
Provider updated to claude_code / balanced
◉
Starting after stagger delay (action: check_dependencies)
◉
Refreshed placement from design spec (bbox %{"x" => 12600.0, "y" => 5162.666107093633, "z" => 142.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)
◆
main__gable_roof_north_v1.py · 45 lines
import FreeCAD
from elixifree.domains.sip import PitchedRoofSlope

# === ANCHOR POINTS ===
ANCHOR_TOP_FACE = (6.0e3, 2.0e3, 142.0)
ANCHOR_BOTTOM_FACE = (6.0e3, 2.0e3, 0.0)
ANCHOR_FRONT_FACE = (6.0e3, 0.0, 71.0)
ANCHOR_BACK_FACE = (6.0e3, 4.0e3, 71.0)
ANCHOR_LEFT_FACE = (0.0, 2.0e3, 71.0)
ANCHOR_RIGHT_FACE = (1.2e4, 2.0e3, 71.0)
# === END ANCHOR POINTS ===

# === PARAMETERS ===
RIDGE_LENGTH = 12000.0          # Building width (X direction)
HALF_SPAN = 4000.0              # Horizontal eave-to-ridge run
PITCH_DEGREES = 30.0            # Roof pitch
STOCK = "SIP-120"               # SIP panel stock
EAVE_OVERHANG = 400.0           # Projection at eave
RAKE_OVERHANG = 300.0           # Projection at rake edges
# === END PARAMETERS ===

# === BUILD GEOMETRY ===
doc = FreeCAD.ActiveDocument or FreeCAD.newDocument("NorthRoofSlope")

slope = PitchedRoofSlope(
    ridge_length=RIDGE_LENGTH,
    half_span=HALF_SPAN,
    pitch_degrees=PITCH_DEGREES,
    stock=STOCK,
    is_south=False,              # North slope
    eave_overhang=EAVE_OVERHANG,
    rake_overhang=RAKE_OVERHANG,
)

# Add Velux skylights with specified positions and dimensions
slope.opening(u=1810.0, run=1310.0, width=780.0, depth=1180.0)
slope.opening(u=4860.0, run=1310.0, width=1340.0, depth=1180.0)

result = slope.build()
result.add_to_doc("Body")

# === FINAL ===
doc.recompute()
if FreeCAD.GuiUp:
    FreeCAD.Gui.ActiveDocument.ActiveView.fitAll()
◉
[ElixiFree] ✓ generated script uses elixifree imports
◉
[ElixiFree] ⚠ script imports unknown symbols: PitchedRoofSlope — possible hallucination
●
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
◉
Generation succeeded and component was auto-approved (v1)
◉
Provider updated to claude_code / balanced
◉
Provider updated to claude_code / balanced
v0.0.985