惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
Schneier on Security
Schneier on Security
H
Help Net Security
PCI Perspectives
PCI Perspectives
博客园 - 司徒正美
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
V
Visual Studio Blog
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LINUX DO - 最新话题
GbyAI
GbyAI
IT之家
IT之家
TaoSecurity Blog
TaoSecurity Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
N
News and Events Feed by Topic
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
美团技术团队
T
Troy Hunt's Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
Cloudbric
Cloudbric
A
About on SuperTechFans
Recorded Future
Recorded Future
Microsoft Security Blog
Microsoft Security Blog
阮一峰的网络日志
阮一峰的网络日志
H
Hacker News: Front Page
Forbes - Security
Forbes - Security
Webroot Blog
Webroot Blog
D
DataBreaches.Net
L
LangChain Blog
S
Schneier on Security
博客园_首页
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
N
News | PayPal Newsroom
Hacker News - Newest:
Hacker News - Newest: "LLM"
爱范儿
爱范儿
量子位
T
The Exploit Database - CXSecurity.com
博客园 - 【当耐特】
T
Threatpost
The Hacker News
The Hacker News
N
News and Events Feed by Topic
罗磊的独立博客
Spread Privacy
Spread Privacy
Hacker News: Ask HN
Hacker News: Ask HN

博客园 - 我才是银古

第16章:常见问题、排错与最佳实践 第15章:扩展生态、MCAD 与外部集成 第12章:实战案例:机械结构与 3D 打印零件 第14章:构建、测试、调试与贡献流程 第13章:OpenSCAD 源码架构与核心执行流程 第11章:预览、渲染、网格精度与性能优化 第09章:列表推导、递归与算法建模 第08章:参数化零件库与复用设计 第10章:导入导出、命令行与自动化 第06章:CSG 布尔建模方法 第07章:二维图形、拉伸、旋转与投影 第05章:基础几何、坐标系与变换 第04章:参数、变量、函数、模块与作用域 OpenSCAD 教程目录 第03章:OpenSCAD 语言基础 第01章:OpenSCAD 项目全景与学习路线 第02章:源码获取、编译与开发环境配置 第01章:OCCT项目全景与学习路线 第18章:二次开发实战与综合案例 第17章:与 Qt VTK Python pythonOCC 生态集成 第18章:综合实战案例 第17章:数据交换与协同 第16章:源码架构与二次开发 第15章:插件与自定义工作台开发 第14章:Python脚本宏与自动化 第13章:FEM仿真分析 第12章:CAM数控加工 第11章:SurfaceMesh与逆向工程 第10章:Draft二维绘图与BIM建筑 第09章:工程图TechDraw 第07章:参数化表达式与Spreadsheet 第08章:装配设计Assembly 第06章:Part工作台与几何内核 第05章:PartDesign实体特征建模 第04章:草图Sketcher约束建模 第02章:安装版本与工作环境配置 第03章:界面工作台与基础操作 第01章:项目全景与学习路线 第十二章:插件开发、研究功能与最佳实践 第十章:定时任务与自动化(Cron) 第七章:技能、记忆与自学习闭环 第八章:MCP 集成与上下文文件 第六章:工具系统与终端后端 第五章:模型供应商与配置体系 Hermes Agent 教程目录 第十一章:语音、视觉、浏览器与子代理协作 第四章:CLI/TUI 与会话管理 第十二章:学习路线、实战方案与最佳实践 第十一章:源码结构、开发调试与插件开发 第十章:自动化、远程访问、日志与排障 第九章:Control UI、节点、Canvas 与语音能力 第七章:工具、技能、插件与能力扩展 第八章:安全模型、访问控制与沙箱实践 第六章:Agent 工作区、会话与多智能体路由 第五章:多通道消息接入与聊天平台配置 第四章:配置体系、模型接入与认证管理 第三章:Gateway 架构、协议与运行机制 第二章:安装、环境准备与快速上手 第一章:OpenClaw 项目概览与核心定位 oh-my-openagent 教程目录 09-命令模型回退与配置参考 10-实战案例最佳实践与故障排除 05-工作模式-Ultrawork-Prometheus-Atlas 08-Hooks与MCP系统 06-Category与Skill系统 07-核心工具链 04-智能体全景详解 03-安装与环境配置 02-整体架构与多模型编排机制 01-项目简介与核心理念 01-项目概览与学习路线 02-安装部署与工具适配 03-Skill机制与using-superpowers 05-TDD系统化调试与完成前验证 04-需求澄清方案设计与计划编写 07-并行智能体子智能体与Git-Worktree 第六章:代码审查、反馈处理与分支收尾 08-中国特色Skills与本土团队落地 09-MCP构建工作流执行与自定义Skill 第23章:FreeCAD-Python-API Clipper2 C# 源码解读教程 第19章:PolyTree 多边形树结构 第20章:实际应用与最佳实践 第18章:Minkowski 和与差 第17章:RectClip 矩形裁剪优化 第16章:ClipperOffset 偏移类详解 第15章:填充规则详解 第14章:布尔运算执行流程 第13章:ClipperD 浮点裁剪类 第11章:OutRec 与 OutPt 输出结构 第9章:Active 活动边结构 第10章:Vertex 顶点与 LocalMinima 局部极小值 第12章:Clipper64 裁剪类详解 第7章:高精度运算与128位整数 第8章:ClipperBase 基类详解 第5章:枚举类型与常量定义 第6章:InternalClipper 内部工具类 第2章:核心数据结构 - Point64、PointD 第3章:路径与多边形表示 - Path64、PathD、Paths64、PathsD 第4章:矩形边界 - Rect64、RectD
第02章:安装、环境配置与开发工作流
我才是银古 · 2026-05-06 · via 博客园 - 我才是银古

