EaBIM

标题: Navisworks 模型数据和API简介 [打印本页]

作者: 萧闫子    时间: 2014-1-14 10:06
标题: Navisworks 模型数据和API简介

我的同事梁晓冬最近一年对Navisworks的支持工作产生了极高的热情,我想可能是国内对Navisworks关注/使用的用户越来越多吧。前些天我叫他写了一篇针对Navisworks初学者或者希望更进一步了解Navisworks的用户的技术类的介绍性文章。现在我把他的文章转贴在下面供大家学习:

NavisWorks 是目前Autodesk 在建筑业表现最突出的一款施工项目管理产品,它将带您进入具有巨大商机的建筑业施工管理行业,而掌握其API将为您提供基于 NavisWorks集成创新的工具,使您能够成为行业的领跑者。

Navisworks将原始模型数据转换成逻辑数据和全局数据两种类型。逻辑数据是将原始的逻辑结构转换到Navisworks场景中,它呈现出一种继承(树状)结构。全局数据是为了实现模型的快速优化显示。一般逻辑数据发生变化,全局数据将自动重建。

逻辑数据

我们以DWG文件为例。下图是一个简单的DWG在Navisworks中打开后的样子。有两列实体,分别在图层0和图层1上。左边的选择树(Selection Tree)面板中,顶层是文件test.dwg, 接着是0层,1层,在每一层放置了对应的实体。简单实体转换成对应的类型,例如圆à圆,文字à文字。复杂实体,例如块,被转换成 : 块实体à块定义à块定义中的实体。熟悉AutoCAD及其API的用户可以看出,这体现的是和AutoCAD类似的逻辑结构。


                               
登录/注册后可看大图

以上示例经过抽象化,就如下图的树形结构。树上的每个元素是节点,从根节点开始直到最后节点的分支就是一条路径。每个路径是唯一的,末梢节点是几何元素。


                               
登录/注册后可看大图

Navisworks 的API提供了相应的对象来操作逻辑数据。开发包的例子ACTX_06展示了如何遍历逻辑结构树和访问节点属性信息。

API 对象
说 明
InwOaPatition
顶层对象,根节点,存储文件基本信息,材料以及全局转换矩阵
InwOaPath
路径对象,可访问其中的每个节点
InwOaNode
节点对象,可为组节点(图层或insert),几何节点,并存储对应的属性信息

全局数据

当原始数据转换成全局数据时,被离散为很多碎片Fragments)。 Navisworks根据其算法来灵活使用这些碎片,达到显示和速度上的最优化。一个原始实体将可能产生多个碎片。例如:它拥有多个材料,那么每个材料就生成一个碎片。即使在上面DWG例子中一个简单的圆,在转换后也会有两个碎片,分别对应其捕捉点和具体几何数据。全局数据对最终用户来说是不可见的。


                               
登录/注册后可看大图

碎片的API对象是InwOaFragment,它存储了碎片的转换矩阵,碎片所在的路径等信息。Navisworks没有保留原始的几何信息,不过要访问Navisworks场景中的几何数据,可以用碎片的GenerateSimplePrimitives方法。该方法需要传入回调类InwSimplePrimitivesCB,它提供了顶点,三角面片,线元等数据。

属性

由于Navisworks有着自己的数据结构,原始的数据大部分会被转换成属性Attribute)。每个节点会存储多个属性,形成属性集合。而如果是特性属性则会包含多个特性Property)。这些属性存储在节点InwOaNode之中。属性有很多种类,例如材料信息,变换矩阵信息等。它对于对于最终用户是不可见的,而且目前不能创建/删除/修改属性。

每个属性有三个名字。通过这些名字,我们可以用Navisworks查找方面的API去搜素相应的属性及其内容。请参考开发包例子ACTX_05。

名字
说 明
ClassUserName
用户定义的名字。随不同语言版本而不同(只读)
ClassName
所有版本都相同,唯一标识属性的名字(只读)
UserName
可选的名字(读写)


