Manual:Traditional modeling, the CSG way/zh-cn

CSG 代表Constructive_solid_geometry_构造实体几何，描述了处理实体 3D 几何的最基本方法，即通过使用布尔运算（如并集、差集或交集）向/从实体中添加和删除一块来创建复杂对象.

正如我们在本手册中早些时候看到的那样，FreeCAD 可以处理许多类型的几何图形，但对于我们想要使用FreeCAD 设计的那种 3D 物体（即现实世界的物体），首选和最有用的类型无疑是实体 BREP 几何图形，主要由Part 工作台处理. 与多边形网格不同，BREP 对象的面由数学曲线定义，这实现了在任何尺度下的绝对精度.



这两者之间的区别类似于位图和矢量图像之间的区别. 与位图图像一样，多边形网格的曲面被分成一系列点. 如果您仔细观察，或者将其放大打印，您将看到的不是曲面而是由许多平面组成的表面. 在矢量图像和 BREP 数据中，曲线上任何点的位置不是存储在几何图形中，而是根据需要即时计算，具有准确的精度.

在 FreeCAD 中，所有基于 BREP 的几何都由另一个开源软件 OpenCasCade 处理. FreeCAD 与 OpenCasCade 内核之间的主要接口是 Part 工作台. 大多数其他工作台在 Part 工作台的基础上构建其功能. 在FreeCAD中，所有基于 BREP 的几何图形都由另一个开源软件OpenCasCade 处理. FreeCAD 和 OpenCasCade 内核之间的主要接口是 Part 工作台. 大多数其他工作台都在 Part 工作台的基础上构建其功能.

虽然其他工作台通常提供更高级的工具来构建和操作几何图形，但由于它们实际上都是操作零件对象，因此了解这些对象在内部是如何工作的，能够使用 Part 工具非常有用. 由于 Part 工具更简单，它们经常可以帮助您解决更智能的工具无法正确解决的问题.

为了说明 Part 工作台的工作原理，我们将仅使用 CSG 操作（除了螺钉，我们将使用其中一个插件，以及尺寸，我们将在下一章中看到）来建模这张桌子：



让我们创建一个新文档（使用Ctrl+N或菜单文件 → 新建文档），以保存我们的桌子设计. 文档最初在 Combo View 面板的 Model 选项卡中称为“无标题”，但是如果您将文档保存（使用Ctrl+Shift+S或菜单文件 → 另存为），将其保存为名为“ table.FCStd”的新 FreeCAD 文档，该文档将被重命名为“table”，这更清楚地标识了项目.

现在我们切换到 Part 工作台，开始创建我们的第一个桌腿.


 * 点击[[Image:Part_Box.svg|16px]] 立方体按钮
 * 选择立方体，然后设置以下属性（在“数据”选项卡中）：
 * 长度：80 毫米（或 8 厘米，或 0.8 米，FreeCAD 可以使用任何单位）
 * 宽度：80 毫米
 * 高度：75 厘米
 * 通过按 Ctrl + C 然后 Ctrl + V 复制立方体（或菜单 编辑 → 复制和粘贴）（不会出现任何变化，因为第二个对象覆盖了第一个对象）.
 * 选择新创建的名为 Cube001 的对象（在左侧的 Model 选项卡中单击 Cube001）
 * 通过编辑其放置属性更改其位置：
 * 位置 x：8 毫米
 * 位置 y：8 毫米

你应该得到了两个高高的立方体，一个与另一个相距 8 毫米.




 * 现在我们可以将一个几何体从另一个几何体中减去：选择要保留的第一个体，然后按住CTRL键，选择要减去的另一个体（顺序很重要），然后按下[[Image:Part_Cut.svg|16px]] 剪切按钮：



注意创建的对象，称为“Cut”. “Cut”仍然包含我们用作运算子的两个立方体. 实际上，文档中仍然存在两个“Cube"，仅被隐藏并在树视图中的“Cut”对象的分组中，仍然可以通过展开“Cut”对象旁边的箭头来选择它们. 如果需要，可以右键单击来将它们显示出来，或更改它们的属性.

