EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 17431|回复: 214
打印 上一主题 下一主题

如何用Naviswork二次开发读取模型的实体句柄值?

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12404

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-16 11:44:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实体句柄值作为模型的“身份证”,在许多场合都有重要作用。例如,在按条件搜索模型时,便可通过实体句柄的值来进行搜索。实体句柄往往扮演着“桥梁”的角色,将模型与施工信息一一对应起来。模型的实体句柄值可以在“特性”或者“选择树”中显示,然而,在Navisworks二次开发中,如何通过程序来读取实体句柄值呢?
  思路:遍历模型的特性,找到实体句柄,读取值。
        string handlevalue;
        string[] HandleValue;
        string EntityHandle;
        public void 获取实体句柄()//一个获取实体句柄的函数
        {
          if(Autodesk.Navisworks.Api.Application.ActiveDocument != null &&
             !Autodesk.Navisworks.Api.Application.ActiveDocument.IsClear)
            {
                documentControl1.Document.Tool.Value = Autodesk.Navisworks.Api.Tool.Select;   
                foreach (ModelItem item in Autodesk.Navisworks.Api.Application.ActiveDocument.CurrentSelection.SelectedItems)
                {
                    //iterate the item's PropertyCategory entries
                    foreach (PropertyCategory category in item.PropertyCategories)
                    {
                        //iterate over the DataPropertys
                        foreach (DataProperty dataProperty in category.Properties)
                        {
                            if (dataProperty.CombinedName.Name.ToString() == "LcOaNat64AttributeValue")//"LcOaNat64AttributeValue"我个人理解是在系统中的名称,我认为此步也可以读取dataProperty.DisplayName.Name.ToString(),只是需要调试一下,可以尝试                        
  {

                  handlevalue = dataProperty.Value.ToString();//得到是字符串类似“displaystring:EB4”
                   HandleValue = handlevalue.Split(':');//按“:”分割
                   EntityHandle = dataProperty.Value.ToString();
                   MessageBox.Show(EntityHandle);
                            }
                        }
                    }

                 EntityHandle = HandleValue[1];//读取实体句柄
                 MessageBox.Show(EntityHandle);//弹出对话框显示EntityHandle
                }
        }
        }
这样就可以在调用此函数,获取模型的实体句柄了。希望对大家有帮助!
文章来源:http://blog.sina.com.cn/s/blog_581b5f8901015qmd.html

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对

相关帖子

工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言

3

主题

30

帖子

70

积分

BIM助工

Rank: 2Rank: 2

积分
70

社区QQ达人

推荐
发表于 2015-2-5 09:40:30 | 只看该作者
楼主好,我是个新手,想请教下,这个代码应该如何添加到nw中呢?因为要给图元添加额外图元特性,所以很需要这个。希望楼主能指点迷津。不胜感激

23

主题

898

帖子

1564

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1564
推荐
发表于 2014-2-12 21:37:36 | 只看该作者
不大懂  专业的代码

0

主题

226

帖子

200

积分

BIM工程师

Rank: 3Rank: 3Rank: 3

积分
200
推荐
发表于 2015-10-19 11:24:30 | 只看该作者
gaoshoua kanbudong xuexi

8

主题

767

帖子

1383

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1383
8F
发表于 2014-2-17 11:30:34 | 只看该作者
路过!!!
不发表意见……

4

主题

864

帖子

1390

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1390
12F
发表于 2014-2-17 11:36:58 | 只看该作者
顶......
楼下跟上.....

8

主题

767

帖子

1383

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1383
13F
发表于 2014-2-17 11:38:03 | 只看该作者
路过!!!
不发表意见……

4

主题

851

帖子

1307

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1307
14F
发表于 2014-2-17 11:40:14 | 只看该作者
顶......
楼下跟上.....

2

主题

885

帖子

1615

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1615
15F
发表于 2014-2-17 11:41:18 | 只看该作者
(*^__^*) 嘻嘻……

6

主题

873

帖子

1347

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1347
16F
发表于 2014-2-17 11:43:09 | 只看该作者
路过!!!
不发表意见……

7

主题

823

帖子

1345

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1345
17F
发表于 2014-2-17 11:44:13 | 只看该作者
路过!!!
不发表意见……
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-23 10:57

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表