如何在 Revit API 中的所有元素上设置 "Room Bounding" 属性
How to set "Room Bounding" attribute on all elements in Revit API
我想遍历文档中的所有元素,如果它们具有 Room Bounding 属性,则将它们的 "Room Bounding" 属性设置为正值。
迭代墙壁我可以这样做:
Parameter param = e.get_Parameter(BuiltInParameter.WALL_ATTR_ROOM_BOUNDING).Set("Yes");
但是,如何为列执行此操作?或者其他有这个属性的元素?
我尝试遍历所有元素并使用以下方法获取它们的参数:
IList<Parameter> ps = e.GetOrderedParameters();
但我要寻找哪个属性?是"Room Bounding"吗?我是将它设置为 "Yes" 还是其他任何东西?
编辑:
我首先从这个开始:
https://thebuildingcoder.typepad.com/blog/2008/09/selecting-all-w.html
调整代码以检索 Room Bounding 参数。
然后更改我的代码以支持所有元素,正如我提到的问题并使用:
https://thebuildingcoder.typepad.com/blog/2018/05/getting-all-parameter-values.html
我用它来打印所有参数名称及其值,但是我在列中找不到 Room Bounding 参数。
我可以轻松地在墙上做到这一点。
mycolumnList[i].LookupParameter("Room Bounding").AsInteger() != 1)
但这也没有用。
我应该在实例参数还是类型参数中查找 "Room Bounding"?
请关注
standard approach to research and solve a Revit API programming task:
- 通过最终用户界面手动确定最佳解决方案。确保遵循最佳实践并利用现有的内置 Revit 功能。如果您跳过此步骤或研究不够深入,您将 运行 编写一些难以实现、维护、调试和使用的东西的很大风险。
- 确定将帮助您完成任务的 Revit 类、方法和属性的名称。例如,创建适当的情况并通过用户界面对 BIM 进行采样,并在进行所需修改之前和之后对其进行分析,例如,使用:
- RevitLookup
- BipChecker
- The element lister
- Other, more intimate Revit database exploration tools,如RevitPython或Rubyshell
- 了解需要哪些 Revit API 对象后,了解如何访问、操纵和驱动它们、它们之间的关系以及它们如何相互作用:
- Revit API 帮助文件
RevitAPI.chm
在本地安装或 online at revitapidocs.com 提供有关 类、属性和方法的详细信息。
- Revit online help > Developers > Revit API Developers Guide 更深入地解释了 Revit API 的用法并提供了宝贵的背景信息。
- 本地安装并由 Visual Studio 通过
SDKSamples.sln
管理的 Revit SDK 示例集合展示了 Revit API 对象如何协同工作以解决特定任务。
- The Building Coder samples 提供了另一大堆示例外部命令来实现许多不同的任务。
用尽这些选项后,在 Internet 上搜索 'revit api' 或 'thebuildingcoder' 以及您感兴趣的 Revit API 名称。
我非常希望这能全面解决您的问题,不仅能暂时满足您的需求,还能在您成为未来有能力的渔夫的过程中为您提供支持。
我想我会 post 一个解决方案来帮助遇到类似问题的其他人。
给定列 e,以下代码将 "Room Bounding" 参数更改为 True。
(请注意此代码不处理异常)
FamilyInstance famInst = e as FamilyInstance;
Parameter family_bound_param = famInst.LookupParameter("Room Bounding");
if (family_bound_param.AsValueString() == "No")
{
using (Transaction t = new Transaction(doc, "param"))
{
t.Start();
family_bound_param.Set(1);
t.Commit();
}
}
感谢 Jeremy 的指导!
我想遍历文档中的所有元素,如果它们具有 Room Bounding 属性,则将它们的 "Room Bounding" 属性设置为正值。
迭代墙壁我可以这样做:
Parameter param = e.get_Parameter(BuiltInParameter.WALL_ATTR_ROOM_BOUNDING).Set("Yes");
但是,如何为列执行此操作?或者其他有这个属性的元素?
我尝试遍历所有元素并使用以下方法获取它们的参数:
IList<Parameter> ps = e.GetOrderedParameters();
但我要寻找哪个属性?是"Room Bounding"吗?我是将它设置为 "Yes" 还是其他任何东西?
编辑: 我首先从这个开始: https://thebuildingcoder.typepad.com/blog/2008/09/selecting-all-w.html 调整代码以检索 Room Bounding 参数。
然后更改我的代码以支持所有元素,正如我提到的问题并使用: https://thebuildingcoder.typepad.com/blog/2018/05/getting-all-parameter-values.html
我用它来打印所有参数名称及其值,但是我在列中找不到 Room Bounding 参数。 我可以轻松地在墙上做到这一点。
mycolumnList[i].LookupParameter("Room Bounding").AsInteger() != 1)
但这也没有用。
我应该在实例参数还是类型参数中查找 "Room Bounding"?
请关注 standard approach to research and solve a Revit API programming task:
- 通过最终用户界面手动确定最佳解决方案。确保遵循最佳实践并利用现有的内置 Revit 功能。如果您跳过此步骤或研究不够深入,您将 运行 编写一些难以实现、维护、调试和使用的东西的很大风险。
- 确定将帮助您完成任务的 Revit 类、方法和属性的名称。例如,创建适当的情况并通过用户界面对 BIM 进行采样,并在进行所需修改之前和之后对其进行分析,例如,使用:
- RevitLookup
- BipChecker
- The element lister
- Other, more intimate Revit database exploration tools,如RevitPython或Rubyshell
- 了解需要哪些 Revit API 对象后,了解如何访问、操纵和驱动它们、它们之间的关系以及它们如何相互作用:
- Revit API 帮助文件
RevitAPI.chm
在本地安装或 online at revitapidocs.com 提供有关 类、属性和方法的详细信息。 - Revit online help > Developers > Revit API Developers Guide 更深入地解释了 Revit API 的用法并提供了宝贵的背景信息。
- 本地安装并由 Visual Studio 通过
SDKSamples.sln
管理的 Revit SDK 示例集合展示了 Revit API 对象如何协同工作以解决特定任务。 - The Building Coder samples 提供了另一大堆示例外部命令来实现许多不同的任务。
- Revit API 帮助文件
用尽这些选项后,在 Internet 上搜索 'revit api' 或 'thebuildingcoder' 以及您感兴趣的 Revit API 名称。
我非常希望这能全面解决您的问题,不仅能暂时满足您的需求,还能在您成为未来有能力的渔夫的过程中为您提供支持。
我想我会 post 一个解决方案来帮助遇到类似问题的其他人。
给定列 e,以下代码将 "Room Bounding" 参数更改为 True。 (请注意此代码不处理异常)
FamilyInstance famInst = e as FamilyInstance;
Parameter family_bound_param = famInst.LookupParameter("Room Bounding");
if (family_bound_param.AsValueString() == "No")
{
using (Transaction t = new Transaction(doc, "param"))
{
t.Start();
family_bound_param.Set(1);
t.Commit();
}
}
感谢 Jeremy 的指导!