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

萧闫子 发表于 2014-1-16 11:44:12

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

实体句柄值作为模型的“身份证”,在许多场合都有重要作用。例如,在按条件搜索模型时,便可通过实体句柄的值来进行搜索。实体句柄往往扮演着“桥梁”的角色,将模型与施工信息一一对应起来。模型的实体句柄值可以在“特性”或者“选择树”中显示,然而,在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;//读取实体句柄
               MessageBox.Show(EntityHandle);//弹出对话框显示EntityHandle
                }
      }
      }
这样就可以在调用此函数,获取模型的实体句柄了。希望对大家有帮助!
文章来源:http://blog.sina.com.cn/s/blog_581b5f8901015qmd.html

chengshangkeji 发表于 2015-2-5 09:40:30

楼主好,我是个新手,想请教下,这个代码应该如何添加到nw中呢?因为要给图元添加额外图元特性,所以很需要这个。希望楼主能指点迷津。不胜感激

dglei88 发表于 2014-2-12 21:37:36

不大懂专业的代码

sw8111 发表于 2015-10-19 11:24:30

gaoshoua kanbudong xuexi

JHXT杰西卡 发表于 2014-2-13 10:20:51

很专业啊

等你回来 发表于 2014-2-17 11:29:06

顶!!!!!!!!!!!!!!!!!!!!!!!!!

国产008 发表于 2014-2-17 11:29:48

顶起来…………

xy666 发表于 2014-2-17 11:30:34

路过!!!
不发表意见……

大洪p1938 发表于 2014-2-17 11:32:26

顶!!!!!!!!!!

车晶晶 发表于 2014-2-17 11:33:30

路过!!!
帮顶……

zpklfruV 发表于 2014-2-17 11:35:38

路过!!!
帮顶……

秦惑 发表于 2014-2-17 11:36:58

顶......
楼下跟上.....

xy666 发表于 2014-2-17 11:38:03

路过!!!
不发表意见……

老朽 发表于 2014-2-17 11:40:14

顶......
楼下跟上.....

冰雨 发表于 2014-2-17 11:41:18

(*^__^*) 嘻嘻……

dison 发表于 2014-2-17 11:43:09

路过!!!
不发表意见……

dgpeihua 发表于 2014-2-17 11:44:13

路过!!!
不发表意见……
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 如何用Naviswork二次开发读取模型的实体句柄值?