飞道的博客

NX二次开发(C#)-UIStyler-获取UI选择对象

365人阅读  评论(0)

用C#语言进行NX二次开发时,对于初学者,设计UI Styler后,不知道如何获取选择的对象。本文基于C#+NX1957介绍怎么在C#中获取UI选择对象

首先,设计一个UI界面,如下所示,包括了:

1、选择对象

2、选择面

3、选择体

4、选择特征

 在设计完成界面后,将其保存为C#格式的.dlx和.cs,建立对应的工程项目。

在public int update_cb(NXOpen.BlockStyler.UIBlock block)方法中,找到对应的块:

如选择对象,则是  if (block == _ObjectSelect)

在代码段中添加如下代码:


  
  1. if (block == _ObjectSelect)
  2. {
  3. //---------Enter your code here-----------
  4. TaggedObject[] taggedObjects = _ObjectSelect.GetSelectedObjects();
  5. foreach( var to in taggedObjects)
  6. {
  7. NXObject nXObject = (NXObject)to;
  8. int type;
  9. int subType;
  10. uFObj.AskTypeAndSubtype(nXObject.Tag, out type, out subType);
  11. MessageBox.Show(nXObject.JournalIdentifier+ "\n"+type.ToString()+ "\n"+subType.ToString());
  12. }
  13. }

选择的对象以TaggedObject类型获取,即:

TaggedObject[] taggedObjects = _ObjectSelect.GetSelectedObjects();

按照foreach循环读取每个taggedObjects中的对象,将其强制转换为NXObject类型,即:

NXObject nXObject = (NXObject)to;

如果不知道选择对象的类型,则用uf函数类来获取其类型和子类型:

 int type;
 int subType;
 uFObj.AskTypeAndSubtype(nXObject.Tag, out type, out subType);

通过类型来相应的转化为对应的对象。

如果type=70,则是实体对象,即可以转换为Body类型,即是:


  
  1. if (block == _ObjectSelect)
  2. {
  3. //---------Enter your code here-----------
  4. TaggedObject[] taggedObjects = _ObjectSelect.GetSelectedObjects();
  5. foreach( var to in taggedObjects)
  6. {
  7. NXObject nXObject = (NXObject)to;
  8. int type;
  9. int subType;
  10. uFObj.AskTypeAndSubtype(nXObject.Tag, out type, out subType);
  11. if(type== 70)
  12. {
  13. Body body = (Body)nXObject;
  14. MessageBox.Show( "当前选择的对象是实体,其tag为:" + body.Tag.ToString());
  15. }
  16. }
  17. }

运行效果如下:

 

对于面选择、体选择,其形式是一样的。

对于面选择:


  
  1. TaggedObject[] taggedObjects = _FaceSelect.GetSelectedObjects();
  2. Face[] faces = new Face[ 0];
  3. foreach ( var to in taggedObjects)
  4. {
  5. Face face = (Face)to;
  6. Array.Resize( ref faces, faces.Length + 1);
  7. faces[faces.Length - 1] = face;
  8. }
  9. MessageBox.Show( "选择 " + faces.Length.ToString() + " 个面");

其运行效果为:

 


转载:https://blog.csdn.net/yang19861007/article/details/116404842
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场