Как получить информацию о модели с помощью IronPython из сеанса Navisworks? (Нет NavisPythonShell)

#ironpython #autodesk-navisworks

#ironpython #autodesk-navisworks

Вопрос:

Как я могу получить информацию из файла Navisworks .NWD, используя его NET API от IronPython (в основном, имя каждого элемента в orden, чтобы подтвердить, что все части уже смоделированы).

У меня нет опыта работы с C #, но с python, поэтому я хочу использовать IronPython.

Я знаю о NavisPythonShell, но после некоторых попыток у меня это не сработало. Navisworks разбился при запуске плагина.

В любом случае я получил некоторые успехи, используя IronPython. Navisworks открывается, загружает файл и закрывается, но с использованием Autodesk.Navisworks.Api.Application.ActiveDocument, он получил только нетипичный «объект».

 import sys, clr
navis_path = r'C:Program FilesAutodeskNavisworks Manage 2017'
nw_model = r'C:UsersmyNameClientnavisnodel.nwd' 
sys.path.append(navis_path)

clr.AddReference('Autodesk.Navisworks.Api')
clr.AddReference('Autodesk.Navisworks.Automation')
clr.AddReference('Autodesk.Navisworks.Controls')

from Autodesk.Navisworks.Api import *
from Autodesk.Navisworks.Api.Automation import *
from Autodesk.Navisworks.Api.Controls import *

nw = NavisworksApplication()
nw.Visible = True
nw.OpenFile(nw_model)

doc = Application.ActiveDocument
  

Тип документа равен «NoneType»

Ответ №1:

Autodesk.Navisworks.Api.Application доступно в плагине.

Только с помощью API автоматизации вы можете открыть файл, добавить файл, объединить файл и т.д. Для получения дополнительных возможностей, таких как доступ к активному документу, управление моделью, вам нужно будет написать плагин и вызвать плагин в Automation by NavisworksApplication.ExecuteAddInPlugin .

Хотя, если вы просто хотели выполнить какое-то пакетное задание, .NET DocumentControl также является вариантом. В нем есть образец SDKapiNETexamplesControlsPublishFile , он может публиковать файл, как плагин, и вы также можете получить доступ к активному документу с помощью Autodesk.Navisworks.Api.Application.ActiveDocument .