如何访问Revit的视图模板属性并实时比较它们?

时间:2018-06-08 18:42:56

标签: view properties autodesk-forge autodesk revit

我正在尝试列出视图模板的属性,以便我们可以将它们与另一个旧模板进行比较。 例如,在给定模板中隐藏或覆盖了哪些模型元素,或者在给定模板中隐藏或覆盖了哪些Revit链接。

View Templatehttps://www.google.com/search?q=view+template+revit&rlz=1C1GGRV_enUS770US770&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjLndrd2cTbAhVESq0KHX1cAPwQ_AUICygC&biw=1536&bih=824#imgrc=Q0v-pV7Nxl4kfM:)

我正在设计一个视图模板比较工具,并访问它们的所有者和创建者。

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属性

3 个答案:

答案 0 :(得分:1)

Revit API公开了几乎所有的ViewTemplate属性。 例如,此方法返回特定类别的所有可见性/图形替代:

https://apidocs.co/apps/revit/2019/ed267b82-56be-6e3b-0c6d-4de7df1ed312.htm

我唯一无法获得ViewTemplate的东西是“包含”,但其余的似乎都在那里。

更新: 可以使用GetNonControlledTemplateParameterIds()检索“不包括”的列表或属性。

includes

答案 1 :(得分:0)

感谢Jeremy,我深入了解了你的网站以及Konrad在Dynamo论坛上发布的一些解决方案。在Revit中似乎可以实现,你过滤View模板然后提取这些属性,是否正确? 我想知道是否有人可以指出我与Forge正确的方向。 一些了不起的人正在开发一个BQL https://www.retriever.works/。 BQL(构建查询语言)是建筑物的查询语言,类似于SQL是数据库的查询语言。它快速而灵活。 BQL有助于提高QA / QC(质量保证和质量控制)的效率,并在不离开Revit的情况下构建数据提取。我也在尝试这些,我想了解是否有一些我可以从Forge下周开始的工作。

答案 2 :(得分:0)

是的,不。

是的,我猜你可以使用Forge Model Derivative API导出RVT文件,然后围绕View Templates数据构建一个仪表板。这假设视图模板数据实际上是在转换模型时导出的。该数据没有附加到任何几何体,所以如果它被跳过,我不会感到惊讶。这里的问题是为什么?这就像租用一辆16轮卡车在街道上移动行李袋一样。

不,如果您打算直接与RVT模型互动。 Forge可以查看它,但是要推回任何东西或请求更改模型,目前还不可用。然后,我甚至不确定视图模板数据是否可通过模型衍生出口获得。

这给我带来了另一种选择。为什么不使用标准方式Revit API收集数据,然后将其推送到数据库并在此基础上构建?没有理由将Forge用于其中任何一项。