零件中用python重命名实体名称

有时候在用多实体来创建装配体时,默认的实体名称通常是实体1,实体2 等等,如果这时从多实体创建装配体,那么子零件名称通常就是实体名。如果你的项目文件夹比较混乱,包含大量的文件,可能会造成命名冲突。所以,可能需要手动重命名这些实体名称。

下面是一个简单的用python写的一个简单的脚本,可以自动将实体名称在默认的名称前面增加一个当前主零件的名称,这样应该可以避免文件名冲突。如果你想其他方式命名,可以在这个代码的基础上去修改你想要的。

import win32com.client
import os

# 文档类型常量 (对应 Inventor 的 DocumentTypeEnum)
DOC_TYPES = {
    12290: "Part Document",
    12291: "Assembly Document",
    12292: "Drawing Document",
    12293: "Presentation Document",
    12294: "Design Element Document",
    12295: "Foreign Model Document",
    12296: "SAT File Document",
    12297: "No Document",
    12298: "Nesting Document",
    12289: "Unknown Document"
}

def rename_bodies():
    # 连接 Inventor 应用
    inv = win32com.client.Dispatch("Inventor.Application")
    inv.Visible = True

    # 获取当前活动文档
    doc = inv.ActiveDocument
    doc_type = doc.DocumentType

    print(f"当前文档类型: {DOC_TYPES.get(doc_type, '未识别')}")

    # 只处理零件文件
    if doc_type != 12290:  # kPartDocumentObject
        print("❌ 当前文档不是零件文件,请打开零件 (.ipt) 再运行。")
        return

    # 获取零件名(去掉扩展名、空格)
    part_name = os.path.splitext(doc.DisplayName)[0].replace(" ", "")

    # 获取零件的 ComponentDefinition
    comp_def = doc.ComponentDefinition

    # 遍历所有实体 (SurfaceBodies)
    for i, body in enumerate(comp_def.SurfaceBodies):
        old_name = body.Name
        new_name = f"{part_name}{old_name}"
        try:
            body.Name = new_name
            print(f"✅ 已重命名: {old_name} -> {new_name}")
        except Exception as e:
            print(f"⚠️ 无法重命名实体 {old_name}: {e}")

if __name__ == "__main__":
    rename_bodies()

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注