2013-02-18 2 views
1

Кто-нибудь работал с настройкой свойства InSession.Views? Проблема заключается в том, что когда я устанавливаю следующее свойство сразу после открытия документа, он не работает (т. Е. Размер представления по-прежнему равен 0, хотя viewSet имеет 4 элемента).Настройка ViewSheetSetting.InSession.Views Свойство

revitDocument.PrintManager.ViewSheetSetting.InSession.Views = viewSet; 

, но после того, как изменения в Session-набор просмотр/листа с помощью диалогового окна печати в revit, то можно назначить на него.

кто-нибудь знает почему?

ответ

0

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(); 
+0

благодарит за ответ. Я подумал, что это было давно, а временный viewheetset - это то, что я сделал в конце ... – alital

0

В Revit 2015 с использованием VB.Net я не мог заставить эту ViewSheetSet Colletor работать так:

Dim VSSCollector As New FilteredElementCollector(curDoc) 
VSSCollector.OfClass(oftype(ViewSheetSet)) 

Вместо этого я использовал это, и она работала:

Dim VSSCollector As New FilteredElementCollector(curDoc) 
VSSCollector.OfClass(GetType(ViewSheetSet))