如何在 Forge API 中向元素添加参数
Posted
技术标签:
【中文标题】如何在 Forge API 中向元素添加参数【英文标题】:How to add parameters to an element in Forge API 【发布时间】:2019-11-11 20:09:06 【问题描述】:我正在做一个项目,我需要在 Forge API 中创建一个元素(例如一堵墙)并为其添加共享参数。
我使用 Revit 的设计自动化 API 创建了墙,但由于设计自动化 API 中没有 UI,我无法创建参数 有没有类似下面代码的方法,我们可以在 Revit API 的事务中编写。
if (element.LookupParameter(param).IsReadOnly == false)
if (!type.Name.Equals("Double"))
if (!string.IsNullOrEmpty(value.ToString()))
element.LookupParameter(param).Set(value.ToString());
else
if (!double.IsNaN((double)value))
element.LookupParameter(param).Set((double)value);
是否可以在 Design Automation API 中为特定元素创建实例和类型参数,还是必须使用其他 Forge API? 如果有人可以指导我,那就太好了。 谢谢
【问题讨论】:
【参考方案1】:我碰巧制作了一个演示来使用 Design Automation 的共享参数。源项目可在 https://github.com/xiaodongliang/Revit-room-space-with-Forge-viewer
它基于我们学习锻造教程的框架。添加共享参数的相关代码是这些行: https://github.com/xiaodongliang/Revit-room-space-with-Forge-viewer/blob/master/updateRVTParam/Commands.cs#L259-L269
//add shared parameter definition
AddSetOfSharedParameters(rvtDoc);
//......
//......
//add shared parameter to the specific shape
using (Transaction tx = new Transaction(rvtDoc))
tx.Start("Change P");
Element readyDS = rvtDoc.GetElement(roomId);
Parameter p = readyDS.LookupParameter("RoomNumber");
if (p != null)
p.Set(room.Number.ToString());
tx.Commit();
希望对你有帮助。
【讨论】:
【参考方案2】:是的,您可以使用 Revit API 在 Forge Design Automation 上下文中创建共享参数。为了更容易进行测试,我建议您在进入设计自动化上下文之前在普通桌面 Revit 中实现和测试所需的功能。 Building Coder 在DA4R – Design Automation for Revit 的相应主题组中提供了更多提示。
【讨论】:
以上是关于如何在 Forge API 中向元素添加参数的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Google Apps 脚本中向 UrlFetchApp 添加 API 密钥