2013-02-18 99 views
1

有沒有人設置InSession.Views屬性? 我遇到的問題是,當我在打開文檔後立即設置以下屬性時,它不起作用(即即使viewSet有4個項目,視圖大小仍然爲0)。設置ViewSheetSetting.InSession.Views屬性

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

但修改使用打印對話框中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

感謝您的回覆。我很早就想到了,臨時視圖集是我在最後做的...... – alital 2014-04-14 01:35:39

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))