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

推荐订阅源

C
Check Point Blog
GbyAI
GbyAI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
U
Unit 42
美团技术团队
NISL@THU
NISL@THU
C
Cisco Blogs
SecWiki News
SecWiki News
N
Netflix TechBlog - Medium
Forbes - Security
Forbes - Security
Cloudbric
Cloudbric
雷峰网
雷峰网
T
Tailwind CSS Blog
博客园 - 司徒正美
The Register - Security
The Register - Security
L
LangChain Blog
S
Security Affairs
Hacker News - Newest:
Hacker News - Newest: "LLM"
B
Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
Threat Research - Cisco Blogs
I
InfoQ
S
Schneier on Security
L
Lohrmann on Cybersecurity
量子位
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler
Schneier on Security
Schneier on Security
F
Fortinet All Blogs
TaoSecurity Blog
TaoSecurity Blog
K
Kaspersky official blog
Google DeepMind News
Google DeepMind News
Cisco Talos Blog
Cisco Talos Blog
PCI Perspectives
PCI Perspectives
Attack and Defense Labs
Attack and Defense Labs
WordPress大学
WordPress大学
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
Project Zero
Project Zero
The GitHub Blog
The GitHub Blog
D
Docker
N
News | PayPal Newsroom
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
H
Hacker News: Front Page
云风的 BLOG
云风的 BLOG
Microsoft Security Blog
Microsoft Security Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 聂微东
Webroot Blog
Webroot Blog
MongoDB | Blog
MongoDB | Blog

博客园 - 我才是银古

第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、导出阶段。