среда, 12 октября 2016 г.

Revit: как использовать готовый код макроса

Для решения простых задач, связанных с программированием, удобно использовать макросы: не надо перезапускать Revit, создавать addin-файлы или устанавливать дополнительные программы, можно работать без прав администратора и т.д.
Коды макросов часто можно встретить на форумах или блогах, но как этот код использовать?





Переходим в Revit: Управление - диспетчер макросов:

Макросы могут быть уровня приложения и уровня документа. Я обычно использую макросы уровня приложения, поэтому переходим на вкладку "Приложение". Здесь будет отображаться список макросов, которые можно использовать в любом проекте, но только на данном компьютере.

Бывает, что в этом окне все кнопки неактивны. Такое бывает, когда одновременно запущенно несколько Revit. Также можно попробовать перезагрузить компьютер или переустановить Revit (я с таким не сталкивался, и обычно среда разработки SharpDevelop устанавливается по-умолчанию, но видимо возможны проблемы).


Нажимаем кнопку "Модуль" - "Создать", указываем имя модуля и язык (обычно C#):

Через 10-20 секунд будет открыто окно среды разработки SharpDevelop (если ничего не происходит - опять же, надо попробовать переустановить Revit):

Скопируйте код, опубликованный на форуме или блоге, установите курсор в указанное место и вставьте скопированный код:


Главное - не потерять фигурные скобки в начале и конце кода.
Если код вставился не очень красиво, без нужных отступов - можно нажать на клавиатуре Ctrl+i или Правка - Формат - Отступы:


Далее нужно нажать на панели инструментов кнопку "Собрать решение". Если всё хорошо - внизу окна появится сообщение "Построение успешно завершено":


Если появились ошибки - надо разбираться. Вот здесь, например, в одной строке почему-то исчезли кавычки - SharpDevelop подсветил это место:


После этого можно закрыть SharpDevelop и вернуться в Revit. В "Диспетчере макросов", в созданном модуле появится подпункт - тот макрос, который мы скомпилировали. Его нужно выбрать и нажать кнопку "Выполнить":


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

Чтобы потренироваться - вот код, который я использовал. Этот макрос "Отменяет соединение" у концов балок.

public void DisallowJoin()
        {
            Document doc = this.ActiveUIDocument.Document;
            FilteredElementCollector col = new FilteredElementCollector(doc)
                .OfCategory(BuiltInCategory.OST_StructuralFraming)
                .OfClass(typeof(FamilyInstance));
            using(Transaction t=new Transaction(doc))
            {
                t.Start("Отмена соединений");
                foreach(Element elem in col)
                {
                    try                     {
                        FamilyInstance fin = elem as FamilyInstance;
                        Autodesk.Revit.DB.Structure
                            .StructuralFramingUtils.DisallowJoinAtEnd(fin,0);
                        Autodesk.Revit.DB.Structure
                            .StructuralFramingUtils.DisallowJoinAtEnd(fin,1);
                    }
                    catch {}
                }
                t.Commit();
            }
        }

Комментариев нет:

Отправить комментарий