Part Module/zh-cn

简介
FreeCAD的实体建模能力都是基于 Open Cascade Technology (OCCT)内核——一种具有创建与处理高级3D几何体等特性的专业级CAD系统. 零件工作台（Part Workbench）是一种建立于OCCT库之上的层级，为用户提供了访问OCCT几何图元与函数的功能. 每种工作台(如底图工作台, 草图工作台, 零件设计工作台等等)的一切2D与3D绘制功能其实都是基于零件工作台暴露出的函数实现的. 因此，可以认为零件工作台是FreeCAD建模功能的核心组件.

以零件工作台创建的对象相对简单；为了构建更为复杂的几何图形，可以为之运用布尔运算(并集与减运算). 此建模范式就是尽人皆知的构造实体几何 (CSG) 工作流程，它是早期CAD系统中所用的传统方法. 另一方面，零件设计工作台（PartDesign Workbench）还提供了更为现代的工作流程来构建几何图形：它利用参数化方式来定义草图，再将其挤压成型为基本的实体对象，最后通过参数化变换(特征编辑)来修改模型，直到用户获取预期的最终模型为止.

零件对象比网格工作台（Mesh Workbench）创建的网格对象更为复杂，因为用户可以对前者执行更为高级的操作，如连续的布尔运算、修改历史与参数化处理.





工具
这些工具皆位于菜单.

图元
以下这些工具用于创建图元对象.


 * [[Image:Part_Box.png|32px]] Box: 根据指定的规格绘制一个立方体
 * [[Image:Part_Cylinder.png|32px]] Cylinder: 根据指定的规格绘制一个圆柱体
 * [[Image:Part_Sphere.png|32px]] Sphere: 根据指定的规格绘制一个球体
 * [[Image:Part_Cone.png|32px]] Cone: 根据指定的规格绘制一个圆锥体
 * [[Image:Part_Torus.png|32px]] Torus: 根据指定的规格绘制一个环面（torus）（圆环 (ring)）
 * [[Image:Part_CreatePrimitives.png|32px]] CreatePrimitives: 一种用于创建各类参数化几何图元的工具
 * [[Image:Part_Shapebuilder.png|32px]] Shapebuilder: 一种利用各种参数化几何图元创建更加复杂几何图形的工具

