1

有没有人处理过设置InSession.Views属性?我遇到的问题是,当我在打开文档后立即设置以下属性时,它不起作用(即视图大小仍然为 0,即使viewSet有 4 个项目)。

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

但是在使用中的打印对话框修改会话中视图/工作表集revit之后,我可以分配给它。

有谁知道为什么?

4

2 回答 2

0

Revit 将当前视图图纸集存储在变量Document.PrintManager.ViewSheetSetting.CurrentViewSheetSet中,这就是它真正使用的 . 在您设置的开始时,InSession您应该设置CurrentViewSheetSet。使用打印对话框后它工作的原因是它设置CurrentViewSheetSetInSession. 我要做的是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();
于 2014-04-08T15:36:48.513 回答
0

在使用 VB.Net 的 Revit 2015 中,我无法强制此 ViewSheetSet Collector 像这样工作:

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

相反,我使用了它并且它有效:

Dim VSSCollector As New FilteredElementCollector(curDoc)
VSSCollector.OfClass(GetType(ViewSheetSet))
于 2015-11-02T12:09:03.333 回答