Легкое создание кнопок на ленте для вызова внешних команд

Автор Тема: Легкое создание кнопок на ленте для вызова внешних команд  (Прочитано 25045 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Сергей, если я не ошибаюсь, то по-моему вот так:
Код - 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

Оффлайн Сергей Одегов

  • ADN OPEN
  • Сообщений: 48
  • Карма: 0
  • Skype: sergey_mmt
Да Виктор спасибо. Все работает.

Оффлайн julikas

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0
Виктор, есть ли где-то описание подробнее, как добавить кнопку? можно мне тоже готовый проектик небольшой? вложение на предыдущей странице не открывается.

p.s.: все открылось, пошла разбираться)))

Оффлайн julikas

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0
Виктор, подскажите пожалуйста!
проект, который выложен на предыдущей странице - у меня не запускается, выдает несколько ошибок, первая из которых :
Не удалось найти имя типа или пространства имен "Autodesk" (пропущена директива using или ссылка на сборку?)

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


Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
julikas, Если не удалость найти сборку Autodesk... то тут только две причины.
1) Revit у вас установлен в какую-либо другую директорию. Нужно просто поправить References в проекте.
2) Вы используете REvit 2015, а пример проекта написан для Revit 2014. Чтобы запустить на 2015, нужно в свойствах проекта поставить TargetFramework 4.5

Оффлайн julikas

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0
Виктор, спасибо! в 2014 revit кнопка появилась. А можно ли сделать так, чтобы она появлялась и в 2015 и во всех последующих? мы хотим написать компоненту, которая будет использоваться далее независимо от версии Revit.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
А можно ли сделать так, чтобы она появлялась и в 2015 и во всех последующих?
Одна и та же сборка не обязательно будет работать во всех версиях. Как, например, в случае с 2014 и 2015. Чтобы работало в 2015 вам нужно взять проект из исходников и собрать из него сборку для Revit 2015.

Оффлайн julikas

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0
Спасибо. поняла. Можете ли Вы порекомендовать мне что-то почитать/посмотреть по разработке компонент для Revit?

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Можете ли Вы порекомендовать мне что-то почитать
Конечно. Статьи по Revit API на нашем сайте :)

Оффлайн julikas

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0

Оффлайн julikas

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0
Виктор, обращаюсь к Вам опять!
в 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


это где что поправить нужно?

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
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
Это делается в свойствах проекта.

Оффлайн julikas

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0
очередное спасибо. все работает.

Оффлайн julikas

  • ADN OPEN
  • Сообщений: 9
  • Карма: 0
Виктор, доброго дня!
мне нужно теперь на эту кнопку  обработчик - открытие файла в моем случае. Выходит, что я не на форме работаю, так ведь? компонент OpenDialog куда-то можно разместить? или как в этом случае работают?
Загружаться должен документ MS Word (docx), с этим форматом наверно тоже есть специальные правила работы?
Далее мне нужно будет описать класс, который в С++ хедером подключали всегда. Тут (в С#) как это лучше делать?


Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
julikas, рекомендую прочитать курс Моя первая программа для Autodesk Revit для того, чтобы понять как работать с Revit API.
На кнопку нужно "повесить" вызов команды. В коде команды уже выполнять нужные вам действия. В курсе описывается, как можно создать команду.