Кнопка Revit ленточной панели с растровым изображением без RevitPythonShell или C # (только для ironpython)?

Я архитектор (настоящий, а не архитектор программного обеспечения :)), немного экспериментирую с Revit API и знакомлюсь с миром программирования. Я сделал часть работы с C #, но переключился на Python с надеждой, что начальные шаги так пойдут быстрее. Чтобы вернуться к сути, я создал приложение и развернул DLL с RevitPythonShell. Я создал кнопку внутри ленточной панели, но хотел бы создать растровое изображение, чтобы оно выглядело красиво. Есть ли способ добавить растровое изображение в приложение, чтобы я мог использовать его в экземпляре Revit без установки RPS?

Раньше я создавал такое же приложение на C #, и все прошло гладко. Но при использовании Python возникает проблема. Когда вы создаете элемент управления на панели ленты Revit, вам необходимо передать путь к DLL и полное имя (включая пространства имен) класса внутри этой DLL, который реализует IExternalCommand. Однако при использовании Python это невозможно, по крайней мере, я не знаю, как это сделать.

У Дарена Томаса есть хорошая инструкция по использованию RPS в качестве Stratup Script (https://github.com/daren-thomas/scripting-autodesk-revit-with-revitpythonshell/blob/master/more_control_over_the_ribbonpanel.md), но есть ли способ избежать этого, просто развернуть новый скрипт или «перевести» имя класса PushButtonData Constructor в Revit API?

Это изображение показывает, чего я хотел бы достичь. Он показывает мое приложение C # vs Python.

пример


person darkhitect    schedule 24.08.2019    source источник


Ответы (1)


@darkhitect - как вы используете Python для развертывания своих скриптов? Если вы используете механизм DeployRpsAddin RevitPythonShell , вы должны иметь возможность использовать атрибуты largeImage и smallImage в теге <PushButton text="Hello World! " src="helloworld.py "/>. Установите их на пути к изображению, и все должно быть хорошо?

person Daren Thomas    schedule 26.08.2019
comment
Я люблю RPS! Спасибо за ответ @Daren Thomas. ! ссылка - person darkhitect; 26.08.2019
comment
Можно ли использовать механизм DeployRPSAddin для добавления новой вкладки ленты? - person darkhitect; 26.08.2019
comment
@darkhitect Расскажи мне об этом - RPS меняет индустрию! Да. Вкладки ленты и панели ленты (и подсказки по инструментам!) - все это возможно, но, насколько мне известно, это возможно только при использовании сценария запуска. У pyRevit, похоже, есть умный способ развертывания на лету, хотя стоило бы изучить, как они это делают. - person Callum; 27.08.2019
comment
Что ж, это прекрасно работает и для меня. Важно, что я могу создать DLL без RPS или pyRevit и отправить своим коллегам весь пакет или даже установщик. Это для внутреннего использования, но выглядит так красиво и немного аккуратнее. Мне удалось создать новую ленту с XML-файлом с помощью DeployRPS и с разделенными кнопками, у меня есть все, что мне нужно. Всплывающие подсказки и длинные описания также были бы удобны, но я бы предпочел обойтись без них, если это вариант только для отдельного приложения. Я попробовал вариант toolTip, tooltip и ToolTip в качестве атрибута в существующем теге, но я ожидаю, что это не работает. - person darkhitect; 27.08.2019
comment
Функциональность DeployRPS создает DLL, которую вы можете развернуть, но вам также необходимо добавить среду выполнения (RpsRuntime.dll) при развертывании. И да, тогда вы можете создать установщик и отправить его. Взгляните на пример HelloWorld, который включает сценарий установщика InnoSetup, который создает именно это. Конечно, вам придется добавить все свои навороты и удивительность, но в качестве отправной точки это должно помочь! - person Daren Thomas; 28.08.2019