使用 Python 的 Autodesk Inventor API

Posted

技术标签:

【中文标题】使用 Python 的 Autodesk Inventor API【英文标题】:Autodesk Inventor API with Python 【发布时间】:2015-08-31 04:52:56 【问题描述】:

我尝试将 Python 用于 Autodesk Inventor API。例如,我尝试在使用 Python 制作的 Inventor 零件文档中制作新草图。

但是我在添加草图时遇到了问题。我所有的尝试都是错误的。 这是一个代码示例(其中一个):

import win32com.client

from win32com.client import constants


invApp = win32com.client.Dispatch("Inventor.Application")
invApp.Visible = True

asd = invApp.Documents.Add(constants.kPartDocumentObject,"",True)

nsk = asd.PartDocuments.ComponentDefinition.Sketches.Add()

有一个错误:

AttributeError: '<win32com.gen_py.Autodesk Inventor Object Library.Document instance at 0x284773312>' object has no attribute 'PartDocuments'

我试图找到调用属性的正确方法,但没有成功。

【问题讨论】:

【参考方案1】:

正如其他人所提到的。 Documents.Add() 返回一个 Document 对象。我们需要将它转换为这样的 partDocument。

invDoc = invApp.Documents.Add(constants.kPartDocumentObject,"",True)
invPartDoc = win32com.client.CastTo(invDoc, 'PartDocument')
xyPlane = invPartDoc.ComponentDefinition.WorkPlanes.Item(3)
sketch = invPartDoc.ComponentDefinition.Sketches.Add(xyPlane)

【讨论】:

【参考方案2】:

我不是 Python 专家...但是 Documents.Add 方法返回新文档,因此 asd 应该包含 PartDocument 类型

asd = invApp.Documents.Add(constants.kPartDocumentObject,"",True)
nsk = asd.ComponentDefinition.Sketches.Add()

【讨论】:

谢谢。我试过这样,但还是有同样的错误:对象没有属性'ComponentDefinition'。 我认为它也可能是模块“win32com.client”的不正确工作【参考方案3】:

这是一个老问题,我不确定 Python 中的解决方案是什么,但我知道问题是什么。键入Documents.Add 方法以返回Document 对象。 Document 对象支持ComponentDefinition 属性。但是,实际上,正在返回特定类型的文档。在这种情况下,实际上返回了一个PartDocument 对象,并且它确实支持ComponentDefinition 对象。我不知道你会如何在 Python 中转换一个变量,所以它知道它实际上是一个 PartDocument 而不是基类 Document 对象。

【讨论】:

以上是关于使用 Python 的 Autodesk Inventor API的主要内容,如果未能解决你的问题,请参考以下文章

Autodesk 的 Fbx Python 和线程

使用 python 自动化 Autodesk Inventor

如何在 Python 脚本中为 Autodesk Maya 2016 中的对象添加颜色?

Autodesk Forge - 使用 curl 下载文件

如何为 Autodesk Maya OSX 将 py 文件编译为 .so

Autodesk Forge - 从 .ipt 转换为 .stl 出现错误 (UnicodeEncodeError)