← Test Lab — Gemini — 2026-05-15T12:44

South Wall Right Column

v1 Gemini approved

Create a full-height SIP panel column, 200x100x2310mm. Cut a 45mm deep routed channel on the bottom for the base plate. Cut 22.5mm deep routed channels on the left face for a timber spline joint to the door header.

Dependencies

base_plate_south_right.base_spline

Interfaces Provided

side_spline_left (spline) top_support (face)
Agent initialized (status: waiting_for_dependencies, action: check_dependencies)
Provider: google | Profile: quality
Received interface base_plate_south_right.base_spline: %{name: "base_spline", type: "spline", value: %{}, agent_id: "base_plate_south_right"}
All dependencies resolved, starting generation
Generating v1
Calling Gemini API for code generation (gemini-3.1-pro-preview)...
Generation token budget: max_tokens=12288, thinking_budget=0 (retry_count=0)
Received response (595 tokens)
south_wall_right_col_v1.py · 54 lines
import FreeCAD
import Part
from FreeCAD import Vector

# === PARAMETRIC CONSTANTS ===
LENGTH = 200.0         # Total width of the SIP column in X
WIDTH = 100.0          # Total depth/thickness of the SIP column in Y
HEIGHT = 2310.0        # Total height of the SIP column in Z
OSB_THICKNESS = 11.0   # Standard OSB skin thickness on the front and back faces

BOTTOM_CHANNEL_DEPTH = 45.0
LEFT_CHANNEL_DEPTH = 22.5

# Overshoot parameter for robust boolean cuts (prevents coplanar face artifacts)
OVERSHOOT = 5.0
# === END PARAMETRIC CONSTANTS ===

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

# === SKETCHES & FEATURES ===
# Create the base solid for the SIP column
base_column = Part.makeBox(LENGTH, WIDTH, HEIGHT)

# Tool for bottom routed channel (base plate)
# Removes the core at the bottom, extending slightly outside to ensure a clean cut
bottom_cut = Part.makeBox(
    LENGTH + (2 * OVERSHOOT),
    WIDTH - (2 * OSB_THICKNESS),
    BOTTOM_CHANNEL_DEPTH + OVERSHOOT,
    Vector(-OVERSHOOT, OSB_THICKNESS, -OVERSHOOT)
)

# Tool for left face routed channel (spline joint)
# Removes the core on the left face (X=0)
left_cut = Part.makeBox(
    LEFT_CHANNEL_DEPTH + OVERSHOOT,
    WIDTH - (2 * OSB_THICKNESS),
    HEIGHT + (2 * OVERSHOOT),
    Vector(-OVERSHOOT, OSB_THICKNESS, -OVERSHOOT)
)

# Combine cuts and subtract from base
cut_tools = bottom_cut.fuse(left_cut)
final_shape = base_column.cut(cut_tools)

# Use Part::Feature for direct modeling CSG output, naming it "Body" per rules
obj = doc.addObject("Part::Feature", "Body")
obj.Shape = final_shape

# === FINAL ===
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 google / balanced
Provider updated to google / balanced
Provider updated to google / balanced
Provider updated to google / balanced
Provider updated to google / balanced
Provider updated to google / balanced
Provider updated to google / balanced
Provider updated to google / balanced
v0.0.542