Manual:Parametric objects/zh-cn: Difference between revisions

From FreeCAD Documentation
(Created page with "所有中间操作(2D 形状,凸台,凹坑等)仍然存在,您仍然可以随时更改其任何参数。需要的时候,整个链条将被重建(重新计算)。")
(Updating to match new version of source page)
 
(35 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages/>
<languages/>

{{Docnav
|[[Manual:The_FreeCAD_document|FreeCAD文档]]
|[[Manual:Import_and_export_to_other_filetypes|导入和导出其他文件类型]]
|[[Manual:Introduction|手册起始页]]
|IconC=Crystal_Clear_manual.png
}}

{{Manual:TOC}}
{{Manual:TOC}}


FreeCAD 专为参数化建模而设计。这意味着创建的几何不是可以自由雕刻那种,而是规则和参数生成的。例如,可以半径和高度圆柱体有了这两个参数,程序便具有了足够的信息来构建这个圆柱体。
FreeCAD 被设计用于参数化建模。这意味着创建的几何形状不是自由地塑造的,而是通过规则和参数生成的。例如,一个圆柱体可以半径和高度构建而成。通过这两个参数,程序可以获得足够的信息来构建圆柱体。


FreeCAD 中参数对象实际上是一小程序,只要其中一个参数发生变化会运行。对象可以有很多不同类型的参数:数字(整数,如1,2,3;或浮点,如3.1416),真实世界的尺寸(1毫米,2.4米,4.5英尺),(x,y,z)坐标文本字符串(“hello!”),等等。甚至,参数可以是另一个对象。
FreeCAD 中参数对象实际上是一小程序的组成部分其中一个参数发生变化时,它们会运行。对象可以各种不同类型的参数:数字(整数,如 12、3 或浮点,如 3.1416)、现实世界的尺寸(1 mm、2.4 m、4.5 ft)、(x、y、z)坐标文本字符串("hello!")甚至是另一个对象。


最后一种类型允许快速构建复杂的操作链,每个新对象前一个为基础其添加新特征
这种最后一种类型的参数允许快速构建复杂的操作链,每个新对象都基于前一个对象并为其添加新的功能


在下面的示例中,一个实体的立方体对象(Pad)基于一个矩形的二维形状(Sketch),并具有一个挤出距离。通过这两个属性,它通过将基础形状按照给定的距离进行挤出,产生一个实体形状。然后,您可以将此对象用作进一步操作的基础,例如在其一个面上绘制一个新的二维形状(Sketch001),然后进行减去操作(Pocket),直到得到最终的对象。
In the example below, a solid, cubic object (Pad) is based on a rectangular 2D shape (Sketch) and has an extrusion distance. With these two properties, it produces a solid shape by extruding the base shape by the given distance. You can then use this object as a base for further operations, such as drawing a new 2D shape on one of its faces (Sketch001) and then making a subtraction (Pocket), until arriving at your final object.


所有中间操作(2D 形状,凸台,凹坑等)仍然存在,您仍然可以随时更改任何参数。需要的时候,整个链条将重建(重新计算)。
所有中间操作(2D 形状、挤出、减去等)仍然存在,并且随时可以更改它们的任何参数。整个链条将在需要时新构建(重新计算)。


[[Image:Parametric_objects.jpg]]
[[Image:Parametric_objects.jpg]]


有两个重要的事情需要知道:
Two important things are necessary to know:

# 重新计算并非总是自动进行的。对于那些可能修改文档中大部分内容并且需要一些时间的重型操作,不会自动执行。相反,对象(以及所有依赖于它的对象)将被标记为需要重新计算(在树视图中它们上面会显示一个小蓝色图标)。然后,您需要点击重新计算按钮(或选择{{MenuCommand|Edit->Refresh}})来重新计算所有标记的对象。

# 依赖关系树必须始终以相同的方向流动,禁止循环依赖。(参见[[Glossary#Directed_Acyclic_Graph|有向无环图]]和 [[DAG view|DAG 视图]])您可以有一个依赖于B对象的A对象,以及一个依赖于 C 对象的 B 对象,但不能有一个依赖于 B 对象的 A 对象,同时 B 对象又依赖于 A 对象。这将构成一个循环依赖。然而,您可以有许多对象依赖于同一个对象,例如对象 B 和对象 C 都依赖于对象 A。菜单{{MenuCommand|Tools -> Dependency graph}}显示了类似上述图像的依赖关系图。它可以帮助您检测问题。

并非所有的对象在 FreeCAD 中都是参数化的。通常,从其他文件导入的几何图形不会包含任何参数,并且是简单的非参数化对象。然而,这些对象通常可以作为新创建的参数化对象的基础或起点,当然这取决于参数化对象的需求和导入几何图形的质量。

无论是参数化的还是非参数化的对象,都会具有一些基本参数,例如名称(Name),在文档中是唯一的且无法编辑;标签(Label),是用户定义的名称,可以进行编辑;以及放置(placement),用于记录对象在三维空间中的位置。


最后,值得注意的是,自定义的参数化对象在 Python 中编程是非常容易的。
# Recomputation is not always automatic. Heavy operations, that might modify a big portion of your document, and therefore take some time, are not performed automatically. Instead, the object (and all the objects that depend on it) will be marked for recomputation (a small blue icon appears on them in the tree view). You must then press the recompute button (or {{MenuCommand|Edit->Refresh}}) to have all the marked objects recomputed.
# The dependency tree must always flow in the same direction. Loops are forbidden. ([[Glossary#Directed_Acyclic_Graph|See DAG]]) You can have object A which depends on object B which depend on object C. But you cannot have object A which depends on object B which depends on object A. That would be a circular dependency. However, you can have many objects that depend on the same object, for example objects B and C both depend on A. Menu {{MenuCommand|Tools -> Dependency graph}} shows you a dependency diagram like on the image above. It can be useful to detect problems.


'''延伸阅读'''
Not all objects are parametric in FreeCAD. Often, the geometry that you import from other files won't contain any parameter, and will be simple, non-parametric objects. However, these can often be used as a base, or starting point for newly created parametric objects, depending, of course, on what the parametric object requires and the quality of the imported geometry.


* [[Property_editor|属性编辑器]]
All objects, however, parametric or not, will have a couple of basic parameters, such as a Name, which is unique in the document and cannot be edited, a Label, which is a user-defined name that can be edited, and a [[placement]], which holds its position in the 3D space.
* [[Scripted_objects|如何编写参数化对象]]
* [[Placement|在FreeCAD中定位对象]]
* [[Std_DependencyGraph|启用依赖图]]


Finally, it is worth noting that custom parametric objects are [[Scripted objects|easy to program in python]].


{{Docnav
'''Read more'''
|[[Manual:The_FreeCAD_document|FreeCAD 文档]]
|[[Manual:Import_and_export_to_other_filetypes|导入和导出其他文件类型]]
|[[Manual:Introduction|开始手册]]
|IconC=Crystal_Clear_manual.png
}}


[[Category:Poweruser Documentation{{#translation:}}]]
* [[Property_editor|The properties editor]]
[[Category:Tutorials{{#translation:}}]]
* [[Scripted_objects|How to program parametric objects]]
* [[Placement|Positioning objects in FreeCAD]]
* [[Std_DependencyGraph|Enabling the dependency graph]]

Latest revision as of 19:52, 4 November 2023

Other languages:

FreeCAD 被设计用于参数化建模。这意味着你创建的几何形状不是自由地塑造的,而是通过规则和参数生成的。例如,一个圆柱体可以由半径和高度构建而成。通过这两个参数,程序可以获得足够的信息来构建圆柱体。

在 FreeCAD 中,参数化对象实际上是一个小程序的组成部分,当其中一个参数发生变化时,它们会运行。对象可以具有各种不同类型的参数:数字(整数,如 1、2、3 或浮点数,如 3.1416)、现实世界的尺寸(1 mm、2.4 m、4.5 ft)、(x、y、z)坐标、文本字符串("hello!")甚至是另一个对象。

这种最后一种类型的参数允许快速构建复杂的操作链,每个新对象都基于前一个对象,并为其添加新的功能。

在下面的示例中,一个实体的立方体对象(Pad)基于一个矩形的二维形状(Sketch),并具有一个挤出距离。通过这两个属性,它通过将基础形状按照给定的距离进行挤出,产生一个实体形状。然后,您可以将此对象用作进一步操作的基础,例如在其一个面上绘制一个新的二维形状(Sketch001),然后进行减去操作(Pocket),直到得到最终的对象。

所有的中间操作(2D 形状、挤出、减去等)仍然存在,并且您随时可以更改它们的任何参数。整个链条将在需要时重新构建(重新计算)。

有两个重要的事情需要知道:

  1. 重新计算并非总是自动进行的。对于那些可能修改文档中大部分内容并且需要一些时间的重型操作,不会自动执行。相反,对象(以及所有依赖于它的对象)将被标记为需要重新计算(在树视图中它们上面会显示一个小蓝色图标)。然后,您需要点击重新计算按钮(或选择Edit->Refresh)来重新计算所有标记的对象。
  1. 依赖关系树必须始终以相同的方向流动,禁止循环依赖。(参见有向无环图DAG 视图)您可以有一个依赖于B对象的A对象,以及一个依赖于 C 对象的 B 对象,但不能有一个依赖于 B 对象的 A 对象,同时 B 对象又依赖于 A 对象。这将构成一个循环依赖。然而,您可以有许多对象依赖于同一个对象,例如对象 B 和对象 C 都依赖于对象 A。菜单Tools -> Dependency graph显示了类似上述图像的依赖关系图。它可以帮助您检测问题。

并非所有的对象在 FreeCAD 中都是参数化的。通常,从其他文件导入的几何图形不会包含任何参数,并且是简单的非参数化对象。然而,这些对象通常可以作为新创建的参数化对象的基础或起点,当然这取决于参数化对象的需求和导入几何图形的质量。

无论是参数化的还是非参数化的对象,都会具有一些基本参数,例如名称(Name),在文档中是唯一的且无法编辑;标签(Label),是用户定义的名称,可以进行编辑;以及放置(placement),用于记录对象在三维空间中的位置。

最后,值得注意的是,自定义的参数化对象在 Python 中编程是非常容易的。

延伸阅读