Revit хранит текущий вид, заданный в переменной Document.PrintManager.ViewSheetSetting.CurrentViewSheetSet
, и это то, что он действительно использует. В начале, когда вы устанавливаете InSession
, вместо этого вы должны установить CurrentViewSheetSet
. Причина, по которой он работает после использования диалогового окна печати, заключается в том, что он устанавливает CurrentViewSheetSet
в InSession
. Я бы сделал, чтобы создать временный ViewSheetSetting
на открывшемся документе, а затем удалить его, когда документ закроется. Ниже приведен код, который я использовал, хотя с моим я только сохранил ViewSheetSetting
для области одного вызова функции, а не из документа, открытого для закрытия документа.
Для открытого
const string tempoarySheetSetSettingName = "Temp Sheet Set";
ViewSheetSetting viewSheetSetting = _printManager.ViewSheetSetting;
//Save your temporary sheet set
_printManager.ViewSheetSetting.SaveAs(tempoarySheetSetSettingName);
ViewSheetSet selected = null;
FilteredElementCollector viewCollector = new FilteredElementCollector(document);
viewCollector.OfClass(typeof(ViewSheetSet));
//Find the sheet set that you just created
foreach (ViewSheetSet set in viewCollector.ToElements())
{
if (String.Compare(set.Name, tempoarySheetSetSettingName) == 0)
{
selected = set;
break;
}
}
//Set the current view sheet set to the one that you just created
viewSheetSetting.CurrentViewSheetSet = selected;
//Set the views to which ever set you would like to print
viewSheetSetting.CurrentViewSheetSet.Views = viewSetToPrint;
viewSheetSetting.Save();
Для печати
Ваш пользователь должен будет выбрать временный набор вид, который вы создали, когда они печатают.
Для Закрыть
_printManager.ViewSheetSetting.Delete();
благодарит за ответ. Я подумал, что это было давно, а временный viewheetset - это то, что я сделал в конце ... – alital