Сообщество программистов Autodesk в СНГ

Статьи => Опубликованные статьи => Тема начата: Александр Ривилис от 30-01-2014, 00:30:03

Название: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Александр Ривилис от 30-01-2014, 00:30:03
Легкое создание кнопок на ленте для вызова внешних команд
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Alexeysh от 27-02-2015, 15:13:59
Добрый день,

Выложите, пожалуйста, какой-нибудь пример простенького готового проекта с созданием кнопок для таких как я мягко говоря не специалистов.
А то не получается использовать, а глупые вопросы задавать стыдно...

Спасибо.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 28-02-2015, 17:10:26
Alexeysh, проект для Visual Studio с примером использования утилиты - во вложении.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Alexeysh от 02-03-2015, 15:10:55
Спасибо.

Понял, почему не получается.
В Revit 2014 все работает. А я в Revit 2015 пытаюсь... Буду разбираться...
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 02-03-2015, 15:18:11
Alexeysh, библиотека скомпилирована под .NET 4.0, а 2015 Revit использует .NET 4.5.
Это значит, что моя библиотека просто не видна. Вам нужно ее самостоятельно скомпилировать под .NET 4.5 из исходников.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Alexeysh от 02-03-2015, 16:08:00
Да, все сделал, все работает отлично!!!
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Сергей Одегов от 06-03-2015, 16:52:32
Alexeysh, библиотека скомпилирована под .NET 4.0, а 2015 Revit использует .NET 4.5.
Это значит, что моя библиотека просто не видна. Вам нужно ее самостоятельно скомпилировать под .NET 4.5 из исходников.
Здравствуйте скажите как это делается. Где взять исходники.
В программе не могу определить b.SetLargeImage(Resources.adn_cis_logo);
Что такое Resources? Какая сборка для него нужна?
Что такое adn_cis_logo Почему не путь к файлу?
Поясните как пользоваться пожалуйста.

Кнопку то я добавил закоментив этот b.SetLargeImage(Resources.adn_cis_logo);
Как же добраться до картинки? В ресурсы я ее добавил, но правильно ли? Есть ли там секретики?
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 08-03-2015, 13:55:10
multys, Добрый день.

Исходники есть в статье. Ссылка на статью, в первом сообщении темы. На всякий случай, дублирую ссылку (https://github.com/chekalin-v/VCRevitRibbonUtil/archive/master.zip) еще раз.

Ресурсы приложения - это двоичные или текстовые данные, которые не являются кодом, но включаются в проект. Подробней можно почитать на MSDN. Например, тут (https://msdn.microsoft.com/ru-ru/library/7k989cfy(v=vs.90).aspx) или тут (https://msdn.microsoft.com/ru-ru/library/9za7fxc7.aspx).

После того, как вы поместите ресурсы в вашу сборку, то они обычно находятся в namespace <namespace вашей сборки>.Properties.Resources.

adn_cis_logo - имя ресурса, содержащего изображение для кнопки.

Естественно, ресурс с вашей картинкой может называться иначе.

Можно использовать и файл. В метод SetImage нужно передать объект либо Bitmap, либо ImageSource. Создайте Bitmap из файла, если это необходимо. Мне удобней пользоваться ресурсами.

Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Сергей Одегов от 08-03-2015, 21:26:39
Виктор спасибо большое буду разбираться.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Сергей Одегов от 10-03-2015, 10:48:34
Виктор не получается. Что не так я сделал опять?
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fs3.postimg.org%2Fg78ejpdqn%2Fimage.jpg&hash=2d7c511c14d5934306f14d5139a5a1da) (http://postimg.org/image/g78ejpdqn/)
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 10-03-2015, 10:55:41
multys, так ведь все ж напиано:). Нужно добавить сборку PresentationCore. Скорее всего там еще нужно будет добавить сборки System.Xaml, WindowsBase и другие сборки, необходимые для WPF.
Интерфейс ленты написан на WPF, поэтому и нужны соответствующие сборки.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Сергей Одегов от 10-03-2015, 11:09:03
Я дело в том что тока неделю сел за С#
Раньше писал на VB но с библиотеками никогда не сталкивался, поэтому не понимаю что требует компилятор.
Точнее понимаю, но не знал что надо поискать такую сборку. Что такая есть :)))
Сборку добавил - все заработало спасибо.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 10-03-2015, 11:13:10
Раньше писал на VB
В Visual Basic тоже есть добавление ссылок на внешние библиотеки. Возможно просто никогда не приходилось использовать.
Рад что все в итоге получилось.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Сергей Одегов от 10-03-2015, 11:18:52
Вот в том то и дело что не приходилось. Я только научные программы писал для диссертации, а там никаких библиотек то и не надо было.
Еще закавыка с этим MSDN и SDK вот никак не пойму как пользоваться. К примеру понимаю как и что нужно получить, но как в этих справках найти нужный класс и свойство - черт ногу сломит.
Вы, Виктор когда писали свою dll -ку там получается есть какой то ваш класс где процедуры написаны, а вы потом подкрепляете dll -ку, библиотеку объявляете и получаете доступ к процедурам и свойствам? так ли я понимаю?
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Сергей Одегов от 15-05-2015, 15:57:30
Виктор скажите, а как с помощью вашей утилиты создать панель с кнопкой, НЕ создавая новую вкладку, а создать панель и кнопку в месте по умолчанию - во вкладке "Надстройки" ?
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 15-05-2015, 16:11:58
Сергей, если я не ошибаюсь, то по-моему вот так:
Код - C# [Выбрать]
  1. Ribbon.GetApplicationRibbon(a)
  2.                 .Tab(Tab.AddIns)
  3.                 .Panel("Panel1")

