navisworks获取元素稳定唯一ID方法研究

21 篇文章 9 订阅

1. 前言

模型中的构件理论上来说都需要有一个唯一且稳定的ID,如revit中有elementId、uniqueId,IFC中有guid,dwg中有entityId......navisworks中的元素是不是也应该有这样的唯一ID?

2. 研究

2.1. navisworks api

modelItem.GetHashCode()

modelItem.InstanceHashCode

modelItem.InstanceGuid

可直接在官方社区搜索相关问题:Navisworks API - Autodesk Communityicon-default.png?t=LA92https://forums.autodesk.com/t5/navisworks-api/bd-p/600

2.2. 继续研究

  1. 经测试和查阅资料:modelItem.GetHashCode()获取到的值唯一但不稳定,即同一文件不同次数打开时获取到的值是变化的
  2. 经测试和查阅资料:modelItem.InstanceHashCode值不稳定,且对于元素不是唯一的,其对于同一类型的不同实例元素是一样的,比如4个类型和几何相同,但位置不同的的柱,其InstanceHashCode是一样的,这可以作为判断是否是实例化构件的依据。
  3. 经测试和查阅资料:modelItem.InstanceGuid值(当有效的情况下)是唯一且稳定的,但是它不一定有效,换句话说对于某些格式的模型导入navisworks软件时,这个值是有效的,对于某些格式的模型导入navisworks就可能无效!

额,那还有办法吗?

ModelItem.InstanceHashCode - Autodesk Community

 How to uniquely identify a model item - Autodesk Community

 

Unique field of Model item - Autodesk Community

Unique field of Model item - Autodesk Community

Getting unique ID of Navisworks element - Autodesk Community

Persistent item ID of Navisworks objects - AEC DevBlog

总结一下就是:

  • 由于navisworks具有很多文件格式解析器,支持导入打开不同格式的文件,而一些格式navisworks几乎不可能一开始就对每个元素计算出一个稳定的ID,所以没有这样的通用API
  • 对于不同格式,如revit、dwg、microstation格式、archicad格式,导入navisworks软件时都会保留模型属性,可以从属性中提取对应格式的唯一稳定ID

If you need stable, unique IDs on elements, the best bet is to use some attribute. If you are working with DWG files, you can use the Entity Handle attribute. If you are using MicroStation v8 files, you can use the Element ID. In an ArchiCAD model, you use GUIDs etc.

  • 由于支持多源异构模型数据的集成,不同格式又有各自的唯一稳定ID,navisworks不太可能用某一个全新的ID来标识元素,这样与原格式ID概念不符。如果想获取元素的ID,自己通过属性去按规则获取去吧...

这条总结中的观点我是持保留意见的。

作为一个软件有对应自己的格式,navisworks理应有自己的唯一稳定ID概念,只不过有两种选择,

1、其一是一种全新的计算规则方式的ID;

2、其二是将上述不同格式对应不同概念的唯一ID规则概念进行封装,即navisworks在导入不同格式文件时自动通过对应的方式取其ID作为自己的ID。但这样无疑是加大了系统复杂度,所以一般某种格式都有自己的ID概念,而不是兼容各种概念的ID。

3. 结论

如果自己仅处理或主要处理某几种格式,不妨按照上述按格式去取对应规则的ID方式去取ID。

注意:

对于revit格式想获取UniqueId的话,你必须将navisworks软件的选项中的revit解析器进行设置,这样才能导入这个属性!这样又增加了用户操作的复杂度,为什么不默认这样设置呢?

Revit UniqueId in Glue and Navisworks - The 360° View

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值