零件与装配
CadFlow 产品层将可复用零件几何与装配中的实例分开。Part 拥有 Body,并可附加连接器或材料;装配 Component 则通过 Component ID 和 Placement 引用零件或子装配。
该高层 API 属于内置兼容功能层,可从 cadflow 和 cadflow.assembly 公共入口访问。
在多个位置复用同一零件
import cadflow as cad
bolt_body = cad.make_cylinder_rsolid(1.0, 2.0)
bolt_part = cad.make_part_rpart("bolt", bolt_body, name="M2 bolt")
assembly = cad.make_assembly_rassembly("fixture")
assembly = cad.add_component_rassembly(
assembly,
bolt_part,
component_id="bolt_left",
placement=cad.make_placement_rplacement(origin=(-5.0, 0.0, 0.0)),
)
assembly = cad.add_component_rassembly(
assembly,
bolt_part,
component_id="bolt_right",
placement=cad.make_placement_rplacement(origin=(5.0, 0.0, 0.0)),
)
compound = cad.make_compound_from_assembly_rcompound(assembly)
产品对象按函数式方式更新。应接收 add_component_rassembly 的返回值,而不是期待原地修改。
显式分配材料
Part 创建与材料分配是两个独立操作:
aluminum = cad.make_material_rmaterial(
"aluminum_6061",
name="Aluminum 6061",
density=2.7e-6,
density_unit="kg/mm^3",
color=(0.70, 0.70, 0.75),
)
plate = cad.make_part_rpart("base_plate", plate_body, name="Base plate")
plate = cad.assign_material_rpart(plate, aluminum)
单位和工程属性始终显式指定;CadFlow 不会根据材料名称推断数值。
使用连接器表达设计意图
连接器标识零件或装配上稳定的配合坐标系或拓扑。公共构造器支持 Placement、Face、Edge 和 Vertex Connector。约束通过 Component ID 与 Connector ID 引用接口,而不是依赖临时变换。
典型流程:
- 创建 Part Body。
- 给 Part 添加命名连接器。
- 把 Part 实例加入 Assembly。
- 固定一个 Component 或提供其他参考。
- 添加固定、旋转、移动、齿轮、带或齿条-齿轮约束。
- 求解并检查
ConstraintReport。
solved = cad.solve_assembly_constraints_rassembly(assembly, strict=False)
report = cad.inspect_assembly_constraints_rconstraintreport(solved)
if not report.ok:
for residual in report.residuals:
print(residual)
发布流水线中若未求解或冲突约束必须立即失败,应使用 strict=True。
运动学与物理连接
装配约束回答允许哪些相对运动。cadflow.physical 描述零件在哪里连接,以及降阶接口如何承载载荷。真实 Face 之间的分布式接触属于 cadflow.simulation 与下游连续体求解器。
不要把刚度、摩擦、预紧力或强度编码成运动学约束。应选择拥有该物理主张的层。
嵌套装配
Assembly 可以包含 Part 或子 Assembly。Placement 从根节点组合至各叶节点。每一层都应使用稳定且唯一的 Component ID;转发连接器可以在不扁平化产品结构的前提下暴露子装配接口。