Метод Tab перегружен. В качестве параметра принимается либо название таба, либо системный таб Autodesk.Revit.UI.Tab

Вот из исходников https://github.com/chekalin-v/VCRevitRibbonUtil/blob/master/src/VCRevitRibbonUtil/VCRevitRibbonUtil/Ribbon.cs#L68
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Сергей Одегов от 15-05-2015, 16:21:19
Да Виктор спасибо. Все работает.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: julikas от 18-05-2015, 08:17:55
Виктор, есть ли где-то описание подробнее, как добавить кнопку? можно мне тоже готовый проектик небольшой? вложение на предыдущей странице не открывается.

p.s.: все открылось, пошла разбираться)))
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: julikas от 18-05-2015, 21:28:25
Виктор, подскажите пожалуйста!
проект, который выложен на предыдущей странице - у меня не запускается, выдает несколько ошибок, первая из которых :
Не удалось найти имя типа или пространства имен "Autodesk" (пропущена директива using или ссылка на сборку?)

что нужно сделать?
если можно - поясните ответ комментариями, на С# нет опыта написания программ, много вопросов возникает. Буду рада советам и полезным ссылкам. Спасибо!

Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 19-05-2015, 08:33:26
julikas, Если не удалость найти сборку Autodesk... то тут только две причины.
1) Revit у вас установлен в какую-либо другую директорию. Нужно просто поправить References в проекте.
2) Вы используете REvit 2015, а пример проекта написан для Revit 2014. Чтобы запустить на 2015, нужно в свойствах проекта поставить TargetFramework 4.5
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: julikas от 19-05-2015, 11:56:50
Виктор, спасибо! в 2014 revit кнопка появилась. А можно ли сделать так, чтобы она появлялась и в 2015 и во всех последующих? мы хотим написать компоненту, которая будет использоваться далее независимо от версии Revit.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 19-05-2015, 13:31:39
А можно ли сделать так, чтобы она появлялась и в 2015 и во всех последующих?
Одна и та же сборка не обязательно будет работать во всех версиях. Как, например, в случае с 2014 и 2015. Чтобы работало в 2015 вам нужно взять проект из исходников и собрать из него сборку для Revit 2015.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: julikas от 19-05-2015, 14:43:18
Спасибо. поняла. Можете ли Вы порекомендовать мне что-то почитать/посмотреть по разработке компонент для Revit?
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 19-05-2015, 15:01:34
Можете ли Вы порекомендовать мне что-то почитать
Конечно. Статьи по Revit API (http://adn-cis.org/articles/revit-dotnet-api/) на нашем сайте :)
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: julikas от 19-05-2015, 21:24:10
Спасибо! :)
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: julikas от 21-05-2015, 12:23:58
Виктор, обращаюсь к Вам опять!
в 2014 Ревите кнопки появились. Хочу теперь, чтобы в 2015 появились. Поменяла ссылки RevitApi, RevitAPIUI. Теперь выдает ошибку:
Ошибка   3   выход из команды "copy "D:\C# для REVIT\RibbonUtilSample\RibbonUtilSample\RibbonUtilSample.addin" "C:\Users\11\AppData\Roaming\Autodesk\REVIT\Addins\2014"
copy "D:\C# для REVIT\RibbonUtilSample\RibbonUtilSample\bin\Debug\*.dll" "C:\Users\11\AppData\Roaming\Autodesk\REVIT\Addins\2014"
copy "D:\C# для REVIT\RibbonUtilSample\RibbonUtilSample\bin\Debug\*.png" "C:\Users\11\AppData\Roaming\Autodesk\REVIT\Addins\2014"" с кодом 1.   RibbonUtilSample


