如何在 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 中向元素添加参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Scala 中向数组添加元素并查找变量类型?

如何在 win32 API 中向 Skins 添加控件

如何在AS3中向数组添加元素?

如何在 Google Apps 脚本中向 UrlFetchApp 添加 API 密钥

如何在 React native redux 的 reducer 中向数组添加元素?

在 Laravel 中向 API 资源链接添加参数 [重复]