Autodesk Inventor API with Python



我尝试使用 Python for 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'

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

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

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)

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

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

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

相关内容

  • 没有找到相关文章

最新更新