使用Python的Autodesk Inventor API

时间:2015-06-15 15:47:20

标签: python api autodesk autodesk-inventor

我尝试将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'

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

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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