如何访问 Revit 的视图模板属性并实时比较它们?
How to access View Template Properties for Revit and compare them in Real Time?
我正在尝试列出视图模板的属性,以便我们可以将它们与另一个旧模板进行比较。
例如,在给定模板中隐藏或覆盖了哪些模型元素,或者在给定模板中隐藏或覆盖了哪些 Revit 链接。
我想设计一个视图模板比较工具并访问它们的所有者和创建者。
public void ApplyViewTemplateToActiveView()
{
Document doc = this.ActiveUIDocument.Document;
View viewTemplate = (from v in new FilteredElementCollector(doc)
.OfClass(typeof(View))
.Cast<View>()
where v.IsTemplate == true && v.Name == "MyViewTemplate"
select v)
.First();
using (Transaction t = new Transaction(doc,"Set View Template"))
{
t.Start();
doc.ActiveView.ViewTemplateId = viewTemplate.Id;
t.Commit();
}
}
使用 Revit API 您可以访问:
GetTemplateParameterIds 方法/ViewTemplateId 属性
谢谢 Jeremy,我已经深入了解了您令人惊叹的网站以及 Konrad post 在 Dynamo 论坛中关于此的一些解决方案。在 Revit 中似乎很容易实现,您过滤作为视图模板的视图,然后提取这些属性,是否正确?
我想知道是否有人可以用 Forge 为我指明正确的方向。
一些了不起的人正在开发 BQL https://www.retriever.works/。
BQL(Building Query Language)是一种建筑查询语言,类似于SQL是一种数据库查询语言。它快速且灵活。 BQL 有助于提高 QA/QC(质量保证和质量控制)的效率,并在不离开 Revit 的情况下构建数据提取。我也在尝试这些,我想了解下周是否有一些我可以从 Forge 开始的工作。
是,也不是。
是的,我想您可以使用 Forge Model Derivative API 导出 RVT 文件,然后围绕视图模板数据构建仪表板。这是假设在转换模型时视图模板数据实际被导出。该数据未附加到任何几何体,因此如果它被跳过我也不会感到惊讶。这里的问题是为什么?这就像租一辆 16 轮卡车来搬运行李袋过马路。
否,如果您打算直接与 RVT 模型交互。 Forge 可以查看它,但无法将任何内容推回或请求对模型进行更改。再一次,我什至不确定视图模板数据是否可以通过模型衍生导出获得。
这给我带来了另一种选择。为什么不使用标准方法 Revit API 收集数据,然后将其推送到数据库并在此基础上构建?没有理由为此雇用 Forge。
Revit API 公开了几乎所有的 ViewTemplate 属性。
例如,此方法 returns 所有 Visibility/Graphic 覆盖特定类别:
https://apidocs.co/apps/revit/2019/ed267b82-56be-6e3b-0c6d-4de7df1ed312.htm
我唯一无法获得 ViewTemplate 的是 "includes",但其余的似乎都在那里。
更新:
可以使用 GetNonControlledTemplateParameterIds()
.
检索列表或属性 "not included"
我正在尝试列出视图模板的属性,以便我们可以将它们与另一个旧模板进行比较。 例如,在给定模板中隐藏或覆盖了哪些模型元素,或者在给定模板中隐藏或覆盖了哪些 Revit 链接。
我想设计一个视图模板比较工具并访问它们的所有者和创建者。
public void ApplyViewTemplateToActiveView()
{
Document doc = this.ActiveUIDocument.Document;
View viewTemplate = (from v in new FilteredElementCollector(doc)
.OfClass(typeof(View))
.Cast<View>()
where v.IsTemplate == true && v.Name == "MyViewTemplate"
select v)
.First();
using (Transaction t = new Transaction(doc,"Set View Template"))
{
t.Start();
doc.ActiveView.ViewTemplateId = viewTemplate.Id;
t.Commit();
}
}
使用 Revit API 您可以访问: GetTemplateParameterIds 方法/ViewTemplateId 属性
谢谢 Jeremy,我已经深入了解了您令人惊叹的网站以及 Konrad post 在 Dynamo 论坛中关于此的一些解决方案。在 Revit 中似乎很容易实现,您过滤作为视图模板的视图,然后提取这些属性,是否正确? 我想知道是否有人可以用 Forge 为我指明正确的方向。 一些了不起的人正在开发 BQL https://www.retriever.works/。 BQL(Building Query Language)是一种建筑查询语言,类似于SQL是一种数据库查询语言。它快速且灵活。 BQL 有助于提高 QA/QC(质量保证和质量控制)的效率,并在不离开 Revit 的情况下构建数据提取。我也在尝试这些,我想了解下周是否有一些我可以从 Forge 开始的工作。
是,也不是。
是的,我想您可以使用 Forge Model Derivative API 导出 RVT 文件,然后围绕视图模板数据构建仪表板。这是假设在转换模型时视图模板数据实际被导出。该数据未附加到任何几何体,因此如果它被跳过我也不会感到惊讶。这里的问题是为什么?这就像租一辆 16 轮卡车来搬运行李袋过马路。
否,如果您打算直接与 RVT 模型交互。 Forge 可以查看它,但无法将任何内容推回或请求对模型进行更改。再一次,我什至不确定视图模板数据是否可以通过模型衍生导出获得。
这给我带来了另一种选择。为什么不使用标准方法 Revit API 收集数据,然后将其推送到数据库并在此基础上构建?没有理由为此雇用 Forge。
Revit API 公开了几乎所有的 ViewTemplate 属性。 例如,此方法 returns 所有 Visibility/Graphic 覆盖特定类别:
https://apidocs.co/apps/revit/2019/ed267b82-56be-6e3b-0c6d-4de7df1ed312.htm
我唯一无法获得 ViewTemplate 的是 "includes",但其余的似乎都在那里。
更新:
可以使用 GetNonControlledTemplateParameterIds()
.