это где что поправить нужно?
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 21-05-2015, 13:31:57
julikas,
Это ошибка при выполнении скрипта после сборки проекта.
После сборки проекта я копирую нужные файлы в нужную папку, чтобы Revit их увидел.
То есть сборка у вас компилируется нормально, а ошибка именно после сборки.
Могу предположить, что надо поменять папку с номером версии с 2014 на 2015
"copy "D:\C# для REVIT\RibbonUtilSample\RibbonUtilSample\RibbonUtilSample.addin" "C:\Users\11\AppData\Roaming\Autodesk\REVIT\Addins\2015"
copy "D:\C# для REVIT\RibbonUtilSample\RibbonUtilSample\bin\Debug\*.dll" "C:\Users\11\AppData\Roaming\Autodesk\REVIT\Addins\2015"
copy "D:\C# для REVIT\RibbonUtilSample\RibbonUtilSample\bin\Debug\*.png" "C:\Users\11\AppData\Roaming\Autodesk\REVIT\Addins\2015"" с кодом 1.   RibbonUtilSample
Это делается в свойствах проекта.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: julikas от 21-05-2015, 21:20:35
очередное спасибо. все работает.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: julikas от 22-05-2015, 08:13:35
Виктор, доброго дня!
мне нужно теперь на эту кнопку  обработчик - открытие файла в моем случае. Выходит, что я не на форме работаю, так ведь? компонент OpenDialog куда-то можно разместить? или как в этом случае работают?
Загружаться должен документ MS Word (docx), с этим форматом наверно тоже есть специальные правила работы?
Далее мне нужно будет описать класс, который в С++ хедером подключали всегда. Тут (в С#) как это лучше делать?

Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 22-05-2015, 08:39:40
julikas, рекомендую прочитать курс Моя первая программа для Autodesk Revit (http://adn-cis.org/forum/index.php?topic=284.0) для того, чтобы понять как работать с Revit API.
На кнопку нужно "повесить" вызов команды. В коде команды уже выполнять нужные вам действия. В курсе описывается, как можно создать команду.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: julikas от 22-05-2015, 08:53:02
Спасибо. пошла смотреть. у меня есть немалый опыт написания разного рода обработчиков и т.п. Другая стезя совсем была. И языки другие. Благодарю за поддержку.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Сергей Одегов от 18-06-2015, 09:47:47
Виктор добрый день!
Вот есть такая штука как справка по нажатию на F1
т.е.

Код - C# [Выбрать]
  1.  ContextualHelp help = new ContextualHelp(ContextualHelpType.Url, "http://www.yandex.ru");
  2.  

Как реализовать данный код в Вашем дополнении ? Ведь нужно назначить
Код - C# [Выбрать]
  1. b.SetContextualHelp(help);
  2.  

Верно?
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 19-06-2015, 09:15:32
Сергей, через утилиту это сделать пока нельзя. там просто нет соответствующего метода.
Но, думаю я сейчас это исправлю. Тем более у меня есть что туда добавить.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 19-06-2015, 14:18:37
Как реализовать данный код в Вашем дополнении ?
Теперь можно.
Создал новую статью (http://adn-cis.org/obnovlenie-utilityi-dlya-sozdaniya-knopok-na-lente.html), так как там несколько полезных изменений.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Сергей Одегов от 24-06-2015, 10:44:50
Да здорово. Но полагаю неплохо бы добавить вот эту штучку.
Чтобы можно было GIF анимацию вставлять помимо PNG и JPG
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 24-06-2015, 10:53:38
Сергей, Так и до видео в подсказке не далеко дойти:)
Ок, постараюсь добавить.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Сергей Одегов от 24-06-2015, 11:07:28
Ну думаю видео это уже фанатизм ))) :D По мне так в видео там нет необходимости. Ведь из каждого видео очень легко сделать GIF ку )))
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: oskokos от 21-03-2016, 09:04:09
Подскажите, при компилирование в фраймворк 4.5 вылетает такое окошко и после него все сбрасывается на 4.0. Открывал, закрывал заного все одно фраймворк не меняется. В чем причина? Можете скинуть утилиту эту для 2016 ревита?

