Скрипт для печати по форматам

UPD: ДАННАЯ ИНФОРМАЦИЯ УСТАРЕЛА! Плагин для полностью автоматической пакетной печати здесь: https://bim-starter.com/plugins/batchprint/

 

С своё время я облегчал печать разных форматов из Revit при помощи Dynamo, но после этого уважаемый Wrath выложил макрос на C#, сразу формирующий наборы листов по форматам.

Я немного модифицировал код — теперь он дополнительно разделяет листы по комплектам чертежей:
Скачать модифицированный макрос: яндекс, гугл.

Подробнее по работе и установке — ниже.

 

Для корректной работы макроса нужны правильно созданные семейства форматов листов. Параметры «Высота» и «Ширина», определяемые в семействе, должны совпадать с системными параметрами «Ширина листа» и «Высота листа»:
У меня больше на 0.3мм — не так страшно, если различие больше — нужно проверить семейство штампа на элементы, выступающие за его границу. Если семейство некорректное — все листы свалятся в «Unknown format»:
Для установки макроса распакуйте архив и скопируйте текст из файла «Исходный код.txt».
В Ревит перейдите Управление — Диспетчер макросов:

Перейдите на вкладку «Приложение», нажмите «Создать — Модуль»:

Укажите имя «PrintList» — Ok.  Наш язык — C#. Через несколько секунд будет открыто окно SharpDevelop с заготовкой кода макроса. Установите курсор после строки «Revit Macros Generated Code»:

И вставьте скопированный текст:

 

Вверху на панели инструментов выберите «Собрать текущее решение». Если всё было сделано правильно — в нижней части окна появится «Сборка успешно завершена». Либо появятся ошибки (здесь я не скопировал первую строчку с объявлением класса):

Кстати, вот мой добавленный участок кода:

«GP_ОбознчТома(Комплекта» — замените на параметр, который у вас используется для группирования листов в комплекты.

Закрываем SharpDevelop. В окне выбираем добавленный макрос и нажимаем «Выполнить» — запуск формирования наборов листов,

Макрос отрабатывает 10-20 секунд в зависимости от размера проекта.
Как обычно — небольшое кино:

 

Ну собственно и всё. Удачи!

UPD: в случае, если семейство основной надписи корректное, но листы все равно сваливаются в «Unknown format» — отредактируйте код макроса, замените строчку 33:

string s_format =  s_complect + ": " + GetSheetFormat(s_height.AsValueString(), s_width.AsValueString());

На вот такой код:

int d_height = (int)Math.Round(304.8 * s_height.AsDouble());
int d_width = (int)Math.Round(304.8 *s_width.AsDouble());
string s_format =  s_complect + ": " + GetSheetFormat(d_height.ToString("F0"), d_width.ToString("F0"));

Далее нужно «Собрать текущее решение», закрыть окно Sharp Develop и запустить макрос заново.
Проблема была в методе «AsValueString()», который мог выдавать не «594», а «594,0» — и «GetSheetFormat» выполнялся некорректно. Теперь код получает число, округляет до целого, и только после этого превращает в строку.
Спасибо Данилу Медведеву за указание на проблему.