← Bungalow

Ridge board (double-bevelled RidgeBoard)

v1 AI approved

Create Ridge board (double-bevelled RidgeBoard), 11716.0x90x400mm. Ends bear on gable end walls' inner-face apex plates; two bevel faces support south & north SIP roof slopes in full-face contact. Connects to main__s0_wall_e1, main__s0_wall_e3, main__gable_roof_south, main__gable_roof_north.

Interfaces Provided

body (component)
◉
Agent initialized (status: waiting_for_dependencies, action: check_dependencies, delay: 1000ms)
◉
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" => 11716.0, "y" => 90.0, "z" => 400.0})
◉
Generating v1
◉
[ElixiFree] not active for this component — using raw FreeCAD scripting
○
Calling Claude (local subscription) for code generation (claude-sonnet-5)...
◉
Generation token budget: max_tokens=12288, thinking_budget=0 (retry_count=0)
●
Received response ( tokens)
◆
main__ridge_beam_v1.py · 49 lines
import FreeCAD
import Part
from FreeCAD import Vector

# === ANCHOR POINTS ===
ANCHOR_TOP_FACE = (5858.0, 45.0, 400.0)
ANCHOR_BOTTOM_FACE = (5858.0, 45.0, 0.0)
ANCHOR_FRONT_FACE = (5858.0, 0.0, 200.0)
ANCHOR_BACK_FACE = (5858.0, 90.0, 200.0)
ANCHOR_LEFT_FACE = (0.0, 45.0, 200.0)
ANCHOR_RIGHT_FACE = (11716.0, 45.0, 200.0)
# === END ANCHOR POINTS ===

# === PARAMETERS ===
LENGTH      = 11716.0   # mm — span along X (bears on gable apex plates)
WIDTH       = 90.0      # mm — thickness along Y (board width)
HEIGHT      = 400.0     # mm — total height along Z (peak height at arris)
BEVEL_RISE  = 50.0      # mm — how far the bevel drops from the peak to the outer edges
EDGE_HEIGHT = HEIGHT - BEVEL_RISE  # mm — height at Y=0 and Y=WIDTH edges
# === END PARAMETERS ===

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

# === BUILD GEOMETRY ===
# Cross-section profile in the YZ plane (at X=0), extruded along +X.
# Pentagon: flat bottom, vertical sides up to EDGE_HEIGHT, then two bevel
# faces meeting at the peak (arris) centered at Y=WIDTH/2, Z=HEIGHT.
profile_pts = [
    Vector(0.0, 0.0,        0.0),          # bottom-front
    Vector(0.0, WIDTH,      0.0),          # bottom-back
    Vector(0.0, WIDTH,      EDGE_HEIGHT),  # back edge top (before bevel)
    Vector(0.0, WIDTH / 2,  HEIGHT),       # peak / arris
    Vector(0.0, 0.0,        EDGE_HEIGHT),  # front edge top (before bevel)
    Vector(0.0, 0.0,        0.0),          # close profile
]

wire = Part.makePolygon(profile_pts)
face = Part.Face(wire)
solid = face.extrude(Vector(LENGTH, 0.0, 0.0))

# === ADD TO DOCUMENT ===
obj = doc.addObject("Part::Feature", "Body")
obj.Shape = solid

doc.recompute()

if FreeCAD.GuiUp:
    FreeCAD.Gui.ActiveDocument.ActiveView.fitAll()
●
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