npx skills add https://github.com/mitsuhiko/agent-stuff --skill openscad创建、验证和导出 OpenSCAD 3D 模型。支持参数自定义、多角度可视化预览,以及为 MakerWorld 等 3D 打印平台导出 STL 文件。
必须安装 OpenSCAD。通过 Homebrew 安装:
brew install openscad
此技能在 tools/ 目录下提供了几个工具:
# 生成单张预览图片
./tools/preview.sh model.scad output.png [--camera=x,y,z,tx,ty,tz,dist] [--size=800x600]
# 生成多角度预览(前、后、左、右、顶、等轴测)
./tools/multi-preview.sh model.scad output_dir/
# 导出为 STL 用于 3D 打印
./tools/export-stl.sh model.scad output.stl [-D 'param=value']
# 从 OpenSCAD 文件中提取可自定义参数
./tools/extract-params.sh model.scad
# 检查语法错误和警告
./tools/validate.sh model.scad
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
在创建或修改 OpenSCAD 模型后,务必进行可视化验证。
编写或编辑任何 OpenSCAD 文件后:
multi-preview.sh 生成多角度预览read 工具查看每张生成的图片这能捕获仅靠语法验证无法检测到的问题:
切勿在未从多个角度视觉确认模型外观正确的情况下交付 OpenSCAD 模型。
编写 OpenSCAD 代码,在顶部定义可自定义参数:
// Customizable parameters
wall_thickness = 2; // [1:0.5:5] Wall thickness in mm
width = 50; // [20:100] Width in mm
height = 30; // [10:80] Height in mm
rounded = true; // Add rounded corners
// Model code below
module main_shape() {
if (rounded) {
minkowski() {
cube([width - 4, width - 4, height - 2]);
sphere(r = 2);
}
} else {
cube([width, width, height]);
}
}
difference() {
main_shape();
translate([wall_thickness, wall_thickness, wall_thickness])
scale([1 - 2*wall_thickness/width, 1 - 2*wall_thickness/width, 1])
main_shape();
}
参数注释格式:
// [min:max] - 数值范围// [min:step:max] - 带步长的数值范围// [opt1, opt2, opt3] - 下拉选项// Description text - 纯描述文本./tools/validate.sh model.scad
生成预览图片以视觉验证模型:
./tools/multi-preview.sh model.scad ./previews/
这将从多个角度创建 PNG 图片。使用 read 工具查看它们。
./tools/export-stl.sh model.scad output.stl
# 使用自定义参数:
./tools/export-stl.sh model.scad output.stl -D 'width=60' -D 'height=40'
用于预览的常用相机角度:
--camera=0,0,0,45,0,45,200--camera=0,0,0,90,0,0,200--camera=0,0,0,0,0,0,200--camera=0,0,0,90,0,90,200格式:x,y,z,rotx,roty,rotz,distance
对于 MakerWorld,通常需要:
export-stl.sh 导出的 STL 文件考虑创建一个包含元数据的 model.json:
{
"name": "Model Name",
"description": "Description for MakerWorld",
"parameters": [...],
"tags": ["functional", "container", "organizer"]
}
# 1. 创建模型(编写 .scad 文件)
# 2. 验证语法
./tools/validate.sh box.scad
# 3. 生成多角度预览
./tools/multi-preview.sh box.scad ./previews/
# 4. 重要:查看并验证所有预览图片
# 使用 read 工具检查每个 PNG 文件以进行视觉检查:
# - previews/box_front.png
# - previews/box_back.png
# - previews/box_left.png
# - previews/box_right.png
# - previews/box_top.png
# - previews/box_iso.png
# 查找几何问题、错位或意外结果。
# 如果发现任何问题,返回步骤 1 并修复它!
# 5. 提取并审查参数
./tools/extract-params.sh box.scad
# 6. 使用默认参数导出 STL
./tools/export-stl.sh box.scad box.stl
# 7. 使用自定义参数导出 STL
./tools/export-stl.sh box.scad box_large.stl -D 'width=80' -D 'height=60'
请记住:切勿跳过可视化验证步骤。许多问题(错误的尺寸、布尔运算错误、反转的几何体)只有在实际查看渲染后的模型时才能发现。
cube([x, y, z]);
sphere(r = radius);
cylinder(h = height, r = radius);
cylinder(h = height, r1 = bottom_r, r2 = top_r); // cone
translate([x, y, z]) object();
rotate([rx, ry, rz]) object();
scale([sx, sy, sz]) object();
mirror([x, y, z]) object();
union() { a(); b(); } // 合并
difference() { a(); b(); } // 从 a 中减去 b
intersection() { a(); b(); } // 仅重叠部分
linear_extrude(height) 2d_shape();
rotate_extrude() 2d_shape();
hull() { objects(); } // 凸包
minkowski() { a(); b(); } // 闵可夫斯基和(圆角)
circle(r = radius);
square([x, y]);
polygon(points = [[x1,y1], [x2,y2], ...]);
text("string", size = 10);
每周安装数
146
代码仓库
GitHub 星标数
1.7K
首次出现
2026年1月23日
安全审计
安装于
codex133
opencode131
gemini-cli128
github-copilot125
amp121
kimi-cli119
Create, validate, and export OpenSCAD 3D models. Supports parameter customization, visual preview from multiple angles, and STL export for 3D printing platforms like MakerWorld.
OpenSCAD must be installed. Install via Homebrew:
brew install openscad
This skill provides several tools in the tools/ directory:
# Generate a single preview image
./tools/preview.sh model.scad output.png [--camera=x,y,z,tx,ty,tz,dist] [--size=800x600]
# Generate multi-angle preview (front, back, left, right, top, iso)
./tools/multi-preview.sh model.scad output_dir/
# Export to STL for 3D printing
./tools/export-stl.sh model.scad output.stl [-D 'param=value']
# Extract customizable parameters from an OpenSCAD file
./tools/extract-params.sh model.scad
# Check for syntax errors and warnings
./tools/validate.sh model.scad
Always validate your OpenSCAD models visually after creating or modifying them.
After writing or editing any OpenSCAD file:
multi-preview.shread toolThis catches issues that syntax validation alone cannot detect:
Never deliver an OpenSCAD model without visually confirming it looks correct from multiple angles.
Write OpenSCAD code with customizable parameters at the top:
// Customizable parameters
wall_thickness = 2; // [1:0.5:5] Wall thickness in mm
width = 50; // [20:100] Width in mm
height = 30; // [10:80] Height in mm
rounded = true; // Add rounded corners
// Model code below
module main_shape() {
if (rounded) {
minkowski() {
cube([width - 4, width - 4, height - 2]);
sphere(r = 2);
}
} else {
cube([width, width, height]);
}
}
difference() {
main_shape();
translate([wall_thickness, wall_thickness, wall_thickness])
scale([1 - 2*wall_thickness/width, 1 - 2*wall_thickness/width, 1])
main_shape();
}
Parameter comment format:
// [min:max] - numeric range// [min:step:max] - numeric range with step// [opt1, opt2, opt3] - dropdown options// Description text - plain description./tools/validate.sh model.scad
Generate preview images to visually validate the model:
./tools/multi-preview.sh model.scad ./previews/
This creates PNG images from multiple angles. Use the read tool to view them.
./tools/export-stl.sh model.scad output.stl
# With custom parameters:
./tools/export-stl.sh model.scad output.stl -D 'width=60' -D 'height=40'
Common camera angles for previews:
--camera=0,0,0,45,0,45,200--camera=0,0,0,90,0,0,200--camera=0,0,0,0,0,0,200--camera=0,0,0,90,0,90,200Format: x,y,z,rotx,roty,rotz,distance
For MakerWorld, you typically need:
export-stl.shConsider creating a model.json with metadata:
{
"name": "Model Name",
"description": "Description for MakerWorld",
"parameters": [...],
"tags": ["functional", "container", "organizer"]
}
# 1. Create the model (write .scad file)
# 2. Validate syntax
./tools/validate.sh box.scad
# 3. Generate multi-angle previews
./tools/multi-preview.sh box.scad ./previews/
# 4. IMPORTANT: View and validate ALL preview images
# Use the read tool on each PNG file to visually inspect:
# - previews/box_front.png
# - previews/box_back.png
# - previews/box_left.png
# - previews/box_right.png
# - previews/box_top.png
# - previews/box_iso.png
# Look for geometry issues, misalignments, or unexpected results.
# If anything looks wrong, go back to step 1 and fix it!
# 5. Extract and review parameters
./tools/extract-params.sh box.scad
# 6. Export STL with default parameters
./tools/export-stl.sh box.scad box.stl
# 7. Export STL with custom parameters
./tools/export-stl.sh box.scad box_large.stl -D 'width=80' -D 'height=60'
Remember : Never skip the visual validation step. Many issues (wrong dimensions, boolean operation errors, inverted geometry) are only visible when you actually look at the rendered model.
cube([x, y, z]);
sphere(r = radius);
cylinder(h = height, r = radius);
cylinder(h = height, r1 = bottom_r, r2 = top_r); // cone
translate([x, y, z]) object();
rotate([rx, ry, rz]) object();
scale([sx, sy, sz]) object();
mirror([x, y, z]) object();
union() { a(); b(); } // combine
difference() { a(); b(); } // subtract b from a
intersection() { a(); b(); } // overlap only
linear_extrude(height) 2d_shape();
rotate_extrude() 2d_shape();
hull() { objects(); } // convex hull
minkowski() { a(); b(); } // minkowski sum (rounding)
circle(r = radius);
square([x, y]);
polygon(points = [[x1,y1], [x2,y2], ...]);
text("string", size = 10);
Weekly Installs
146
Repository
GitHub Stars
1.7K
First Seen
Jan 23, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
codex133
opencode131
gemini-cli128
github-copilot125
amp121
kimi-cli119
shadcn/ui 框架:React 组件库与 UI 设计系统,Tailwind CSS 最佳实践
65,300 周安装