You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取FreeCAD中Body或Part所属的基准平面名称?

FreeCAD脚本获取Body/Part基准平面的方法

不用纠结自动生成的Origin、基准平面带后缀的命名,直接通过对象属性关联就能稳定获取,具体步骤如下:

核心思路

每个Body或Part对象都自带Origin属性,不管它的显示名称是Origin008还是其他,直接通过body.Origin或part.Origin就能拿到基准集合。Origin的Features列表包含了所有内置的基准轴和基准平面,只需遍历筛选即可。

代码示例

PartDesign工作台Body的情况

import FreeCAD as App

# 创建或激活文档
if App.ActiveDocument is None:
    doc = App.newDocument()
else:
    doc = App.ActiveDocument

# 创建Body
body = doc.addObject('PartDesign::Body', 'CustomBody')
doc.recompute()

# 获取Body的Origin基准集合
origin = body.Origin

# 遍历筛选所有基准平面
target_planes = []
for feature in origin.Features:
    # 通过类型ID判断是否为PartDesign基准平面
    if feature.TypeId == 'PartDesign::Plane':
        target_planes.append(feature)
        print(f"已识别基准平面:{feature.Name}")

# 选择XZ平面创建草图
xz_plane = next((p for p in target_planes if p.Name.startswith('XZ_Plane')), None)
if xz_plane:
    # 创建草图并附着到XZ平面
    sketch = body.newObject('Sketcher::SketchObject', 'SketchOnXZ')
    sketch.Support = (xz_plane, [''])
    sketch.MapMode = 'FlatFace'
    doc.recompute()

Part工作台Part对象的情况

如果是Part工作台创建的Part对象,基准平面的类型ID是Part::Plane,调整判断逻辑即可:

import FreeCAD as App

doc = App.newDocument()
part = doc.addObject('Part::Part', 'CustomPart')
doc.recompute()

origin = part.Origin
target_planes = []
for feature in origin.Features:
    if feature.TypeId == 'Part::Plane':
        target_planes.append(feature)

# 后续创建草图的逻辑类似

关键说明

  • 完全避开自动命名的后缀问题,直接通过对象属性关联,兼容性更强
  • 可以通过feature.Name的前缀(如XY_Plane、XZ_Plane、YZ_Plane)精准定位所需平面,也可以通过feature.Label获取用户可见的显示名称
  • 若需要区分基准轴和平面,基准轴的TypeId是PartDesign::Line(Body)或Part::Line(Part)

内容的提问来源于stack exchange,提问作者user12642493

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:33:30