Autodesk Inventor API с Python
Я пытаюсь использовать Python для Autodesk Inventor API. Например, я пытаюсь создать новый эскиз в документе детали Inventor, который я делаю с помощью Python.
Но у меня проблема с добавлением эскизов. Все мои попытки были неверными. Вот пример кода (один из множества):
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'
Я пытался найти правильный способ назвать атрибуты, но у меня не было никакого успеха.
2 ответа
Как уже упоминали другие. 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)
Я не эксперт по 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
объект.