修改对象
这些工具用于修改已存在的对象. 通过它们即可选取待修改的对象.


 * [[Image:Part_Extrude.png|32px]] Extrude: 将对象的平面端面挤压成型
 * [[Image:Part_Revolve.png|32px]] Revolve: 通过令一（非实体）对象绕某轴旋转来创建另一个实体对象
 * [[Image:Part_Mirror.png|32px]] Mirror: 根据指定的镜面对选中的对象进行镜像操作
 * [[Image:Part_Fillet.png|32px]] Fillet: 为对象的边倒(圆)角
 * [[Image:Part_Chamfer.png|32px]] Chamfer: 为对象的边倒角
 * [[Image:Part_RuledSurface.png|32px]] Ruled Surface:
 * [[Image:Part_Loft.png|32px]] Loft: 对轮廓进行放样操作（放样成另一种轮廓）
 * [[Image:Part_Sweep.png|32px]] Sweep: 沿路径对一个或多个轮廓进行扫描


 * [[Image:Part_CompOffsetTools.png|48px]] Offset tools:
 * [[Image:Part_Offset.png|32px]] 3D Offset: 根据原始几何形状在特定的距离处构建一个平行的副本.
 * [[Image:Part_Offset2D.png|32px]] 2D Offset: 根据原始连线在特定的距离处创建一个平行的副本，或者缩放一个平面端面. (v0.17)


 * [[Image:Part_Thickness.png|32px]] Thickness: 镂空一个实体，在选中的面上留下开口.


 * [[Image:Part_ProjectionOnSurface.png|32px]] Projection on surface: 向表面上投影logo、文本或任意表面、连线、边. 可以为投影部分创建一个示例或连线. (v0.19)


 * [[Image:Part_CompCompoundTools.png|48px]] Compound Tools:
 * [[Image:Part MakeCompound.png|32px]] Make compound: Creates a compound from the selected objects.
 * [[Image:Part_ExplodeCompound.svg|32px]] Explode Compound: Tool to split up compounds of shapes
 * [[Image:Part Compound‏‎Filter.png|32px]] Compound Filter: The CompoundFilter can be used to extract the individual pieces.


 * [[Image:Part_Booleans.png|32px]] Booleans: 在对象上执行布尔运算
 * [[Image:Part_Union.png|32px]] Union: 将两个对象融为一体 (并集)
 * [[Image:Part_Common.png|32px]] Common: 提取出两个对象中的共有部分(交集)
 * [[Image:Part_Cut.png|32px]] Cut: 从一个对象中去掉另一个对象(差集)


 * [[Image:Part_CompJoinFeatures.png|48px]] Join features: smart booleans for walled objects (e.g., pipes)
 * [[Image:Part JoinConnect.png|32px]] Connect: Connects interiors of objects
 * [[Image:Part JoinEmbed.png|32px]] Embed: Embeds a walled object into another walled object
 * [[Image:Part JoinCutout.png|32px]] Cutout: Creates a cutout in a wall of an object for another walled object


 * [[Image:Part_CompSplittingTools.png|48px]] Splitting tools:
 * [[Image:Part BooleanFragments.png|32px]] Boolean fragments: makes all the pieces that can be obtained by Boolean operations between objects
 * [[Image:Part SliceApart.svg|32px]] Slice a part: tool to split shapes by intersection with other shapes
 * [[Image:Part Slice.png|32px]] Slice: Splits an object into pieces by intersections with another object
 * [[Image:Part XOR.png|32px]] XOR: removes space shared by even number of objects (symmetric version of Cut)


 * [[Image:Part Defeaturing.svg|32px]] Defeaturing:
 * [[Image:Part_Section.png|32px]] Section: Creates a section by intersecting an object with a section plane
 * [[Image:Part_SectionCross.png|32px]] Cross sections...:

Measure
Measure: Allows linear and angular measurement between points, edges, and faces.


 * [[Image:Part_Measure_Linear.svg|32px]] Measure Linear allows you to make linear measurements.
 * [[Image:Part_Measure_Angular.svg|32px]] Measure Angular allows you to make angular measurements.
 * [[Image:Part_Measure_Refresh.svg|32px]] Measure Refresh updates the measurements on screen.
 * [[Image:Part_Measure_Clear_All.svg|32px]] Clear All Clears all measurements.
 * [[Image:Part_Measure_Toggle_All.svg|32px]] Toggle All shows or hides all measurements.
 * [[Image:Part_Measure_Toggle_3d.svg|32px]] Toggle 3D shows or hides 3D measurements.
 * [[Image:Part_Measure_Toggle_Delta.svg|32px]] Toggle Delta shows or hides delta measurements.

其他工具

 * [[Image:Part ImportCAD.png|32px]] Import CAD: 您可利用此工具为当前文档添加*.IGES、*.STEP、*.BREP文档.
 * [[Image:Part ExportCAD.png|32px]] Export CAD: 您可利用此工具将一个零件对象导出至一个*.IGES、*.STEP、*.BREP文件.
 * [[Image:Part ShapeFromMesh.png|32px]] Shape from Mesh: 根据一个网格对象创建一个几何形状对象.
 * Convert to solid: 将一个几何形状对象转换为一个实体对象.
 * Reverse shapes: 调转选中对象所有表面上的法线方向.
 * [[Image:Part CreateSimpleCopy‎.svg|32px]] Create simple copy: 为选中的对象创建一个简单的副本.
 * [[Image:Part RefineShape.png|32px]] Refine shape: 通过去除不必要的线条来清理表面.
 * [[Image:Part CheckGeometry.png|32px]] Check geometry: 检测选中对象的几何体是否存在错误.
 * Measure: 令用户可以实现点/边/面间的线性测量与角度测量.
 * [[Image:Part Attachment.svg|32px]] Attachment: 本工具的功能为令一个对象附着于另一对象之上.

