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

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 3500|回复: 19
打印 上一主题 下一主题

Navisworks二次开发,选中模型获取其属性信息

[复制链接]

5

主题

9

帖子

61

积分

BIM助工

Rank: 2Rank: 2

积分
61

社区QQ达人

跳转到指定楼层
楼主
发表于 2016-7-8 09:55:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #region 模型点击触发事件20160704增加选中模型触发事件
  2.        [Plugin("Form1.MyToolPlugin", "ADSK",
  3.        DisplayName = "MyToolPlugin",
  4.        ToolTip = "Primitive Select Custom Tool Plugin")]
  5.        public class MyToolPlugin : ToolPlugin
  6.         {
  7.             public override bool MouseDown(Autodesk.Navisworks.Api.View view, KeyModifiers modifiers, ushort button, int x, int y, double timeOffset)
  8.             {
  9.                 // Very simple primitive additive select. Doesn't follow Windows 'standard' of 'mouse down to start select, mouse up if you really mean it'

  10.                 PickItemResult result = view.PickItemFromPoint(x, y);
  11.                 if (result != null)
  12.                 {
  13.                     Autodesk.Navisworks.Api.Application.ActiveDocument.CurrentSelection.Clear();
  14.                     Autodesk.Navisworks.Api.Application.ActiveDocument.CurrentSelection.Add(result.ModelItem);

  15.                     getpro();//20160705绑定选中模型的属性

  16.                     return true;
  17.                 }
  18.                 // As you can only have one tool plugin active, it isn't actually possible
  19.                 // to pass control to another handler at this time. However, good practice
  20.                 // to indicate whether you handled the call.
  21.                 return false;
  22.             }
  23.         }

  24.         public static void getpro()
  25.         {
  26.             gform.tableLayoutPanel1.ColumnStyles[2].Width = 30;//点击选中模型显示属性信息
  27.             //属性信息加载
  28.             //验证模型
  29.             List<propertys> list = new List<propertys>();
  30.             //gform.dataGridView1.DataSource = list;
  31.             string strs="";//存储text 过滤相同的
  32.             if (Autodesk.Navisworks.Api.Application.ActiveDocument != null &&
  33.                 !Autodesk.Navisworks.Api.Application.ActiveDocument.IsClear)
  34.             {

  35.                 //this.vGridControl1.Rows.Clear();
  36.                 // 获取选中的相关的模型信息
  37.                 foreach (ModelItem item in Autodesk.Navisworks.Api.Application.ActiveDocument.CurrentSelection.SelectedItems)
  38.                 {
  39.                     //获取想的模型属性信息
  40.                     string s = item.ClassName;
  41.                     foreach (PropertyCategory category in item.PropertyCategories)
  42.                     {
  43.                         foreach (DataProperty control in category.Properties)
  44.                         {
  45.                             var itemValue = control.Value;
  46.                             string text = control.DisplayName +"/"+ control.Name;
  47.                             string valueInfo;
  48.                             switch (itemValue.DataType)
  49.                             {
  50.                                 case VariantDataType.Boolean:
  51.                                     valueInfo = itemValue.ToBoolean().ToString();
  52.                                     break;
  53.                                 case VariantDataType.DateTime:
  54.                                     valueInfo = itemValue.ToDateTime().ToString();
  55.                                     break;
  56.                                 case VariantDataType.DisplayString:
  57.                                     valueInfo = itemValue.ToDisplayString();
  58.                                     break;
  59.                                 case VariantDataType.Double:
  60.                                     valueInfo = itemValue.ToDouble().ToString();
  61.                                     break;
  62.                                 case VariantDataType.DoubleAngle:
  63.                                     valueInfo = itemValue.ToDoubleAngle().ToString();
  64.                                     break;
  65.                                 case VariantDataType.DoubleArea:
  66.                                     valueInfo = itemValue.ToDoubleArea().ToString();
  67.                                     break;
  68.                                 case VariantDataType.DoubleLength:
  69.                                     valueInfo = itemValue.ToDoubleLength().ToString();
  70.                                     break;
  71.                                 case VariantDataType.DoubleVolume:
  72.                                     valueInfo = itemValue.ToDoubleVolume().ToString();
  73.                                     break;
  74.                                 case VariantDataType.IdentifierString:
  75.                                     valueInfo = itemValue.ToIdentifierString();
  76.                                     break;
  77.                                 case VariantDataType.Int32:
  78.                                     valueInfo = itemValue.ToInt32().ToString();
  79.                                     break;
  80.                                 default:
  81.                                     valueInfo = itemValue.ToString();
  82.                                     break;
  83.                             }
  84.                             propertys ps = new propertys();
  85.                             ps.Name = text;
  86.                            
  87.                             ps.Value = valueInfo;
  88.                             if (strs.IndexOf(text)<0)
  89.                             {
  90.                                 list.Add(ps);
  91.                             }
  92.                             strs += text + ",";
  93.                            
  94.                            
  95.                         }
  96.                     }
  97.                 }
  98.             }

  99.             gform.dataGridView1.DataSource = list;

  100.         }

  101.         #endregion
复制代码

                               
登录/注册后可看大图



请问,我抓取的nwd模型文件,怎么获取不到id和名称这些属性
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
推荐
发表于 2017-5-17 10:40:22 | 只看该作者
很好的文章, 受益匪浅

1514

主题

7465

帖子

1万

积分

admin

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

积分
12406

社区QQ达人

推荐
发表于 2018-11-21 15:50:07 | 只看该作者
navisworks二次开发
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言
12F
发表于 2017-5-4 10:35:59 | 只看该作者
很好, 顶一下
16F
发表于 2017-7-27 10:02:50 | 只看该作者
分享是种美德
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 08:18

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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