openscad-cutlist-woodworkers

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

OpenSCAD 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:
  • 18 × 378 × 1164(4)
    = 18mm thick panel, 378mm × 1164mm, with 4mm edge band on one edge
  • 782(4,4) × 378(4) × 18
    = 18mm thick panel, 782mm × 378mm, with edge bands on 3 edges (4mm each)
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"
说明:
  • 18 × 378 × 1164(4)
    = 厚度18mm的板材,尺寸378mm × 1164mm,其中一条边有4mm封边
  • 782(4,4) × 378(4) × 18
    = 厚度18mm的板材,尺寸782mm × 378mm,其中三条边各有4mm封边

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 mm
Decompose into panels using plane modules:
ModuleOrientationParameters for Sizing
planeLeft()
Left side (YZ plane)f, B, t, b (front, Back, top, bottom)
planeRight()
Right side (YZ plane)f, B, t, b
planeFront()
Front face (XZ plane)l, r, t, b (left, right, top, bottom)
planeBack()
Back face (XZ plane)l, r, t, b
planeTop()
Top (XY plane)l, r, f, B (left, right, front, Back)
planeBottom()
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模块分解为板材:
模块方向尺寸参数
planeLeft()
左侧(YZ平面)f, B, t, b(前、后、上、下)
planeRight()
右侧(YZ平面)f, B, t, b
planeFront()
正面(XZ平面)l, r, t, b(左、右、上、下)
planeBack()
背面(XZ平面)l, r, t, b
planeTop()
顶部(XY平面)l, r, f, B(左、右、前、后)
planeBottom()
底部(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
thick
)
Parameters:
l, r, t, b, f, B
ValueEffectExample (thick=18)
0
No changePanel fits exactly
-1
Shorten by 1×thick-18mm (fit inside frame)
1
Extend by 1×thick+18mm (overlap frame)
-2
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
ValueEffectExample
0
No changeStandard dimension
10
Extend by 10mmAdd 10mm to that edge
-5
Shorten by 5mmRemove 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
ValueEffectReporting
0
No edge bandDimension only
4
4mm ABS edge tapeDimension(4)
2
2mm edge bandDimension(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,right
Parameter 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 4mm
woodworkers-lib使用三种类型的参数:
A. 相对厚度增量(乘以
thick
参数:
l, r, t, b, f, B
数值效果示例(thick=18)
0
无变化板材完全贴合
-1
缩短1倍厚度减少18mm(嵌入框架内部)
1
延长1倍厚度增加18mm(覆盖框架)
-2
缩短2倍厚度减少36mm(嵌入两块板材之间)
使用场景: 无需手动计算,即可让板材嵌入框架内部。
scad
// 侧板嵌入顶板和底板之间(顶部和底部各-1)
planeLeft(cabinet, t=-1, b=-1);

// 顶板覆盖在侧板上方(无缩减)
planeTop(cabinet);
B. 绝对增量(精确毫米值)
参数:
ll, rr, tt, bb, ff, BB
数值效果示例
0
无变化标准尺寸
10
延长10mm该边增加10mm
-5
缩短5mm该边减少5mm
使用场景: 精确调整、预留间隙、门板余量。
scad
// 门板左右两侧各窄4mm以预留间隙
planeFront(cabinet, ll=-4, rr=-4);

// 搁板超出框架边缘10mm
planeBottom(cabinet, ff=10);
C. ABS封边(可视化并在输出中标记)
参数:
al, ar, at, ab, af, aB
数值效果输出标记
0
无封边仅显示尺寸
4
4mm ABS封边条尺寸(4)
2
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`会使实际尺寸减少4mm

3. Capture Cut List Output

3. 捕获切割清单输出

Method 1: OpenSCAD GUI Console
  1. Open
    .scad
    file in OpenSCAD
  2. Press F5 (Preview) or F6 (Render)
  3. View Console window (bottom panel)
  4. Copy ECHO lines starting with
    "plane (
Method 2: Command Line (Recommended)
bash
undefined
方法1:OpenSCAD图形界面控制台
  1. 在OpenSCAD中打开
    .scad
    文件
  2. 按F5(预览)或F6(渲染)
  3. 查看控制台窗口(底部面板)
  4. 复制以
    "plane (
    开头的ECHO行
方法2:命令行(推荐)
bash
undefined

Capture 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:
  1. Three dimensions always present:
    DIM1 × DIM2 × THICK
  2. Thickness is smallest dimension (typically 18mm, 16mm, or 4mm)
  3. Edge bands in parentheses after dimension:
    782(4)
    = 782mm with one 4mm edge
  4. Multiple edges separated by commas:
    378(4,4)
    = 378mm with two 4mm edges
  5. Panel orientation from face name:
    (left)
    ,
    (right)
    ,
    (top)
    ,
    (bottom)
    ,
    (front)
    ,
    (back)
Examples:
ECHO OutputInterpretation
18 × 378 × 1164(4)
18mm thick, 378×1164mm panel, one 4mm edge band on the 1164mm edge
782(4,4) × 378(4) × 18
18mm thick, 782×378mm panel, three edge bands (two on 782mm edge, one on 378mm edge)
1000 × 4 × 1200
4mm fiberboard, 1000×1200mm, no edge banding
964(4) × 378 × 18
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:
  • 782(4,4) × 378(4) × 18
    = edges on 782mm side (2 edges) + 378mm side (1 edge) = 3 total edges
  • For rectangular panels, this typically means 3 visible edges (4th hidden against wall/back)
输出格式:
ECHO: "plane (FACE):  DIM1(edges) × DIM2(edges) × THICK"
解析规则:
  1. 始终包含三个尺寸:
    DIM1 × DIM2 × THICK
  2. 厚度是最小的数值(通常为18mm、16mm或4mm)
  3. 封边标记在尺寸后的括号中
    782(4)
    = 782mm的边有一条4mm封边
  4. 多条封边用逗号分隔
    378(4,4)
    = 378mm的边有两条4mm封边
  5. 板材方向由面名称标识
    (left)
    (right)
    (top)
    (bottom)
    (front)
    (back)
示例:
ECHO输出解析说明
18 × 378 × 1164(4)
厚度18mm,尺寸378×1164mm,1164mm的边有一条4mm封边
782(4,4) × 378(4) × 18
厚度18mm,尺寸782×378mm,782mm的边有两条封边,378mm的边有一条封边,共三条封边
1000 × 4 × 1200
4mm纤维板,尺寸1000×1200mm,无封边
964(4) × 378 × 18
厚度18mm,尺寸964×378mm,964mm的边有一条4mm封边
识别封边位置:
封边标记会显示在对应尺寸的后方:
  • 782(4,4) × 378(4) × 18
    = 782mm边有2条封边 + 378mm边有1条封边 = 共3条封边
  • 对于矩形板材,通常意味着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, 0
Using 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:
  1. 访问cutlistoptimizer.com
  2. 点击“Import” → “CSV File”
  3. 上传生成的CSV文件
  4. 设置板材尺寸(例如标准胶合板为2440×1220mm)
  5. 设置锯片厚度(台锯通常为3mm)
  6. 点击“Optimize”
支持的输出格式:
  • CSV(逗号分隔)
  • TSV(制表符分隔)
  • JSON(用于程序集成)
请查看
examples/cutlist_export.csv
获取参考格式。

Generate CSV from SCAD file

资源

examples/

python3 scripts/extract_cutlist.py furniture.scad -o cutlist.csv
  • wardrobe_example.scad
    - 库文档中的完整衣柜设计示例,带有注释
  • cabinet_variations.scad
    - 不同橱柜配置及其切割清单输出
  • cutlist_export.csv
    - 用于导入CutListOptimizer的示例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.
  • extract_cutlist.py
    - 用于自动解析ECHO输出并生成CSV的Python脚本
    • 使用方法:
      python3 extract_cutlist.py input.scad -o cutlist.csv
  • validate_cutlist.py
    - 检查重复板材并计算总用料
    • 使用方法:
      python3 validate_cutlist.py cutlist.csv

Resources

references/

examples/

  • wardrobe_example.scad
    - Complete wardrobe design from library README with annotations
  • cabinet_variations.scad
    - Different cabinet configurations and cut list outputs
  • cutlist_export.csv
    - Sample CSV format for CutListOptimizer import
  • parameter_reference.md
    - 完整的参数文档,包含可视化图表
  • edge_banding_guide.md
    - 封边最佳实践及标记示例

scripts/

预期结果

  • extract_cutlist.py
    - Python script to automate ECHO parsing and CSV generation
    • Usage:
      python3 extract_cutlist.py input.scad -o cutlist.csv
  • validate_cutlist.py
    - Checks for duplicate panels and calculates total material
    • Usage:
      python3 validate_cutlist.py cutlist.csv
成功生成切割清单:
✅ 切割清单生成成功

来源: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/

要求

  • parameter_reference.md
    - Complete parameter documentation with visual diagrams
  • edge_banding_guide.md
    - Edge banding best practices and notation examples
软件:
  • 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 cost
Validation 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.git
Knowledge:
  • 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
    = 下)
  • 单字母 = 相对厚度,双字母 = 绝对尺寸(例如
    l
    vs
    ll
  • a
    前缀 = ABS封边(例如
    al
    = 左侧ABS封边)
封边最佳实践:
  • 所有正面可见边缘均需粘贴封边
  • 靠墙的背面和隐藏的内部边缘无需封边
  • 标准宽度: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
    cube()
    instead of
    plane*()
    modules (no cut list output)
  • Forgetting
    -1
    thickness adjustments for nested panels (dimensions wrong)
  • 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:
  • f
    = front,
    B
    = Back (capital B to distinguish from
    b
    = bottom)
  • Single letter = thickness-relative, double letter = absolute (e.g.,
    l
    vs
    ll
    )
  • a
    prefix = ABS edge banding (e.g.,
    al
    = ABS left)
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
    include <woodworkers-lib/std.scad>
    is present
  • If dimensions wrong: Verify
    thick=18
    matches your material thickness
  • If edge bands missing: Ensure
    a*
    parameters specified on correct plane module
  • If panels overlap: Check thickness-relative parameters (
    l, r, t, b, f, B
    )