Navisworks还有GUI 属性,它对应用户界面的properties。每个对象存储的GUI属性大部分和上面提到的属性一样。但最终用户能够看到。而且无论UI还是API都可以添加自定义的GUI属性。但需要注意,如果是由Navisworks转换原始数据创建的GUI属性,例如下图中的项目(Item)选项卡,UI或API都不能对它进行修改或删除。开发包实例AUTO_06演示了如何操作GUI属性。


                               
登录/注册后可看大图


对象的ID

很多用户会关心标识对象的ID,也有人注意到Navisworks的任何对象都有一个成员: nwID,实际上它代表的是底层的C++指针,每次启动Navisworks时将会变化。因此它不能作为ID。我们已经提交了一个需求,希望开发部能给对象提供唯一的ID。不过目前也不是毫无办法,其实, Navisworks转换DWG文件会把每个实体的句柄变成一个属性(ClassName: LcOaNat64AttributeValue)。如果是Micorstation (DGN)文件,则转换名为"Element"的属性,如果是ArchiCAD文件,则名为GUID。在UI的properties面板也可以看到。因此,你可以根据文件类型来找寻对应的属性,获取ID。


                               
登录/注册后可看大图

选择集

和大多数CAD软件开发一样,用户经常需要选择集(InwOpSelection)。 通过选择集,我们可以访问到其中包含的路径,节点等信息,进行操作。若最终用户选择了一些实体,API 最顶层对象state的成员CurrentSelection将返回这个选择集。也可以通过API来构造选择集,一个方法是InwOpState::SeekSelection,它传入回调函数类:InwSeekSelection,在这个类方法SelectNode中,按照你设置的条件来构成选择集。另一方法是利用查找方面的API,通过设置属性/特性的条件搜索到一个选择集,请查阅开发包例子ACTX_05。


                               
登录/注册后可看大图

一个选择集如果有了名字,则成为SelectionSet (InwOpSelectionSet)。文件刚转换到Navisworks中是没有SelectionSet的,用户界面也不会显示SelectionSet面板。一旦有了某个SelectionSet,你就可以看到这个面板。


                               
登录/注册后可看大图

综上所述,对Navisworks模型数据的开发主要围绕对逻辑数据,全局数据,属性的操作。具体的信息请参阅开发包的帮助文档以及样例。更多关于Navisworks介绍,请访问:



文章来源:http://blog.csdn.net/barbarahan/article/details/4864519


