Как задать виды для печати с помощью Revit API
Если вы хотим изменить настройки печати в Revit, то первое, с чего мы должны начать – это свойство Document.PrintManager. PrintManager.ViewSheetSetting используется для установки видов, которые вы хотите напечатать.
Однако, когда вы обращаетесь к методу PrintManager.ViewSheetSetting вы можете получить вот такое исключение: This property is only available when user choose Select of Print Range (Свойство доступно только когда пользователь выбрал ‘выбранные виды’ в настройках печати.)
Решение состоит в том, чтобы выбрать «Выбранные виды или листы» в группе Печатать диалога Печати.
 
После этого уже можно воспользоваться свойством ViewSheetSetting.InSession.Views для того, чтобы задать виды для печати.
Алгортим следующий:
- Создать новый набор видов ViewSet
 - Получить все виды
 - Проверить можно ли вид напечатать с помощью свойства View.CanBePrinted
 - Добавить вид в набор
 - Присвоить созданный набор видов свойству ViewSheetSetting.InSession.Views (не забываем про транзакцию)
 
Пример кода:
- RevitDoc = commandData.Application.ActiveUIDocument.Document;
 - var pm = RevitDoc.PrintManager;
 - try
 - {
 - var vss = pm.ViewSheetSetting;
 - ViewSet set = new ViewSet();
 - var classFilter = new ElementClassFilter(typeof(View));
 - FilteredElementCollector views =
 - new FilteredElementCollector(RevitDoc);
 - views = views.WherePasses(classFilter);
 - foreach (View view in views)
 - {
 - if (view.CanBePrinted)
 - {
 - set.Insert(view);
 - }
 - }
 - using (Transaction transaction = new Transaction(RevitDoc))
 - {
 - transaction.Start("Задаем виды для печати");
 - vss.InSession.Views = set;
 - transaction.Commit();
 - }
 - }
 - catch (Exception ex)
 - {
 - TaskDialog.Show("ERROR", ex.ToString());
 - }
 
Примечание: На самом деле можно задать нужное свойство и без диалога печати, а сделать это с помощью API. Т.е. до того, как обращаться к свойству PrintManager.ViewSheetSetting нужно задать PrintManager.PrintRange = PrintRange.Select; и тогда исключение не возникнет.
Источник: http://adndevblog.typepad.com/aec/2015/04/set-views-to-print-with-revitapi.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=2664
Опубликовано 25.04.2015