И еще вопрос, не могу понять, а код по созданию кнопки пишется в самом приложении или в отдельном? я вот написал небольшую утилиту. это файл dll и его я объявил в файле манифеста. он появился в ревите в разделе: Внешние инструменты как по способу 1.

а вот способ 3, где писать этот код по объявлению кнопки?
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 25-03-2016, 16:00:25
Подскажите, при компилирование в фраймворк 4.5 вылетает такое окошко и после него все сбрасывается на 4.0. Открывал, закрывал заного все одно фраймворк не меняется. В чем причина?
Такое чувство что файл проекта помечен как "Только для чтения"
И еще вопрос, не могу понять, а код по созданию кнопки пишется в самом приложении или в отдельном?
В самом приложении. В исходном солюшене на GitHub (https://github.com/chekalin-v/VCRevitRibbonUtil) два проекта. Один из них библиотека для легкого создания, второй - пример ее использования.
Т.е. в проекте своей надстройки вы подключаете мою утилиту по легкому созданию кнопок, и в этом же проекте ее используете, т.е. создаете кнопку.
Вот проект с надстройкой с примером использования (https://github.com/chekalin-v/VCRevitRibbonUtil/blob/master/src/VCRevitRibbonUtil/VCRevitRibbonUtilSample/App.cs)
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Андрей Бушман от 15-02-2017, 17:25:58
Цитата из статьи:
Цитировать
3) Изображение необходимо задавать в виде объекта класса ImageSource. Это конечно решаемо, но создает некие трудности, например, нельзя просто так вставить изображение из ресурсов.
Ошибаешься. Можно - я именно так и делаю в Revit2017AddInTemplateSet (https://github.com/Andrey-Bushman/Revit2017AddInTemplateSet). Можешь глянуть код, если интересно как.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 16-02-2017, 08:35:31
Ошибаешься. Можно - я именно так и делаю
Нет, не ошибаюсь. Я же не говорил, что вообще нельзя вставить из ресурсов, а что нельзя "просто" вставить, написав что то типа
Код - C# [Выбрать]
  1. pushButton.LargeImage = Resources.MyImage;
. Нужны дополнительные действия, чтобы сконвертировать изображение из ресурсов в ImageSource.
Собственно и я и ты делаем это преобразование. В твоем коде этот метод (https://github.com/Andrey-Bushman/Revit2017AddInTemplateSet/blob/master/C%23%20Project%20templates/Revit%202017%20External%20Application/Tools.cs#L298) занимает > 50 строк. Это я и имел ввиду, говоря про "не просто так"
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Андрей Бушман от 16-02-2017, 10:10:18
Я же не говорил, что вообще нельзя вставить из ресурсов, а что нельзя "просто" вставить, написав что то типа
Значит я тебя неправильно понял. )
В твоем коде этот метод (https://github.com/Andrey-Bushman/Revit2017AddInTemplateSet/blob/master/C%23%20Project%20templates/Revit%202017%20External%20Application/Tools.cs#L298) занимает > 50 строк. Это я и имел ввиду, говоря про "не просто так"
Если говорить о вынесении операции извлечения картинки в отдельный метод, то да, поскольку там нужно выполнять все те проверки входящих параметров, которые я делал. Но в сухом остатке, по сути, сам процесс извлечения значительно компактней:

Код - C# [Выбрать]
  1. Bitmap ttp_image = res_mng.GetObject(key) as Bitmap;
  2.  
  3. BitmapSource ttp_bitmap_src = Imaging
  4.     .CreateBitmapSourceFromHBitmap(
  5.     ttp_image.GetHbitmap(), IntPtr.Zero,
  6.     WPF.Int32Rect.Empty, BitmapSizeOptions
  7. .FromEmptyOptions());
Т.е. не так уж и сложен, на мой взгляд.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 16-02-2017, 10:31:20
Т.е. не так уж и сложен, на мой взгляд
Согласись, что для новичков, подобный метод может ввести в состояние шока:) HBitmap, указатели.. да еще и зачем то с пустыми или нулевыми значениями.. Именно для этого мы и упрощаем использование. :)
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: semyon от 14-04-2017, 13:30:37
Виктор Чекалин, здраствуйте хочу написать лёгкое образмеривание для примитивов автокада
(https://s22.postimg.org/wl0udewil/-_-1.jpg) (https://postimg.org/image/wl0udewil/), и вот никак не могу найти как обратится  к текстбоксам через редактор vba, или как передать фокус немодальной форме
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Александр Ривилис от 14-04-2017, 13:41:26
А какое отношение Ваше сообщение имеет к этой теме? Здесь вообще-то речь идёт о Revit, а не об AutoCAD и Revit .NET API, а не AutoCAD VBA. Создайте тему в правильном разделе.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: semyon от 14-04-2017, 14:03:44
всё уже создал спасибо, щас постараюсь удалить предыдущие сообщения
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Agens от 26-01-2020, 22:34:07
Может кто подскажет в чем причина?
(https://i.postimg.cc/06CmZtKs/2.png) (https://postimg.cc/06CmZtKs)
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Agens от 26-01-2020, 22:41:17
Еще как pushButtonData.LargeImage = new BitmapImage(new Uri("D:\\_C#\\Button_image.png")); засунуть картинку из Resources?
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Agens от 27-01-2020, 00:05:24
Код - C# [Выбрать]
  1. // assign bitmap to button
  2.             pushButton.LargeImage = largeImage;
как засунуть картинку из Resources?

PS. сообщения не удаляются?
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Александр Ривилис от 27-01-2020, 00:08:53
PS. сообщения не удаляются?
Нет. Это один из принципов этого форума.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Agens от 27-01-2020, 00:53:58
Код - C# [Выбрать]
  1. // assign bitmap to button
  2.             pushButton.LargeImage = largeImage;
как засунуть картинку из Resources?

PS. сообщения не удаляются?

Получилось вот так...

Код - C# [Выбрать]
  1.         public BitmapImage ConvertToBitmapImage(Bitmap src)
  2.         {
  3.             MemoryStream ms = new MemoryStream();
  4.             ((System.Drawing.Bitmap)src).Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
  5.             BitmapImage image = new BitmapImage();
  6.             image.BeginInit();
  7.             ms.Seek(0, SeekOrigin.Begin);
  8.             image.StreamSource = ms;
  9.             image.EndInit();
  10.             return image;
  11.         }
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Александр Ривилис от 27-01-2020, 00:59:52
Получилось вот так...

Код - C# [Выбрать]
  1.            public BitmapImage ConvertToBitmapImage(Bitmap src)
  2.             {
  3.                 MemoryStream ms = new MemoryStream();
  4.                 ((System.Drawing.Bitmap)src).Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
  5.                 BitmapImage image = new BitmapImage();
  6.                 image.BeginInit();
  7.                 ms.Seek(0, SeekOrigin.Begin);
  8.                 image.StreamSource = ms;
  9.                 image.EndInit();
  10.                 return image;
  11.             }
  12.  
Чтобы не было утечки памяти лучше использовать такую конструкцию:
Код - C# [Выбрать]
  1. using (MemoryStream ms = new MemoryStream())
  2. {
  3. //... Тут твой код
  4. }
  5.  
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 27-01-2020, 08:48:48
Может кто подскажет в чем причина?
(https://i.postimg.cc/06CmZtKs/2.png) (https://postimg.cc/06CmZtKs)
Скорей всего сборка VCRevitRibbonUtil.dll не попала в папку, где лежит сборка надстройки.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Agens от 27-01-2020, 09:31:10
я ее подключаю и "копировать локально" ставлю false или ее нужно кидать в "addins"?
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Александр Ривилис от 27-01-2020, 09:36:34
Они должны быть в одном каталоге. Иначе твоё приложение его не найдёт.
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Agens от 27-01-2020, 10:03:14
спасибо...
Название: Re: Легкое создание кнопок на ленте для вызова внешних команд
Отправлено: Виктор Чекалин от 29-01-2020, 12:04:38
Еще как pushButtonData.LargeImage = new BitmapImage(new Uri("D:\\_C#\\Button_image.png")); засунуть картинку из Resources?
А ведь в утилитке как раз есть пример, как из ресурсов изображение добавить
Код - C# [Выбрать]
  1.                 .CreateStackedItems(si => si.CreateButton<XXXXCommand>("XXXX", "XXXX",
  2.                     b =>
  3.                     {
  4.                         b.SetLargeImage(Resources.b_32);
  5.                         b.SetSmallImage(Resources.b_16);
  6.                     })