第02章:安装、环境配置与开发工作流

1. 安装方式概览

OpenSCAD 可运行在 Linux/UNIX、Windows 和 macOS。普通学习者优先安装官方二进制版本;需要跟踪新功能、修复 bug 或研究源码时再从源代码构建。官方 README 指向 https://www.openscad.org/downloads.html 获取安装包。

常见安装方式包括:

  • Windows:下载安装包或便携包,安装后可通过图形界面或命令行调用 openscad.exe
  • macOS:下载 .dmg,也可通过 Homebrew 安装;源码构建需要 Xcode 和 Homebrew 依赖。
  • Linux:发行版仓库通常提供稳定版本;也可使用 AppImage、Flatpak、Snap 或源码构建。
  • Nix:官方仓库包含 Nix 开发 shell,适合隔离式构建。
  • WebAssembly:官方仓库支持 headless wasm 构建,适合浏览器或 Node 集成。

2. 图形界面初识

打开 OpenSCAD 后通常会看到脚本编辑区、三维视图区、控制台输出区和菜单工具栏。基本工作流是:

  1. 在编辑区写 .scad 脚本。
  2. 按 F5 执行预览,快速检查 CSG 结构和形状。
  3. 按 F6 执行完整渲染,得到可导出的真实网格。
  4. 使用导出命令保存 STL、OFF、3MF、AMF、SVG、DXF、PNG 等格式。
  5. 根据控制台警告修复非流形、空对象、参数错误或渲染过慢问题。

F5 与 F6 是理解 OpenSCAD 的关键。F5 更像快速图形预览,依赖 OpenCSG 等机制,可交互但不一定生成最终网格。F6 会进行真实几何计算,通常更慢,但用于导出制造文件。

3. 第一个模型

下面是最小模型:

cube([20, 10, 5], center = true);

这个模型创建一个居中的长方体。将其扩展成带孔支架:

$fn = 64;

length = 60;
width = 20;
thickness = 6;
hole_d = 5;

module rounded_slot_body() {
    hull() {
        translate([-length/2 + width/2, 0, 0]) cylinder(h = thickness, d = width, center = true);
        translate([ length/2 - width/2, 0, 0]) cylinder(h = thickness, d = width, center = true);
    }
}

difference() {
    rounded_slot_body();
    for (x = [-20, 20])
        translate([x, 0, 0]) cylinder(h = thickness + 1, d = hole_d, center = true);
}

这个例子已经体现了 OpenSCAD 的核心:参数、模块、循环、变换、基本体、布尔差集和圆弧分辨率。

4. 命令行基础

OpenSCAD 可以作为命令行工具使用。常见命令形式:

openscad -o output.stl model.scad
openscad -o preview.png --imgsize=1200,800 model.scad
openscad -D 'width=80' -D 'height=30' -o bracket_80x30.stl bracket.scad

命令行适合批量导出、自动测试和 CI。-D 会在命令行覆盖变量,适合生成不同规格。实际项目中建议把导出命令写入 Makefilejustfile、Shell 脚本或 CI 流程。

5. 项目目录建议

一个中等规模 OpenSCAD 项目可以这样组织:

project/
  src/
    main.scad
    parts/
      bracket.scad
      cover.scad
    lib/
      fasteners.scad
      math.scad
  variants/
    small.scad
    large.scad
  exports/
    stl/
    png/
  docs/
    assembly.md

建议:

  • src/main.scad 只做装配和总入口。
  • 复用模块放在 src/libsrc/parts
  • 变量文件按产品规格分开放置。
  • 导出文件不要和源文件混在一起。
  • 使用 Git 跟踪 .scad、说明文档和少量关键预览图;大批量导出网格可按需要忽略。

6. 编辑器配置

除了内置编辑器,也可以使用 VS Code、Vim、Emacs 等编辑 .scad 文件。建议配置:

  • OpenSCAD 语法高亮。
  • 保存时保留空格缩进,常用 2 或 4 空格。
  • 文件末尾换行。
  • 项目统一单位,通常默认把数值当作毫米。
  • 代码块花括号位置保持一致。
  • 复杂模型用注释分区,但不要用注释隐藏过期参数。

7. 源码构建环境

如果要构建 OpenSCAD 本体,官方 README 提到主要依赖包括 C++17 编译器、CMake、Qt、QScintilla、CGAL、GMP、MPFR、Boost、OpenCSG、GLEW、Eigen、glib2、fontconfig、freetype、harfbuzz、libzip、Bison、Flex、pkg-config 和 double-conversion。测试还需要 Python3、Ghostscript、Catch2 等。

Linux/BSD 上可使用仓库脚本辅助安装依赖:

sudo ./scripts/uni-get-dependencies.sh qt6
./scripts/check-dependencies.sh
cmake -B build -DEXPERIMENTAL=1
cmake --build build
cd build && ctest

不同平台依赖差异很大,学习源码时不必一开始就完整打包发布版本。先完成 Debug 构建、运行单元测试和命令行导出,是更实际的目标。

8. 日常开发工作流

对于模型开发:

  1. 写最小可运行模块。
  2. 用 F5 快速预览结构。
  3. 用颜色和透明度检查内部关系。
  4. 用 F6 验证最终几何。
  5. 导出 STL 并用切片软件检查体积、面片和支撑。
  6. 打印小样,测量误差,回填参数。

对于 OpenSCAD 源码开发:

  1. 从 issue 或小功能开始,不要一开始改几何核心。
  2. 建立可复现 .scad 示例和测试。
  3. 在核心层、GUI 层、IO 层之间保持边界清晰。
  4. 修改语言行为时同时更新测试和文档。
  5. 使用 Debug 构建观察 AST、CSG、Geometry、导出阶段。