您还可以通过“组合视图” 布尔运算 来使用剪切工具和其他布尔工具. 这给出了更明确但更费力的方式来完成它.

然后改变它们的位置，数据如下：
 * 我们复制基础立方体 6 次，创建另外三个脚. 由于它仍然复制在剪贴板里，可以简单地粘贴（Ctrl + V）6次.
 * Cube002：x：0，y：80cm
 * Cube003：x：8mm，y：79.2cm
 * Cube004：x：120cm，y：0
 * Cube005：x：119.2cm，y：8mm
 * Cube006：x：120cm，y：80cm
 * Cube007：x：119.2cm，y：79.2cm


 * 做另外三个切割，首先选择“host”立方体，然后选择要切除的立方体. 我们有了四个 Cut 对象.



你可能一直在想，可以将完整的脚重复三次，而不必复制基础立方体六次. 完全正确，在 FreeCAD 中，有很多方法可以实现相同的结果. 这是一个宝贵的经验，值得记住. 因为随着我们接触到更复杂的对象，某些操作可能无法提供正确的结果，经常需要尝试其他方法.


 * 现在我们将使用相同的 Cut 方法为螺钉制作孔. 由于我们需要 8 个孔，每个桌脚需要两个，我们可以制作 8 个要减去的对象. 相反，让我们探索其他方法，并制作 4 个管道，这些管道将由两个脚重复使用. 因此，让我们使用 [[Image:Part_Cylinder.svg|16px]] 圆柱体 工具创建四个管道. 您可以再次只制作一个圆柱体，然后将其复制. 给所有圆柱体一个半径为 6 毫米. 这次，我们需要旋转它们，这也是通过数据选项卡下的 放置 属性完成的 （注意： 在设置角度之前更改轴属性，否则旋转将不会应用）：
 * Cylinder：高度：130cm，角度：90°，轴：x:0，y:1，z:0，位置：x：-10mm，y：40mm，z：72cm
 * Cylinder001：高度：130cm，角度：90°，轴：x:0，y:1，z:0，位置：x：-10mm，y：84cm，z：72cm
 * Cylinder002：高度：90cm，角度：90°，轴：x:-1，y:0，z:0，位置：x：40mm，y：-10mm，z：70cm
 * Cylinder003：高度：90cm，角度：90°，轴：x:-1，y:0，z:0，位置：x：124cm，y：-10mm，z：70cm



您会注意到圆柱体比需要的稍长一点. 这是因为，就像所有基于实体的3D应用程序一样，FreeCAD中的布尔运算有时对面对面的情况过于敏感，可能会失败. 通过这样做，我们可以保险一些.


 * 现在让我们进行减法. 选择第一个桌脚，然后按住 CTRL 键，选择穿过它的一个管道，按下 剪切 按钮. 孔将被制作，管道将被隐藏. 通过展开穿过的脚，在树视图中找到它.
 * 选择另一个受到此隐藏管道穿透的桌脚，然后重复此操作，这次使用 Ctrl+ 在树视图中选择管道，因为它在 3D 视图中被隐藏了（您也可以使其再次可见并在 3D 视图中选择它）. 对其他脚重复此操作，直到每个脚都有两个孔：



正如您所看到的，每个桌脚已经变成了一系列相当长的操作. 所有这些操作都是参数化的，您可以随时更改任何早期操作的任何参数. 在 FreeCAD 中，我们经常将这个堆栈称为“建模历史”，因为它实际上记载了您执行的所有操作的历史记录.

FreeCAD 的另一个特点是，3D 对象的概念和 3D 操作的概念往往融为一体. 剪切既是一种操作，也是由此操作产生的 3D 对象. 在 FreeCAD 中，这被称为“特征”（feature），而不是对象或操作.


 * 现在让我们制作桌面，它将是一个简单的木块，让我们使用另一个 Box 工具，长度：126cm，宽度：86cm，高度：8cm，位置：x：10mm，y：10mm，z：67cm. 在 视图 选项卡中，您可以通过更改其 形状颜色 属性，使其具有漂亮的棕色木材质感：



