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 объект.

Другие вопросы по тегам