openscad-cutlist-woodworkers
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseOpenSCAD Cut List Generation (woodworkers-lib)
OpenSCAD切割清单生成(基于woodworkers-lib)
Generate accurate cut lists from OpenSCAD furniture designs using the woodworkers-lib library's automatic ECHO output for panel dimensions and edge banding specifications.
借助woodworkers-lib库的自动ECHO输出功能,从OpenSCAD家具设计中生成准确的切割清单,包含板材尺寸和封边规格。
Quick Start
快速入门
scad
include <woodworkers-lib/std.scad>
cabinet = [800, 400, 1200]; // width × depth × height
planeLeft(cabinet, f=-1, t=-1, b=-1, af=4); // Side panel with front edge band
planeRight(cabinet, f=-1, t=-1, b=-1, af=4); // Side panel with front edge band
planeTop(cabinet, f=-1, af=4, al=4, ar=4); // Top with 3 edge bands
planeBottom(cabinet, f=-1, af=4, al=4, ar=4); // Bottom with 3 edge bands
planeBack(cabinet, thick=4); // Thin back panel (fiberboard)Render to see cut list:
bash
openscad cabinet.scad 2>&1 | grep "ECHO: \"plane"Output:
ECHO: "plane (left): 18 × 378 × 1164(4)"
ECHO: "plane (right): 18 × 378 × 1164(4)"
ECHO: "plane (top): 782(4,4) × 378(4) × 18"
ECHO: "plane (bottom): 782(4,4) × 378(4) × 18"
ECHO: "plane (back): 800 × 4 × 1200"Interpretation:
- = 18mm thick panel, 378mm × 1164mm, with 4mm edge band on one edge
18 × 378 × 1164(4) - = 18mm thick panel, 782mm × 378mm, with edge bands on 3 edges (4mm each)
782(4,4) × 378(4) × 18
scad
include <woodworkers-lib/std.scad>
cabinet = [800, 400, 1200]; // width × depth × height
planeLeft(cabinet, f=-1, t=-1, b=-1, af=4); // Side panel with front edge band
planeRight(cabinet, f=-1, t=-1, b=-1, af=4); // Side panel with front edge band
planeTop(cabinet, f=-1, af=4, al=4, ar=4); // Top with 3 edge bands
planeBottom(cabinet, f=-1, af=4, al=4, ar=4); // Bottom with 3 edge bands
planeBack(cabinet, thick=4); // Thin back panel (fiberboard)渲染以查看切割清单:
bash
openscad cabinet.scad 2>&1 | grep "ECHO: \"plane"输出:
ECHO: "plane (left): 18 × 378 × 1164(4)"
ECHO: "plane (right): 18 × 378 × 1164(4)"
ECHO: "plane (top): 782(4,4) × 378(4) × 18"
ECHO: "plane (bottom): 782(4,4) × 378(4) × 18"
ECHO: "plane (back): 800 × 4 × 1200"说明:
- = 厚度18mm的板材,尺寸378mm × 1164mm,其中一条边有4mm封边
18 × 378 × 1164(4) - = 厚度18mm的板材,尺寸782mm × 378mm,其中三条边各有4mm封边
782(4,4) × 378(4) × 18
Usage
使用方法
See Core Workflow below for complete step-by-step process.
请查看下方的【核心工作流程】获取完整的分步操作指南。
Core Workflow
核心工作流程
1. Design Furniture with Plane Modules
1. 使用Plane模块设计家具
Define furniture dimensions:
scad
include <woodworkers-lib/std.scad>
thick = 18; // Override default panel thickness if needed
rounding = 2; // Edge rounding radius
wardrobe = [1000, 400, 1200]; // W×D×H in mmDecompose into panels using plane modules:
| Module | Orientation | Parameters for Sizing |
|---|---|---|
| Left side (YZ plane) | f, B, t, b (front, Back, top, bottom) |
| Right side (YZ plane) | f, B, t, b |
| Front face (XZ plane) | l, r, t, b (left, right, top, bottom) |
| Back face (XZ plane) | l, r, t, b |
| Top (XY plane) | l, r, f, B (left, right, front, Back) |
| Bottom (XY plane) | l, r, f, B |
Example: Basic cabinet frame
scad
translate([10, 0, 0]) {
planeLeft(wardrobe, f=-1, t=-1, b=-1);
planeRight(wardrobe, f=-1, t=-1, b=-1);
planeTop(wardrobe, f=-1);
planeBottom(wardrobe, f=-1);
planeBack(wardrobe, thick=4); // Thin fiberboard back
}Add internal components (shelves, dividers):
scad
// Shelf at 400mm height
translate([0, 0, 400])
planeBottom(wardrobe, l=-1, r=-1, f=-1);
// Vertical divider at 500mm from left
translate([500, 0, 0])
planeLeft(wardrobe, f=-1, t=-1, b=-1);定义家具尺寸:
scad
include <woodworkers-lib/std.scad>
thick = 18; // Override default panel thickness if needed
rounding = 2; // Edge rounding radius
wardrobe = [1000, 400, 1200]; // W×D×H in mm使用Plane模块分解为板材:
| 模块 | 方向 | 尺寸参数 |
|---|---|---|
| 左侧(YZ平面) | f, B, t, b(前、后、上、下) |
| 右侧(YZ平面) | f, B, t, b |
| 正面(XZ平面) | l, r, t, b(左、右、上、下) |
| 背面(XZ平面) | l, r, t, b |
| 顶部(XY平面) | l, r, f, B(左、右、前、后) |
| 底部(XY平面) | l, r, f, B |
示例:基础橱柜框架
scad
translate([10, 0, 0]) {
planeLeft(wardrobe, f=-1, t=-1, b=-1);
planeRight(wardrobe, f=-1, t=-1, b=-1);
planeTop(wardrobe, f=-1);
planeBottom(wardrobe, f=-1);
planeBack(wardrobe, thick=4); // Thin fiberboard back
}添加内部组件(搁板、隔板):
scad
// Shelf at 400mm height
translate([0, 0, 400])
planeBottom(wardrobe, l=-1, r=-1, f=-1);
// Vertical divider at 500mm from left
translate([500, 0, 0])
planeLeft(wardrobe, f=-1, t=-1, b=-1);2. Understand Parameter System
2. 理解参数系统
The woodworkers-lib uses three parameter types:
A. Thickness-Relative Increments (multiplied by )
thickParameters:
l, r, t, b, f, B| Value | Effect | Example (thick=18) |
|---|---|---|
| No change | Panel fits exactly |
| Shorten by 1×thick | -18mm (fit inside frame) |
| Extend by 1×thick | +18mm (overlap frame) |
| Shorten by 2×thick | -36mm (fit between two panels) |
Use case: Fit panels inside frames without manual calculation.
scad
// Side panels fit between top and bottom (-1 on top, -1 on bottom)
planeLeft(cabinet, t=-1, b=-1);
// Top panel extends over sides (no reduction)
planeTop(cabinet);B. Absolute Increments (exact mm values)
Parameters:
ll, rr, tt, bb, ff, BB| Value | Effect | Example |
|---|---|---|
| No change | Standard dimension |
| Extend by 10mm | Add 10mm to that edge |
| Shorten by 5mm | Remove 5mm from that edge |
Use case: Precise adjustments, gaps, door clearances.
scad
// Door panel 4mm narrower on each side for clearance
planeFront(cabinet, ll=-4, rr=-4);
// Extend shelf 10mm past frame edge
planeBottom(cabinet, ff=10);C. ABS Edge Banding (visualized and reported)
Parameters:
al, ar, at, ab, af, aB| Value | Effect | Reporting |
|---|---|---|
| No edge band | Dimension only |
| 4mm ABS edge tape | Dimension(4) |
| 2mm edge band | Dimension(2) |
Use case: Specify which edges need edge banding tape (typically front-facing edges).
scad
// Top panel with edge band on front, left, and right
planeTop(wardrobe, f=-1, af=4, al=4, ar=4);
// Output: "plane (top): 992(4) × 378(4,4) × 18"
// ^ ^^
// front left,rightParameter Interaction:
Edge banding affects absolute increments automatically:
scad
planeLeft(wardrobe, f=-1, ff=10, af=4);
// Effective front dimension: base + (-1×thick) + 10 - 4
// The 'af=4' reduces effective dimension by 4mmwoodworkers-lib使用三种类型的参数:
A. 相对厚度增量(乘以)
thick参数:
l, r, t, b, f, B| 数值 | 效果 | 示例(thick=18) |
|---|---|---|
| 无变化 | 板材完全贴合 |
| 缩短1倍厚度 | 减少18mm(嵌入框架内部) |
| 延长1倍厚度 | 增加18mm(覆盖框架) |
| 缩短2倍厚度 | 减少36mm(嵌入两块板材之间) |
使用场景: 无需手动计算,即可让板材嵌入框架内部。
scad
// 侧板嵌入顶板和底板之间(顶部和底部各-1)
planeLeft(cabinet, t=-1, b=-1);
// 顶板覆盖在侧板上方(无缩减)
planeTop(cabinet);B. 绝对增量(精确毫米值)
参数:
ll, rr, tt, bb, ff, BB| 数值 | 效果 | 示例 |
|---|---|---|
| 无变化 | 标准尺寸 |
| 延长10mm | 该边增加10mm |
| 缩短5mm | 该边减少5mm |
使用场景: 精确调整、预留间隙、门板余量。
scad
// 门板左右两侧各窄4mm以预留间隙
planeFront(cabinet, ll=-4, rr=-4);
// 搁板超出框架边缘10mm
planeBottom(cabinet, ff=10);C. ABS封边(可视化并在输出中标记)
参数:
al, ar, at, ab, af, aB| 数值 | 效果 | 输出标记 |
|---|---|---|
| 无封边 | 仅显示尺寸 |
| 4mm ABS封边条 | 尺寸(4) |
| 2mm封边条 | 尺寸(2) |
使用场景: 指定需要粘贴封边条的边缘(通常是正面可见的边缘)。
scad
// 顶板的前、左、右侧均有封边
planeTop(wardrobe, f=-1, af=4, al=4, ar=4);
// 输出:"plane (top): 992(4) × 378(4,4) × 18"
// ^ ^^
// 正面 左侧、右侧参数交互:
封边会自动影响绝对增量:
scad
planeLeft(wardrobe, f=-1, ff=10, af=4);
// 实际正面尺寸:基础尺寸 + (-1×厚度) + 10 - 4
// `af=4`会使实际尺寸减少4mm3. Capture Cut List Output
3. 捕获切割清单输出
Method 1: OpenSCAD GUI Console
- Open file in OpenSCAD
.scad - Press F5 (Preview) or F6 (Render)
- View Console window (bottom panel)
- Copy ECHO lines starting with
"plane (
Method 2: Command Line (Recommended)
bash
undefined方法1:OpenSCAD图形界面控制台
- 在OpenSCAD中打开文件
.scad - 按F5(预览)或F6(渲染)
- 查看控制台窗口(底部面板)
- 复制以开头的ECHO行
"plane (
方法2:命令行(推荐)
bash
undefinedCapture all ECHO output
捕获所有ECHO输出
openscad --render furniture.scad 2>&1 | grep "ECHO: "plane"
openscad --render furniture.scad 2>&1 | grep "ECHO: "plane"
Save to file
保存到文件
openscad --render furniture.scad 2>&1 | grep "ECHO: "plane" > cutlist.txt
openscad --render furniture.scad 2>&1 | grep "ECHO: "plane" > cutlist.txt
Count unique panels
统计唯一板材数量
openscad --render furniture.scad 2>&1 | grep "ECHO: "plane" | sort | uniq -c
**Method 3: Script Integration**
See `scripts/extract_cutlist.py` for automated extraction with CSV export.openscad --render furniture.scad 2>&1 | grep "ECHO: "plane" | sort | uniq -c
**方法3:脚本集成**
请查看`scripts/extract_cutlist.py`,该脚本可自动提取并导出为CSV格式。4. Parse ECHO Output
4. 解析ECHO输出
Output Format:
ECHO: "plane (FACE): DIM1(edges) × DIM2(edges) × THICK"Parsing Rules:
- Three dimensions always present:
DIM1 × DIM2 × THICK - Thickness is smallest dimension (typically 18mm, 16mm, or 4mm)
- Edge bands in parentheses after dimension: = 782mm with one 4mm edge
782(4) - Multiple edges separated by commas: = 378mm with two 4mm edges
378(4,4) - Panel orientation from face name: ,
(left),(right),(top),(bottom),(front)(back)
Examples:
| ECHO Output | Interpretation |
|---|---|
| 18mm thick, 378×1164mm panel, one 4mm edge band on the 1164mm edge |
| 18mm thick, 782×378mm panel, three edge bands (two on 782mm edge, one on 378mm edge) |
| 4mm fiberboard, 1000×1200mm, no edge banding |
| 18mm thick, 964×378mm panel, one 4mm edge band on the 964mm edge |
Identifying edge band locations:
The edge band notation appears on the dimension where the edge is applied:
- = edges on 782mm side (2 edges) + 378mm side (1 edge) = 3 total edges
782(4,4) × 378(4) × 18 - For rectangular panels, this typically means 3 visible edges (4th hidden against wall/back)
输出格式:
ECHO: "plane (FACE): DIM1(edges) × DIM2(edges) × THICK"解析规则:
- 始终包含三个尺寸:
DIM1 × DIM2 × THICK - 厚度是最小的数值(通常为18mm、16mm或4mm)
- 封边标记在尺寸后的括号中:= 782mm的边有一条4mm封边
782(4) - 多条封边用逗号分隔:= 378mm的边有两条4mm封边
378(4,4) - 板材方向由面名称标识:、
(left)、(right)、(top)、(bottom)、(front)(back)
示例:
| ECHO输出 | 解析说明 |
|---|---|
| 厚度18mm,尺寸378×1164mm,1164mm的边有一条4mm封边 |
| 厚度18mm,尺寸782×378mm,782mm的边有两条封边,378mm的边有一条封边,共三条封边 |
| 4mm纤维板,尺寸1000×1200mm,无封边 |
| 厚度18mm,尺寸964×378mm,964mm的边有一条4mm封边 |
识别封边位置:
封边标记会显示在对应尺寸的后方:
- = 782mm边有2条封边 + 378mm边有1条封边 = 共3条封边
782(4,4) × 378(4) × 18 - 对于矩形板材,通常意味着3条可见边(第4条边靠墙或背面,不可见)
5. Export for Optimization Tools
5. 导出至优化工具
Manual CSV Creation:
Create spreadsheet with these columns:
Part Name, Width, Height, Thickness, Quantity, Edge1, Edge2, Edge3, Edge4
Left Side, 378, 1164, 18, 2, 4, 0, 0, 0
Top Panel, 782, 378, 18, 1, 4, 4, 4, 0
Back Panel, 1000, 1200, 4, 1, 0, 0, 0, 0Using Utility Script:
bash
undefined手动创建CSV:
创建包含以下列的电子表格:
部件名称, 宽度, 高度, 厚度, 数量, 边1, 边2, 边3, 边4
左侧板, 378, 1164, 18, 2, 4, 0, 0, 0
顶板, 782, 378, 18, 1, 4, 4, 4, 0
背板, 1000, 1200, 4, 1, 0, 0, 0, 0使用实用脚本:
bash
// 从SCAD文件生成CSV
python3 scripts/extract_cutlist.py furniture.scad -o cutlist.csv
// 导入至CutListOptimizer.com或optiCutter.com上传至CutListOptimizer:
- 访问cutlistoptimizer.com
- 点击“Import” → “CSV File”
- 上传生成的CSV文件
- 设置板材尺寸(例如标准胶合板为2440×1220mm)
- 设置锯片厚度(台锯通常为3mm)
- 点击“Optimize”
支持的输出格式:
- CSV(逗号分隔)
- TSV(制表符分隔)
- JSON(用于程序集成)
请查看获取参考格式。
examples/cutlist_export.csvGenerate CSV from SCAD file
资源
—
examples/
python3 scripts/extract_cutlist.py furniture.scad -o cutlist.csv
- - 库文档中的完整衣柜设计示例,带有注释
wardrobe_example.scad - - 不同橱柜配置及其切割清单输出
cabinet_variations.scad - - 用于导入CutListOptimizer的示例CSV格式
cutlist_export.csv
Import to CutListOptimizer.com or optiCutter.com
scripts/
**Upload to CutListOptimizer:**
1. Visit [cutlistoptimizer.com](https://www.cutlistoptimizer.com/)
2. Click "Import" → "CSV File"
3. Upload generated CSV
4. Set sheet dimensions (e.g., 2440×1220mm for standard plywood)
5. Set blade thickness (typically 3mm for table saw)
6. Click "Optimize"
**Output formats supported:**
- CSV (comma-separated)
- TSV (tab-separated)
- JSON (for programmatic integration)
See `examples/cutlist_export.csv` for reference format.- - 用于自动解析ECHO输出并生成CSV的Python脚本
extract_cutlist.py- 使用方法:
python3 extract_cutlist.py input.scad -o cutlist.csv
- 使用方法:
- - 检查重复板材并计算总用料
validate_cutlist.py- 使用方法:
python3 validate_cutlist.py cutlist.csv
- 使用方法:
Resources
references/
examples/
—
- - Complete wardrobe design from library README with annotations
wardrobe_example.scad - - Different cabinet configurations and cut list outputs
cabinet_variations.scad - - Sample CSV format for CutListOptimizer import
cutlist_export.csv
- - 完整的参数文档,包含可视化图表
parameter_reference.md - - 封边最佳实践及标记示例
edge_banding_guide.md
scripts/
预期结果
- - Python script to automate ECHO parsing and CSV generation
extract_cutlist.py- Usage:
python3 extract_cutlist.py input.scad -o cutlist.csv
- Usage:
- - Checks for duplicate panels and calculates total material
validate_cutlist.py- Usage:
python3 validate_cutlist.py cutlist.csv
- Usage:
成功生成切割清单:
✅ 切割清单生成成功
来源:workshop/cabinets/workbench-cabinet.scad
找到板材数量:15
唯一板材数量:8
板材明细:
- 18mm板材:12块(总面积:4.2平方米)
- 4mm板材:3块(总面积:1.8平方米)
所需封边条:
- 4mm ABS封边条:18条(总长度:24.5米)
输出已保存:cutlist.csv
可导入至CutListOptimizer进行优化
下一步操作:
1. 将cutlist.csv上传至优化工具
2. 设置板材尺寸(标准为2440×1220mm)
3. 生成切割示意图
4. 计算材料成本验证警告:
⚠️ 验证警告
检测到潜在问题:
1. 重复板材:"378 × 1164 × 18"出现4次
→ 确认数量是否正确(非意外重复)
2. 非标准厚度:发现"12mm"板材(预期为18mm、16mm或4mm)
→ 验证板材规格
3. 超大型板材:"1200 × 2400 × 18"超出标准板材尺寸
→ 可能需要拼接或特殊定制
4. 缺失封边:"front (door)"面板未设置ABS参数
→ 若为可见边缘,请添加af/al/ar/at等参数
下单前请检查设计。references/
要求
- - Complete parameter documentation with visual diagrams
parameter_reference.md - - Edge banding best practices and notation examples
edge_banding_guide.md
软件:
- OpenSCAD 2021.01+(已测试2025.12.14开发快照版本)
- 已安装woodworkers-lib库:
~/Documents/OpenSCAD/libraries/woodworkers-lib/ - (可选)Python 3.8+(用于运行实用脚本)
安装方法:
bash
cd ~/Documents/OpenSCAD/libraries/
git clone https://github.com/fxdave/woodworkers-lib.git知识储备:
- 基础OpenSCAD语法(模块、translate、include)
- 家具结构知识(框架、板材、搁板)
- 熟悉胶合板/MDF板材(标准厚度:18mm、16mm、12mm、4mm)
Expected Outcomes
需要避免的问题
Successful Cut List Generation:
✅ Cut List Generated Successfully
Source: workshop/cabinets/workbench-cabinet.scad
Panels found: 15
Unique panels: 8
Panel breakdown:
- 18mm panels: 12 (total area: 4.2 m²)
- 4mm panels: 3 (total area: 1.8 m²)
Edge banding required:
- 4mm ABS tape: 18 edges (total length: 24.5m)
Output saved: cutlist.csv
Ready for import to CutListOptimizer
Next steps:
1. Upload cutlist.csv to optimization tool
2. Set sheet size (2440×1220mm standard)
3. Generate cutting diagrams
4. Calculate material costValidation Warnings:
⚠️ Validation Warnings
Potential issues detected:
1. Duplicate panel: "378 × 1164 × 18" appears 4 times
→ Confirm quantity is correct (not accidental duplication)
2. Unusual thickness: "12mm" found (expected 18mm, 16mm, or 4mm)
→ Verify panel specification
3. Large panel: "1200 × 2400 × 18" exceeds standard sheet size
→ May require joining or special order
4. Missing edge bands: Panel "front (door)" has no ABS parameters
→ Add af/al/ar/at parameters if visible edge
Review design before ordering materials.- 使用而非
cube()模块(无切割清单输出)plane*() - 嵌套板材时忘记使用厚度调整(尺寸错误)
-1 - 错误混合绝对增量和相对厚度增量
- 紧密配合的接头未考虑封边厚度
- 忽略重复板材警告(过度采购材料)
- 使用非标准厚度但未确认供应商是否有货
- 超出标准板材尺寸(2440×1220mm)却未规划拼接
- 可见边缘缺失封边(外观不专业)
- 下单前未对照3D模型验证切割清单
- 捕获旧/过期渲染的ECHO输出(尺寸已过时)
Requirements
注意事项
Software:
- OpenSCAD 2021.01+ (tested with 2025.12.14 development snapshot)
- woodworkers-lib installed:
~/Documents/OpenSCAD/libraries/woodworkers-lib/ - (Optional) Python 3.8+ for utility scripts
Installation:
bash
cd ~/Documents/OpenSCAD/libraries/
git clone https://github.com/fxdave/woodworkers-lib.gitKnowledge:
- Basic OpenSCAD syntax (modules, translate, include)
- Understanding of furniture construction (frames, panels, shelves)
- Familiarity with plywood/MDF sheet goods (standard thicknesses: 18mm, 16mm, 12mm, 4mm)
参数命名规则:
- = 前,
f= 后(大写B以区分B= 下)b - 单字母 = 相对厚度,双字母 = 绝对尺寸(例如vs
l)ll - 前缀 = ABS封边(例如
a= 左侧ABS封边)al
封边最佳实践:
- 所有正面可见边缘均需粘贴封边
- 靠墙的背面和隐藏的内部边缘无需封边
- 标准宽度:19mm、22mm、40mm(ECHO标记中的4mm指ABS封边条的厚度)
- 封边木纹方向与板材一致,以获得专业外观
材料标准厚度:
- 胶合板/MDF:18mm(最常见)、16mm、12mm、9mm、6mm
- 纤维板(背板):4mm、3mm
- 使用非标准厚度设计前,请确认供应商是否有货
性能:
- woodworkers-lib渲染速度快(使用基础立方体和hull()圆角)
- 复杂家具(20块以上板材):预览<5秒,完整渲染<30秒
- ECHO输出生成:即时(预览/渲染时自动生成)
故障排除:
- 无ECHO输出:检查是否包含
include <woodworkers-lib/std.scad> - 尺寸错误:验证是否与所用材料厚度匹配
thick=18 - 封边缺失:确保在正确的plane模块上指定了参数
a* - 板材重叠:检查相对厚度参数()
l, r, t, b, f, B
Red Flags to Avoid
—
- Using instead of
cube()modules (no cut list output)plane*() - Forgetting thickness adjustments for nested panels (dimensions wrong)
-1 - Mixing absolute increments and thickness increments incorrectly
- Not accounting for edge banding thickness in tight-fit joints
- Ignoring duplicate panel warnings (over-ordering material)
- Using non-standard thicknesses without supplier confirmation
- Exceeding standard sheet size (2440×1220mm) without planning joins
- Missing edge bands on visible edges (unprofessional finish)
- Not validating cut list against 3D model before ordering
- Capturing ECHO output from old/stale render (dimensions outdated)
—
Notes
—
Parameter Naming:
- = front,
f= Back (capital B to distinguish fromB= bottom)b - Single letter = thickness-relative, double letter = absolute (e.g., vs
l)ll - prefix = ABS edge banding (e.g.,
a= ABS left)al
Edge Banding Best Practices:
- Apply to all visible front-facing edges
- Skip back edges (against walls) and hidden internal edges
- Standard widths: 19mm, 22mm, 40mm (4mm thickness for ECHO notation means ABS tape thickness)
- Use matching wood grain direction for professional appearance
Material Standard Thicknesses:
- Plywood/MDF: 18mm (most common), 16mm, 12mm, 9mm, 6mm
- Fiberboard (backs): 4mm, 3mm
- Verify supplier availability before designing with non-standard thickness
Performance:
- woodworkers-lib renders fast (uses basic cubes with hull() rounding)
- Complex furniture (20+ panels): <5 seconds preview, <30 seconds full render
- ECHO output generation: instant (happens during preview/render)
Troubleshooting:
- If no ECHO output: Check is present
include <woodworkers-lib/std.scad> - If dimensions wrong: Verify matches your material thickness
thick=18 - If edge bands missing: Ensure parameters specified on correct plane module
a* - If panels overlap: Check thickness-relative parameters ()
l, r, t, b, f, B
—