0

客观的

大家好,我正在 Revit 中制作一个按钮,用于将单个视口添加到新工作表,然后更改视口以显示 viewTitle 而不是空的或只是一行

错误

当我第一次运行该按钮时,除了视图标题未设置为加载的系列外,一切正常,尽管视图标题“行”正在显示。当我第二次运行该按钮时出现我的错误。

这是我第二次尝试运行按钮时遇到的错误:

Exception thrown: 'Autodesk.Revit.Exceptions.InternalException' in RevitAPI.dll
A managed exception was thrown by Revit or by one of its external applications.

错误发生在这一行:

Viewport newViewPort = Viewport.Create(doc, viewSheet.Id, duplicatedPlan2Copy, new XYZ(location.U, location.V, 0));

勘探

根据我的研究,该按钮正在尝试访问已被访问的元素,但如果我正在更改比例,我应该能够更改 ViewTitle。请参阅此问题底部的参考资料

这是我在交易中的一些代码

FamilySymbol firstSheet = colTitleBlocks.FirstElement() as FamilySymbol;
ViewSheet viewSheet = ViewSheet.Create(doc, firstSheet.Id);
UV location = new UV((viewSheet.Outline.Max.U - viewSheet.Outline.Min.U) / 2,
                                            (viewSheet.Outline.Max.V - viewSheet.Outline.Min.V) / 2);

ElementId duplicatedPlan2Copy = duplicatedPlan.Duplicate(ViewDuplicateOption.WithDetailing);
Viewport newViewPort = Viewport.Create(doc, viewSheet.Id, duplicatedPlan2Copy, new XYZ(location.U, location.V, 0));

我发现 如果我从我的代码中删除这一行: bool elementType = doc.GetElement(newViewPort.GetTypeId()).get_Parameter(BuiltInParameter.VIEWPORT_ATTR_LABEL_TAG).Set(viewTitleIdCommand);

它可以工作,并且只能重复创建新图纸和放置带有视图标题行的视口。

任何和所有的帮助表示赞赏。 此处的此链接显示了 2 个单独的事务提交如何解决了该问题,但是我尝试了它并没有用。这个显示类似的东西

这是对我关于按钮的其他相关问题的参考

4

2 回答 2

0

我建议您首先通过用户界面手动探索和测试您想要的功能。一旦稳定、优化并按预期工作,您就可以通过 Revit API 以编程方式自动执行相同的步骤。这可能会帮助您以比使用 API 更有效的方式了解问题所在,而 API 只是复制 UI 功能。

于 2020-05-09T10:06:40.463 回答
0

我已经想通了。我最初试图使用从我的LoadFamily类中加载的 TitleView 的 elementId,而不是通过过滤元素收集器找到 elementId。

我不确定为什么这会给我一个错误,但确实如此。

于 2020-05-13T23:05:17.207 回答