ADN Club > Navisworks API
IronPython для подключения к NavisWorks
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) Код я обрезал без доступа к Нэвису, так что проверить не могу, но общий принцип - понятен я думаю.
Навигация
Перейти к полной версии