作者: dglei88    时间: 2014-2-12 21:37
学习了
作者: xy666    时间: 2014-2-17 11:30
(*^__^*) 嘻嘻……
作者: 秦惑    时间: 2014-2-17 11:32
路过!!!
不发表意见……
作者: chen_0003    时间: 2014-2-17 11:34
路过!!!
帮顶……
作者: 乖乖仔    时间: 2014-2-17 11:37
(*^__^*) 嘻嘻……
作者: 车晶晶    时间: 2014-2-17 11:39
顶......
楼下跟上.....
作者: 车晶晶    时间: 2014-2-17 11:40
路过!!!
不发表意见……
作者: 大头佬    时间: 2014-2-17 11:43
路过!!!
帮顶……
作者: dglei88    时间: 2014-2-17 11:45
路过!!!
不发表意见……
作者: 飞天舞    时间: 2014-2-17 11:46
顶!!!!!!!!!!
作者: cocacola    时间: 2014-2-17 11:48
路过!!!
帮顶……
作者: 影馨    时间: 2014-2-17 11:53
(*^__^*) 嘻嘻……
作者: 野风    时间: 2014-2-17 11:54
顶......
楼下跟上.....
作者: 一梦千寻    时间: 2014-2-17 11:56
路过!!!
不发表意见……
作者: 卡巴kala    时间: 2014-2-17 11:57
顶!!!!!!!!!!
作者: levin    时间: 2014-2-17 12:00
顶!!!!!!!!!!
作者: MIMDxFzL    时间: 2014-2-17 12:02
路过!!!
帮顶……
作者: OK佬    时间: 2014-2-17 12:03
顶......
楼下跟上.....
作者: 筱雅    时间: 2014-2-17 12:05
顶起来…………
作者: AK47    时间: 2014-2-17 12:07
路过!!!
帮顶……
作者: xy666    时间: 2014-2-19 15:11
(*^__^*) 嘻嘻……
作者: zj1345    时间: 2014-2-19 15:12
顶!!!!!!!!!!!!!!!!!!!!!!!!!
作者: 欧宝    时间: 2014-2-19 15:14
(*^__^*) 嘻嘻……
作者: 爬爬``PA    时间: 2014-2-19 15:15
路过!!!
不发表意见……
作者: 莞人莞事    时间: 2014-2-19 15:17
顶起来…………
作者: 月之影    时间: 2014-2-19 15:19
路过!!!
不发表意见……
作者: 順順    时间: 2014-2-21 14:40
(*^__^*) 嘻嘻……
作者: 苦田辛君    时间: 2014-2-21 14:41
顶!!!!!!!!!!
作者: 冰雨    时间: 2014-2-21 14:42
(*^__^*) 嘻嘻……
作者: dgpeihua    时间: 2014-2-21 14:43
顶!!!!!!!!!!!!!!!!!!!!!!!!!
作者: dglei88    时间: 2014-2-26 15:56
(*^__^*) 嘻嘻……
作者: 元劭    时间: 2014-2-26 15:58
顶!!!!!!!!!!!!!!!!!!!!!!!!!
作者: an5828    时间: 2014-2-26 16:50
不知道怎么样
作者: 千里独行    时间: 2014-2-27 15:41
路过!!!
帮顶……
作者: 野风    时间: 2014-2-27 15:42
顶!!!!!!!!!!!!!!!!!!!!!!!!!
作者: 代号蓝牙    时间: 2014-2-27 15:43
(*^__^*) 嘻嘻……
作者: 苦田辛君    时间: 2014-2-27 15:43
顶起来…………
作者: 宇航员    时间: 2014-2-28 11:56
顶!!!!!!!!!!!!!!!!!!!!!!!!!
作者: 教父    时间: 2014-2-28 11:58
顶......
楼下跟上.....
作者: 代号蓝牙    时间: 2014-3-4 14:15
(*^__^*) 嘻嘻……
作者: 大头佬    时间: 2014-3-4 14:18
(*^__^*) 嘻嘻……
作者: chen_0003    时间: 2014-3-5 16:53
(*^__^*) 嘻嘻……
作者: 楚客    时间: 2014-3-5 16:55
路过!!!
帮顶……
作者: 苦田辛君    时间: 2014-3-5 16:55
顶......
楼下跟上.....
作者: 欧宝    时间: 2014-3-5 16:56
顶!!!!!!!!!!!!!!!!!!!!!!!!!
作者: 国产008    时间: 2014-3-5 16:57
顶起来…………
作者: 风吹枫落    时间: 2014-3-10 13:10
了解下BIM.....
作者: 木鬼    时间: 2014-3-10 13:12
看看啥…………
作者: 大头佬    时间: 2014-3-10 13:22
楼主辛苦……
作者: 等你回来    时间: 2014-3-10 13:24
谢谢!!!
帮顶……
作者: dgren    时间: 2014-3-10 13:27
顶起来…………
作者: 看看侃侃    时间: 2014-3-10 13:28
谢谢老师…
作者: 筱雅    时间: 2014-3-10 13:31
看看啥…………
作者: 沧海冷月    时间: 2014-3-11 10:54
了解下BIM.....
作者: dgpeihua    时间: 2014-3-11 10:55
谢谢!!!
帮顶……
作者: 泰安oim    时间: 2014-3-11 10:57
谢谢老师…
作者: 宇航员    时间: 2014-3-11 11:00
看看啥…………
作者: 矮矮    时间: 2014-3-11 11:01
顶!!!!!!!!!!
作者: 老朽    时间: 2014-3-11 11:02
看看啥…………
作者: zj1345    时间: 2014-3-11 11:04
看看啥…………
作者: 沧海冷月    时间: 2014-3-12 13:57
路过!!!
帮顶……
作者: dgren    时间: 2014-3-12 13:59
路过!!!
帮顶……
作者: cocacola    时间: 2014-3-12 14:00
(*^__^*) 嘻嘻……
作者: 烈火ivk    时间: 2014-3-12 14:02
顶起来…………
作者: 极HONDA速    时间: 2014-3-12 14:03
路过!!!
不发表意见……
作者: xy666    时间: 2014-3-12 14:06
顶......
楼下跟上.....
作者: 順順    时间: 2014-3-12 14:07
顶......
楼下跟上.....
作者: 嫣雨遥    时间: 2014-3-12 14:08
(*^__^*) 嘻嘻……
作者: 静儿    时间: 2014-3-12 14:10
顶......
楼下跟上.....
作者: chen_0003    时间: 2014-3-12 14:11
顶!!!!!!!!!!!!!!!!!!!!!!!!!
作者: OK佬    时间: 2014-3-12 14:12
路过!!!
帮顶……
作者: 代号蓝牙    时间: 2014-3-12 14:13
顶......
楼下跟上.....
作者: 熊猫    时间: 2014-3-12 14:14
顶!!!!!!!!!!
作者: 风浪子    时间: 2014-3-12 14:15
顶起来…………
作者: 言子    时间: 2014-3-13 14:59