首选项

 * [[Image:Preferences-import-export.svg|32px]] Preference ... 导入 导出

OCCT中的几何概念
在OpenCascade术语中，我们会在几何图元（geometric primitive）与拓扑形状（topological shape）之间进行区分. 一个几何图元可以是点、线、圆、平面等等，甚至还可以为类似于B-样条曲线或表面（surface）这样更为复杂的图元类型. 而拓扑形状则可以是顶点、边、连线、面（face）、实体或其他形状所复合而成的对象. 几何图元不能直接显示于3D场景中，却常用于构建拓扑形状的几何图形. 例如，一条边可由线或部分圆来构建而成.

总而言之，几何图元都是“无形状”的基本构成单位，而拓扑形状则是基于前者所构建的实体对象.

至于全部图元与形状的完整列表可参考 OCC文档 (或者： sourcearchive.com)以Geom_*搜索几何图元，以TopoDS_*搜索拓扑形状. 在此，您可以阅读到两者间更多的不同点. 请注意，官方的OCC文档并不存在于网络上（您必须下载一份存档文件），而且它主要为程序员而设，并非终端用户. 但是，仍希望您能以此为起点来查找更为深入的信息.

几何类型实际可分为两大关键组群：曲线（curve）与表面（surface）. 您可利用曲线（线、圆……）来直接构建一个边，而采用表面（平面，圆柱体……）来构建一个面（face）. 例如，几何图元中的线是无限长的，即它由一个基向量与一个方向向量定义而成，而线的拓扑形状表示却一定要以起点与终点来定义为有限长度. 另外，一个立方体——一个实体——可用6个有限的平面来创建.

当然，您也可以将一条边或一个面还原为其对应的几何图元.

这样一来，利用区区几种形状您就可以构建出灰常复杂的零件. 反之，您亦可以从一个更加复杂的形状中提取出构成它的所有子形状.

脚本
零件脚本

零件模块中主要使用的数据结构为OpenCascade中的 BRep数据类型. 几乎零件模块中的所有内容与对象类型都可在Python脚本中使用. 这其中包括几何图元，如线段与圆形(或弧), 以及整个TopoShapes范畴，如顶点、边、连线、面、实体与组合对象. 对于其中的每一种对象而言，都存在若干创建方法，而对于TopoShapes中的特定对象而言，还支持一些如布尔并集/差集/交集等高级操作. 以FreeCAD脚本基础页面所述的方式来浏览零件模块中的内容，即可获悉更多详情.

示例
为了创建一条线条元素，可以切换至Python控制台并录入：

让我们来逐步分析上述python示例：

加载零件模块并创建一个新文档

线条其实就是线段，因为它具有起点和终点.

这行代码为文档添加了一个零件对象类型，并为此对象的'Shape'属性设置为以线段进行形状表示. 在此，关键是要理解我们通过几何图元（Part.LineSegment）创建了一个TopoShape（利用toShape方法）. 只有几何图形才能添加至文档中. 在FreeCAD中，几何图元常用作几何图形的“基本组成结构”.

此句更新了文档. 这为新零件对象的可视化表示做好了准备工作.

请注意，我们可以直接通过在构造函数中指定起点与终点来创建一条线段，例如 Part.LineSegment(point1,point2)，或者正如我们此前的做法，在创建一条默认线段后再调整其属性.

以相似的方式来创建一个圆形：

请再次注意，这段代码利用圆形（几何图元）构建了一个几何形状. 之后，我们依然能通过下列方式访问造型几何体：

在此，我们获取对象f的几何形状，再获得构成它的一系列边. 在当前情况下只能获得一条边，因为我们用单个圆形构造了整个几何形状，因此只取边列表中的第一项，继而获得构成该形状的曲线. 每条边都有一个曲线，几何图元就是基于它而成.

如果您想了解更多请前往拓扑数据脚本页面.

教程

 * 从STL或OBJ文件中导入数据 : 如何在FreeCAD中导入STL/OBJ文件.
 * 导出STL或OBJ文件 : 如何从FreeCAD中导出STL/OBJ文件
 * Whiffle球教程 : 如何使用零件模块