是否有人设置InSession.Views
属性?
我遇到的问题是,当我在打开文档后立即设置以下属性时它不起作用(即,viewSet
有4个项目,视图大小仍为0)。
revitDocument.PrintManager.ViewSheetSetting.InSession.Views = viewSet;
但在使用revit
中的打印对话框修改会话中视图/图纸集后,我可以分配给它。
有谁知道为什么?
答案 0 :(得分: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();
答案 1 :(得分:0)
在使用VB.Net的Revit 2015中,我无法强制此ViewSheetSet Colletor像这样工作:
Dim VSSCollector As New FilteredElementCollector(curDoc)
VSSCollector.OfClass(oftype(ViewSheetSet))
相反,我使用了它并且它起作用了:
Dim VSSCollector As New FilteredElementCollector(curDoc)
VSSCollector.OfClass(GetType(ViewSheetSet))