目标
大家好,我正在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个独立的事务提交如何解决这个问题,但是我试了一下,并没有成功。这个显示了类似的东西
我建议你先通过用户界面手动探索和测试你的预期功能。一旦稳定和优化,并按预期工作,你可以转移到通过Revit API自动编程相同的步骤。这可能会帮助你了解问题所在,比在API上挣扎要有效得多,因为API只是复制了用户界面的功能。
我已经想明白了。我最初尝试使用从我的 LoadFamily
类,而不是通过Filtered Element Collector来查找元素ID。
我不知道为什么会出现错误,但确实如此。