# 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!如果对某个特定功能有更深入的疑问,欢迎继续探讨。