好强大啊,谢谢哈
作者: 千里独行    时间: 2014-4-14 11:33
顶!!!!!!!!!!!!!!!!!!!!!!!!!
作者: We晕晕    时间: 2014-4-14 11:34
路过!!!
不发表意见……
作者: 长风    时间: 2014-4-14 11:35
路过!!!
帮顶……
作者: 妮可    时间: 2014-4-14 11:35
顶!!!!!!!!!!
作者: best    时间: 2014-4-14 11:36
顶......
楼下跟上.....
作者: AK47    时间: 2014-4-14 11:37
顶起来…………
作者: dglei88    时间: 2014-4-14 11:37
(*^__^*) 嘻嘻……
作者: 风吹枫落    时间: 2014-4-14 11:38
路过!!!
不发表意见……
作者: 苦田辛君    时间: 2014-4-14 11:38
(*^__^*) 嘻嘻……
作者: 嫣雨遥    时间: 2014-4-14 11:39
顶!!!!!!!!!!
作者: 中华!    时间: 2014-4-14 11:39
顶!!!!!!!!!!
作者: 风吹枫落    时间: 2014-4-14 11:40
顶起来…………
作者: 猫猫girl    时间: 2014-4-14 11:41
顶起来…………
作者: 千里独行    时间: 2014-4-14 11:41
顶!!!!!!!!!!!!!!!!!!!!!!!!!
作者: 波罗友    时间: 2014-4-14 11:43
顶......
楼下跟上.....
作者: lw7511    时间: 2014-4-14 11:45
(*^__^*) 嘻嘻……
作者: 入樽    时间: 2014-4-14 11:46
(*^__^*) 嘻嘻……
作者: audigy    时间: 2014-4-14 11:48
路过!!!
帮顶……
作者: audigy    时间: 2014-4-14 11:49
顶......
楼下跟上.....
作者: 国产008    时间: 2014-4-14 11:51
路过!!!
帮顶……
作者: gba8297517    时间: 2014-4-14 11:52
顶起来…………
作者: 秦惑    时间: 2014-4-14 11:54
路过!!!
不发表意见……
作者: 元劭    时间: 2014-4-14 11:55
路过!!!
帮顶……
作者: leowave    时间: 2014-4-14 11:57
顶......
楼下跟上.....




欢迎光临 EaBIM (https://eabim.net/) Powered by Discuz! X3.2