0

我正在做一个项目,我需要在 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?
如果有人可以指导我,那就太好了。
谢谢

4

2 回答 2

0

是的,您可以使用 Revit API 在 Forge Design Automation 上下文中创建共享参数。为了更容易进行测试,我建议您在进入设计自动化上下文之前在普通桌面 Revit 中实现和测试所需的功能。Building Coder 在DA4R – Design Automation for Revit的相应主题组中提供了更多提示。

于 2019-07-02T09:21:57.757 回答
0

我碰巧制作了一个演示来使用 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();
                    }

希望能帮助到你。

于 2019-07-03T11:14:19.147 回答