请注意，尽管桌腿厚度为 8 毫米，但我们将其放置在距离 10 毫米处，留下 2 毫米的间隙. 当然，这并不是必要的，它在真实的桌子上不会发生，但在这种“组装”模型中，这是一种常见的做法，它可以帮助观察模型的人理解这些是独立的部件，需要稍后手动连接在一起.

现在我们的五个零件都完成了，是一个好时机给它们取比“Cut015”更恰当的名称. 通过在树形视图中右键单击对象（或按下“F2”键），您可以将它们重命名为对您自己或稍后打开文件的其他人更有意义的名称. 人们常说，为对象命名比建模的方式还重要.


 * 我们现在将安装一些螺丝. FreeCAD 社区的一位成员开发了一个非常有用的插件，名为“Fasteners”，您可以在FreeCAD 插件仓库中找到它. 它能够使螺丝的插入变得非常容易. 安装附加的工作台很容易，可以在插件页面上找到说明.


 * 安装完“Fasteners”工作台并重新启动 FreeCAD 后，它将出现在工作台列表中，我们可以切换到它. 将螺丝添加到我们的孔中是通过首先选择我们孔的圆形边缘来完成的：




 * 然后，我们可以按下“Fasteners”工作台中的一个螺丝按钮，例如EN 1665 Hexagon bolt with flanges, heavy series. 螺丝将被放置并与我们的孔对齐，直径将自动选择以匹配我们孔的大小. 有时螺丝会被倒置放置，我们可以通过翻转其“invert”属性来进行更正. 我们也可以将其偏移设置为2毫米，以遵循我们在桌面和脚之间使用的相同规则：




 * 对所有孔重复此操作，桌子就完成了.

Part对象的内部结构

正如我们之前看到的，FreeCAD 中不仅可以选择整个对象，还可以选择它们的一部分，例如我们的螺丝孔的圆形边界. 现在是一个快速了解 Part 对象如何在内部构建的好时机. 每个生成 Part 几何体的工作台都将基于这些内容：


 * 顶点: 这些是构建所有其他几何体的点（通常是端点）. 例如，一条线有两个顶点.
 * 边: 边是线性几何体，例如线段、弧线、椭圆或NURBS 曲线. 它们通常有两个顶点，但某些特殊情况只有一个（例如封闭圆）.
 * 线: 线圈是由它们的端点连接的一系列边. 它可以包含任何类型的边，并且可以是封闭的或非封闭的.
 * 面: 面可以是平面或曲面，并且可以由一个封闭线圈形成，该线圈形成面的边界，或者由多个线圈形成，比如面里有孔.
 * 壳: 壳只是由它们的边缘连接的一组面. 它可以是开放的或封闭的.
 * 实体: 当壳紧密封闭，即没有“泄漏”时，它就成为实体. 实体具有内部和外部的概念. 许多工作台依赖于此，以确保它们生成的对象可以在现实世界中构建.
 * 复合体: 复合体只是其他几何体的聚合体，无论它们的类型如何，都聚合为一个单一的几何体.

在 3D 视图中，您可以选择单个的顶点、边或面. 选择其中之一也会选择整个对象.

关于共享设计的说明

看到上面的桌子，您可能会认为它的设计不太好. 桌面与脚的紧固可能太弱了. 您可能想要添加加固件，或者您有其他想法使其更好. 这就是共享变得有趣的地方. 您可以从下面的链接下载本次练习中制作的文件，并修改它使其更好. 然后，如果您分享这个改进的文件，其他人可能能够使它变得更好，或者在他们的项目中使用您精心设计的桌子. 您的设计可能会给其他人带来新的想法，也许这将有助于让世界变得更好......

下载


 * 本练习中生成的文件：https://github.com/yorikvanhavre/FreeCAD-manual/blob/master/files/table.FCStd

延伸阅读


 * Part 工作台
 * FreeCAD 插件库
 * Fasteners 工作台