跳到主要内容

Flexible Geometry API

cadflow.flexible 使用稀疏控制网格和确定性采样描述设计好的静态薄壁形态,并输出索引三角网格。该模块不计算运动、平衡、载荷或时间演化。

对象模型

类型责任
FlexibleMaterial厚度与外观元数据
FlexiblePanel一个矩形控制网格及采样策略
FlexiblePanelMesh单个 Panel 的 Vertex、Normal、Triangle 与 Material
FlexibleModel具有唯一名称的有序 Panel 集合
FlexibleMesh合并数组、Panel Range、测量与导出
RingSectionsectioned_panel 使用的椭圆截面

构造 Panel

from cadflow.flexible import FlexibleMaterial, FlexibleModel, FlexiblePanel

panel = FlexiblePanel(
name="cover",
control_points=(
((0, 0, 0), (0, 50, 5), (0, 100, 0)),
((60, 0, 3), (60, 50, 16), (60, 100, 3)),
((120, 0, 0), (120, 50, 5), (120, 100, 0)),
),
sample_rows=36,
sample_columns=44,
material=FlexibleMaterial(name="coated fabric", thickness=1.2),
)
model = FlexibleModel("protective-cover")
model.add_panel(panel)
mesh = model.build()

控制数组必须具有 (rows, columns, 3) 形状,至少为 2x2 网格,且全部数值有限。采样数量必须为整数,并且不小于对应控制网格维度。

周期截面与厚度

列方向需要闭合时设置 periodic_columns=True,并提供至少三个互不重复的控制列;末尾不要再次放入第一列。sectioned_panel 根据有序 RingSection 构造这种形态。

Thickness 为 0 时生成单一曲面;正 Thickness 创建沿法向偏置的两侧,并封闭剩余边界。全部尺寸和下游 Tolerance 必须使用一致的单位约定。

合并 Mesh

FlexibleModel.add_panel 会拒绝重复 Panel 名称。build() 以确定性顺序拼接各 Panel,并在 mesh.panels 中记录每个 Panel 的 Vertex Range 与 Triangle Range。

FlexibleMesh 成员含义
vertex_counttriangle_count合并后的元素数量
bounds轴对齐最小点与最大点
surface_area三角形面积总和
is_watertight每条无向三角边恰好出现两次
write_obj(path)带 Normal 与 Panel 身份的分组网格
write_stl(path)合并后的二进制三角网格
write_json(path)数组、Panel Range、Material、Bounds 与测量

交付前验证数量、Bounds、接缝连续性、Panel Range 与预期 Watertight 状态。全部符号见 10 个 Flexible API