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

推荐订阅源

V
Vulnerabilities – Threatpost
aimingoo的专栏
aimingoo的专栏
B
Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
GbyAI
GbyAI
阮一峰的网络日志
阮一峰的网络日志
Engineering at Meta
Engineering at Meta
IT之家
IT之家
V
Visual Studio Blog
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
A
About on SuperTechFans
博客园 - 聂微东
Blog — PlanetScale
Blog — PlanetScale
N
News and Events Feed by Topic
A
Arctic Wolf
WordPress大学
WordPress大学
小众软件
小众软件
C
CERT Recently Published Vulnerability Notes
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Darknet – Hacking Tools, Hacker News & Cyber Security
F
Fortinet All Blogs
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Y
Y Combinator Blog
T
Threat Research - Cisco Blogs
Latest news
Latest news
Simon Willison's Weblog
Simon Willison's Weblog
Cyberwarzone
Cyberwarzone
S
Schneier on Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
Lohrmann on Cybersecurity
Stack Overflow Blog
Stack Overflow Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy International News Feed
J
Java Code Geeks
Spread Privacy
Spread Privacy
宝玉的分享
宝玉的分享
I
Intezer
L
LangChain Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
G
GRAHAM CLULEY
博客园 - 叶小钗
博客园 - 三生石上(FineUI控件)
The GitHub Blog
The GitHub Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
News and Events Feed by Topic
AWS News Blog
AWS News Blog
Attack and Defense Labs
Attack and Defense Labs
Security Archives - TechRepublic
Security Archives - TechRepublic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO

博客园 - 我才是银古

第16章:常见问题、排错与最佳实践 第15章:扩展生态、MCAD 与外部集成 第12章:实战案例:机械结构与 3D 打印零件 第14章:构建、测试、调试与贡献流程 第13章:OpenSCAD 源码架构与核心执行流程 第11章:预览、渲染、网格精度与性能优化 第09章:列表推导、递归与算法建模 第08章:参数化零件库与复用设计 第10章:导入导出、命令行与自动化 第06章:CSG 布尔建模方法 第07章:二维图形、拉伸、旋转与投影 第04章:参数、变量、函数、模块与作用域 OpenSCAD 教程目录 第03章:OpenSCAD 语言基础 第02章:安装、环境配置与开发工作流 第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
第05章:基础几何、坐标系与变换
我才是银古 · 2026-05-06 · via 博客园 - 我才是银古

第05章:基础几何、坐标系与变换

1. 坐标系

OpenSCAD 使用右手坐标系。通常 X 向右、Y 向后或屏幕深度方向、Z 向上。建模时最重要的是统一零件原点:是放在底面中心、几何中心、装配基准点,还是某个安装孔中心。

推荐原则:

  • 单个对称零件常以几何中心为原点。
  • 盒体和支架常以底面中心为原点,便于放到打印平台。
  • 装配件常以主要接口或基准孔为原点。
  • 库模块必须说明原点和朝向。

2. cube

cube 可创建立方体或长方体:

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

center = true 会让几何体以原点为中心。布尔运算中常用居中对象,因为切除体对称更容易计算。3D 打印导出时,如果希望模型底部在 Z=0,则可不用居中或最后整体平移。

3. sphere

sphere 创建球体:

$fn = 64;
sphere(r = 10);
sphere(d = 20);

球体常用于圆角近似、端头、装饰、铰接球头、支撑点。注意球体面数高会显著增加渲染时间。小零件用 $fn = 32 或 48 已经足够,大尺寸可提高。

4. cylinder

cylinder 可创建圆柱、圆锥、截锥和多边形柱:

cylinder(h = 20, r = 5);
cylinder(h = 20, d = 10, center = true);
cylinder(h = 20, r1 = 8, r2 = 4);
cylinder(h = 5, r = 10, $fn = 6); // 六边形柱

孔、轴、柱、倒角、沉头、螺母槽都离不开 cylinder。圆孔切除时,切除体高度应略大于实体厚度,避免共面导致渲染或导出问题。

5. polyhedron

polyhedron 通过点和面创建任意多面体:

points = [
    [0,0,0], [20,0,0], [20,20,0], [0,20,0],
    [10,10,15]
];
faces = [
    [0,1,2,3],
    [0,4,1], [1,4,2], [2,4,3], [3,4,0]
];
polyhedron(points = points, faces = faces);

使用 polyhedron 时要注意面顶点顺序、法线方向和闭合性。非闭合或自交多面体可能导致 F6 渲染失败。

6. translate

translate 平移子对象:

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

建议把变换读作“对子对象应用平移”,而不是“移动当前坐标”。多层变换从外向内书写、从内向外理解都可以,但要保持一致。

7. rotate

rotate 支持欧拉角或轴角形式:

rotate([0, 0, 45]) cube([20, 5, 5], center = true);
rotate(a = 30, v = [0, 1, 0]) cylinder(h = 20, d = 4);

角度单位是度,不是弧度。旋转前后的平移顺序不同会产生完全不同的结果:

rotate([0,0,45]) translate([20,0,0]) cube(5);
translate([20,0,0]) rotate([0,0,45]) cube(5);

第一个围绕原点旋转位置,第二个只旋转自身后再平移。

8. scale 与 resize

scale 按比例缩放,resize 调整到目标尺寸:

scale([2, 1, 0.5]) sphere(10);
resize([40, 20, 10]) sphere(10);

机械件中应谨慎使用非均匀缩放,因为孔径、壁厚和标准件接口会被一起改变。更推荐用参数重新计算几何。

9. mirror

mirror 按法向镜像:

mirror([1, 0, 0]) translate([10, 0, 0]) cylinder(h = 5, d = 6);

对称结构可用镜像减少重复代码。设计左右件时要注意螺纹、沉头、卡扣方向和装配基准是否也需要镜像。

10. color

color 只影响预览显示,不改变导出 STL 的几何本质:

color("red") cube(10);
color([0, 0.5, 1, 0.4]) translate([15,0,0]) sphere(8);

可以用颜色区分功能区、调试切除体、装配零件和参考几何。

11. minkowski 与 hull

hull 生成子对象的凸包,常用于圆角矩形、胶囊形、平滑连接:

hull() {
    translate([-20,0,0]) cylinder(h = 5, d = 10);
    translate([ 20,0,0]) cylinder(h = 5, d = 10);
}

minkowski 是闵可夫斯基和,可用于圆角膨胀,但计算非常慢:

minkowski() {
    cube([30, 20, 5], center = true);
    sphere(2);
}

工程项目中优先使用专门的圆角构造或 2D 偏移再拉伸,谨慎在大型模型上使用 minkowski