ADN Club > Navisworks API

IronPython для подключения к NavisWorks

(1/2) > >>

Cader:
Добрый день,

Я пытаюсь подключится к NavisWorks 2020 извне и прочитать данные о коллизиях.
Использую для этого IronPython

Насколько я понял для такой задачи нужно использовать NavisworksIntegratedAPI17 + NavisworksAutomationAPI17.
Но информации по тому где эти модули лежат или как их подгружать в IronPython я не нашел.

Может я не в ту сторону копаю. Подскажите где можно найти информацию. А то по NavisAPI её очень мало.

Александр Ривилис:
Посмотри вот эту статью: https://www.linkedin.com/pulse/naviswork-python-viewpoints-per-room-ambrosio-gómez-morales/
Надеюсь, что она поможет.

Cader:
 Спасибо за статью!

Это немного не то решение которое я ищу.
Здесь есть плагин внутри Navis который обрабатывает скрипт.
То-есть сначала нужно запустить Navis а уже потом внутри исполнять скрипт.

Так как Navis имеет внешние интерфейсы управления - я бы хотел решение которое запускает Navis выдаёт ему команду на открытие файла, считывает данные из него, а потом уже закрывает нэвис.

Я сейчас использую пример https://adndevblog.typepad.com/aec/2012/05/accessing-clash-report-information-using-net-api.html
Дошел до поиска плагина пересечений, и всё. Выводится сообщение "cannot find clash test plugin!"
Его там просто нет. Я уже перебрал всю коллекцию плагинов.

По библиотекам (NavisworksIntegratedAPI17...)- пока достал их из пакета нодов к dynamo "dynaworks".

Буду пробовать дальше. Если получится - отпишусь.

Александр Ривилис:

--- Цитата: Cader от 25-08-2021, 19:00:42 ---Я сейчас использую пример https://adndevblog.typepad.com/aec/2012/05/accessing-clash-report-information-using-net-api.html
--- Конец цитаты ---
Но этот пример тоже создаёт плагин, который работает внутри Navisworks.

Cader:
Да, действительно это плагин. Не сразу увидел.

Я так и не понял откуда берутся библиотеки
Interop.NavisworksIntegratedAPI17.dll
Interop.NavisworksAutomationAPI17.dll

Вижуал студия их создаёт откуда - то.
Взял их из проекта https://dynamonodes.com/category/dynaworks/

По итогу удалось получить данные из отчёта о пересечениях.

Может кому-то ещё пригодится

--- Код - Python [Выбрать] ---import syssys.path.append(r"C:\Program Files\Autodesk\Navisworks Manage 2020")import clrclr.AddReferenceToFile('Interop.NavisworksIntegratedAPI17.dll')clr.AddReferenceToFile('Interop.NavisworksAutomationAPI17.dll')import NavisworksIntegratedAPI17import NavisworksAutomationAPI17 if __name__ == '__main__':    # Create a new Navisworks Document, this will launch Navisworks    m_doc = NavisworksAutomationAPI17.DocumentClass()    # Read the state from the new Navisworks Document    m_state = m_doc.State()    # Tell Navisworks to be not visible    m_doc.Visible = False    # Open file    filename = "D:\test.nwd"    m_doc.OpenFile(filename)     # get clash statistics     m_clash = None    for d_plugin in m_state.Plugins():        if d_plugin.ObjectName == "nwOpClashElement":            m_clash = d_plugin            break     if m_clash is None:        print"Clash Detective not found"    else:        # Run all stored clash tests        m_clash.RunAllTests()         # Output results to list        result = {}        for clashTest in m_clash.Tests():            check_name = clashTest.name            result[check_name] = []            for clashResult in clashTest.results():                result[check_name].append(clashResult.name) Код я обрезал без доступа к Нэвису, так что проверить не могу, но общий принцип - понятен я думаю.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии