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

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
IT之家
IT之家
H
Heimdal Security Blog
Jina AI
Jina AI
宝玉的分享
宝玉的分享
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
AWS News Blog
AWS News Blog
C
Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Hacker News
The Hacker News
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threatpost
S
Securelist
P
Privacy International News Feed
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 聂微东
博客园 - 叶小钗
J
Java Code Geeks
V
V2EX
博客园 - Franky
Spread Privacy
Spread Privacy
K
Kaspersky official blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Simon Willison's Weblog
Simon Willison's Weblog
Project Zero
Project Zero
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
C
Cybersecurity and Infrastructure Security Agency CISA
C
CERT Recently Published Vulnerability Notes
Latest news
Latest news
NISL@THU
NISL@THU
罗磊的独立博客
W
WeLiveSecurity
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园_首页
V
Visual Studio Blog

博客园 - 我才是银古

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

第07章:二维图形、拉伸、旋转与投影

1. 为什么重视 2D

许多机械零件本质上是二维轮廓加厚度:板件、垫片、面板、齿轮、支架、铭牌、盒体截面。OpenSCAD 提供一组强大的二维建模能力,再通过 linear_extruderotate_extrude 生成三维实体。

二维建模通常比直接三维布尔更稳定、更快,也更接近激光切割、CNC 轮廓加工和板材设计流程。

2. square 与 circle

square([40, 20], center = true);
circle(r = 10, $fn = 64);

二维对象位于 XY 平面,没有厚度。导出 SVG、DXF 或进行拉伸时非常有用。

3. polygon

polygon 用点列表定义二维多边形:

points = [[0,0], [40,0], [30,20], [10,20]];
polygon(points);

复杂多边形可使用 paths 指定外轮廓和孔洞路径。顶点顺序、自交和闭合性会影响结果。建议先用简单点集验证,再生成复杂路径。

4. offset

offset 可对二维轮廓扩张、收缩或圆角处理:

offset(r = 2) square([30, 20], center = true);
offset(delta = -1) circle(10);

二维 offset 常用于生成壁厚、间隙、圆角矩形和刀具补偿。相比三维 minkowski,二维偏移再拉伸通常更高效。

5. linear_extrude

线性拉伸把二维对象沿 Z 方向变成三维实体:

linear_extrude(height = 5, center = true)
    circle(d = 20, $fn = 64);

可选参数包括 twistscaleslices 等,可制作扭转体或渐变体:

linear_extrude(height = 40, twist = 180, slices = 80)
    square([10, 4], center = true);

扭转模型面数增长快,应控制 $fnslices

6. rotate_extrude

旋转拉伸将二维截面绕 Z 轴旋转,适合旋钮、轮子、管件、碗形件、环形件:

rotate_extrude($fn = 96)
    translate([20, 0, 0]) circle(d = 4);

注意二维截面通常需要放在 X 轴正侧,不要穿过旋转轴,否则可能产生自交。

7. projection

projection 可把三维对象投影到二维:

projection(cut = true)
    translate([0,0,5]) cube([30, 20, 10], center = true);

这适合从三维模型生成切割轮廓、检查截面、导出 SVG/DXF。cut = true 表示取 Z=0 截面,false 表示投影轮廓。

8. text 文本

OpenSCAD 支持文本生成二维轮廓:

linear_extrude(1)
    text("OpenSCAD", size = 8, halign = "center", valign = "center");

文本可用于铭牌、面板标记、浮雕和凹刻。注意字体在不同系统上可能不同,团队协作时应明确字体或把最终轮廓导出固定。

9. DXF 与 SVG 工作流

OpenSCAD 可以导入 DXF、SVG 等二维资源,也可以导出二维轮廓。常见流程:

  1. 在 Inkscape、QCAD、LibreCAD 中绘制二维图形。
  2. 清理重复线、断线、自交和单位。
  3. 导入 OpenSCAD 作为轮廓。
  4. 通过 linear_extrude 生成实体。
  5. 加入孔、倒角、文字或装配结构。

导入外部轮廓时要检查比例和坐标原点。很多问题来自单位不一致或路径未闭合。

10. 二维参数化案例:法兰盘

$fn = 80;
outer_d = 60;
inner_d = 25;
hole_d = 5;
hole_circle_d = 45;
thickness = 6;

module flange_2d() {
    difference() {
        circle(d = outer_d);
        circle(d = inner_d);
        for (a = [0:90:270])
            rotate(a) translate([hole_circle_d/2, 0]) circle(d = hole_d);
    }
}

linear_extrude(thickness, center = true)
    flange_2d();

这个例子展示了“先二维、后拉伸”的清晰结构。后续可增加沉孔、倒角和型号文字。

11. 二维建模检查清单

  • 轮廓是否闭合且不自交?
  • 坐标原点是否适合装配?
  • 外部导入文件单位是否正确?
  • 拉伸高度是否满足制造要求?
  • 孔位是否用参数或极坐标生成?
  • 文本字体是否可复现?
  • 导出 SVG/DXF 前是否隐藏了三维参考对象?