如何用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
楼主好,我是个新手,想请教下,这个代码应该如何添加到nw中呢?因为要给图元添加额外图元特性,所以很需要这个。希望楼主能指点迷津。不胜感激 不大懂专业的代码 gaoshoua kanbudong xuexi 很专业啊 顶!!!!!!!!!!!!!!!!!!!!!!!!! 顶起来………… 路过!!!
不发表意见…… 顶!!!!!!!!!! 路过!!!
帮顶…… 路过!!!
帮顶…… 顶......
楼下跟上..... 路过!!!
不发表意见…… 顶......
楼下跟上..... (*^__^*) 嘻嘻…… 路过!!!
不发表意见…… 路过!!!
不发表意见……