有时候在用多实体来创建装配体时,默认的实体名称通常是实体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()
发表回复