Как задать виды для печати с помощью 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