# 3d打印建模练习
**Repository Path**: code4x/3d-printing-modeling-practice
## Basic Information
- **Project Name**: 3d打印建模练习
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-11-24
- **Last Updated**: 2025-12-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
在OpenSCAD中创建3D模型,是通过编写代码来描述几何形状及其组合方式。以下是其常用命令、函数和核心概念的概述,以Markdown表格形式呈现,方便您快速查阅。
### 📐 基础语法与核心概念
| 类别 | 项目 | 说明/示例 |
| :--- | :--- | :--- |
| **注释** | 单行注释 | `// 这是单行注释` |
| | 多行注释 | `/* 这是多行注释 */` |
| **变量** | 定义变量 | `length = 10;` (类似常量,建议在代码顶部定义) |
| **特殊变量**
(控制渲染质量) | `$fa` (最小角度) | 数值越小,圆弧越光滑 |
| | `$fs` (最小尺寸) | 数值越小,圆弧越精细 |
| | `$fn` (分段数) | 直接控制圆弧的分段数,值越大越光滑 |
| **调试修饰符** | `#` | 高亮显示(红色半透明)其后的子元素,用于调试 |
| | `%` | 使其后的子元素显示为半透明,便于观察内部结构 |
| | `!` | 仅显示(渲染)其后的第一个子元素,用于隔离检查 |
| | `*` | 隐藏其后的子元素,用于简化视图 |
| **视图操作** | 旋转视图 | 按住鼠标左键拖动 |
| | 平移视图 | 按住鼠标右键拖动 |
| | 缩放视图 | 滚动鼠标滚轮 |
| **预览与渲染** | 预览 (F5) | 快速查看模型,可能不精确,但速度快 |
| | 渲染 (F6) | 进行完整计算以生成最终模型,导出STL前必需 |
### 🔷 基本2D图形
| 命令 | 语法示例 | 说明 |
| :--- | :--- | :--- |
| **圆形** `circle` | `circle(r=10);` 或 `circle(d=20);` | 创建圆。使用 `$fn` 控制平滑度。 |
| **正方形** `square` | `square(size=10);`
`square([10, 20]);`
`square([10,20], center=true);` | 创建正方形或矩形。`center=true` 使其中心位于原点。 |
| **多边形** `polygon` | `polygon(points=[[0,0], [10,0], [5,10]]);` | 通过顶点坐标数组创建多边形。可使用 `paths` 定义复杂或带孔的轮廓。 |
| **文本** `text` | `text("ABC123", size=10, halign="center");` | 生成2D文字图形。注意:原生不支持中文。 |
### 🔶 基本3D图形
| 命令 | 语法示例 | 说明 |
| :--- | :--- | :--- |
| **立方体** `cube` | `cube(size=10);`
`cube([10, 20, 30]);`
`cube(10, center=true);` | 创建立方体或长方体。`center=true` 使其中心位于原点。 |
| **球体** `sphere` | `sphere(r=10);` 或 `sphere(d=20);` | 创建球体。平滑度由 `$fa`, `$fs`, `$fn` 控制。 |
| **圆柱/圆锥** `cylinder` | `cylinder(h=20, r=10);`
`cylinder(h=20, r1=10, r2=5);` | 创建圆柱体或圆锥体。`r1` 和 `r2` 不同时可创建圆台。 |
| **多面体** `polyhedron` | `polyhedron( points=[[0,0,0],[10,0,0],[5,5,10]], faces=[[0,1,2]] );` | 通过定义顶点(`points`)和面(`faces`)来创建任意多面体。较复杂。 |
### ➰ 变换操作
变换操作通过花括号 `{}` 作用于其包围的物体。
| 命令 | 语法示例 | 说明 |
| :--- | :--- | :--- |
| **平移** `translate` | `translate([x, y, z]) { cube(10); }` | 将子元素沿向量 `[x, y, z]` 移动。 |
| **旋转** `rotate` | `rotate([x_deg, y_deg, z_deg]) { ... }` | 按指定角度(度)绕X, Y, Z轴旋转。旋转顺序为X->Y->Z。 |
| **缩放** `scale` | `scale([x_s, y_s, z_s]) { ... }` | 沿各轴按比例缩放。可使用单一数值进行均匀缩放。 |
| **镜像** `mirror` | `mirror([x, y, z]) { ... }` | 根据法向量 `[x, y, z]` 定义的平面进行镜像。 |
| **凸包** `hull` | `hull() { sphere(5); translate([15,0,0]) sphere(8); }` | 创建包围所有子几何体的最小凸形壳体。用于生成光滑过渡的形状。 |
| **蒙皮** `minkowski` | `minkowski() { cube(10); sphere(1); }` | 对子体进行闵可夫斯基和运算,常用来为物体添加圆角。 |
### 🔀 布尔运算
布尔运算用于组合多个几何体,均通过花括号 `{}` 包含子元素。
| 命令 | 功能说明 | 语法示例 |
| :--- | :--- | :--- |
| **并集** `union` | 合并所有子物体 | `union() { cube(10); sphere(7); }` |
| **差集** `difference` | **第一个**子物体减去**后续**所有子物体 | `difference() { cube(10); sphere(7); }`
*(立方体挖掉球体)* |
| **交集** `intersection` | 保留所有子物体的重叠部分 | `intersection() { cube(10); sphere(7); }` |
### 📤 2D到3D转换
| 命令 | 语法示例 | 说明 |
| :--- | :--- | :--- |
| **线性拉伸** `linear_extrude` | `linear_extrude(height=20, twist=30) { square(10); }` | 将2D图形沿Z轴拉伸为3D实体。`twist`参数可实现扭曲效果。 |
| **旋转拉伸** `rotate_extrude` | `rotate_extrude(angle=360) { translate([10,0]) circle(1); }` | 将2D图形绕Z轴旋转生成回转体(如花瓶)。2D图形应置于X轴正半轴。 |
### 🔁 流程控制与模块化
| 命令/功能 | 语法示例 | 说明 |
| :--- | :--- | :--- |
| **循环** `for` | `for (i=[0:2]) { translate([i*15, 0, 0]) cube(10); }` | 用于重复创建几何体。循环变量可在数组生成器中使用。 |
| **条件判断** `if` | `if (条件) { ... } else { ... }` | 用于根据条件创建不同的几何形状。 |
| **模块定义** `module` | `module my_gear(teeth=12) { ... }`
`my_gear(teeth=20);` | 将常用几何形状或操作定义为可复用的模块,可带参数。 |
| **函数定义** `function` | `function circle_area(r) = PI * r * r;` | 定义可重复使用的计算过程,返回一个值。 |
希望这份速查表能帮助您更高效地使用OpenSCAD!如果对某个特定功能有更深入的疑问,欢迎继续探讨。