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

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

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

1、选择对象

2、选择面

3、选择体

4、选择特征

NX二次开发(C#)-UIStyler-获取UI选择对象_第1张图片

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

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

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

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

                 if (block == _ObjectSelect)
                {
                    //---------Enter your code here-----------
                    TaggedObject[] taggedObjects = _ObjectSelect.GetSelectedObjects();

                    foreach(var to in taggedObjects)
                    {
                        NXObject nXObject = (NXObject)to;
                        int type;
                        int subType;
                        uFObj.AskTypeAndSubtype(nXObject.Tag, out type, out subType);
                        MessageBox.Show(nXObject.JournalIdentifier+"\n"+type.ToString()+"\n"+subType.ToString());
                    }

                }

选择的对象以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类型,即是:

                if (block == _ObjectSelect)
                {
                    //---------Enter your code here-----------
                    TaggedObject[] taggedObjects = _ObjectSelect.GetSelectedObjects();

                    foreach(var to in taggedObjects)
                    {
                        NXObject nXObject = (NXObject)to;
                        int type;
                        int subType;
                        uFObj.AskTypeAndSubtype(nXObject.Tag, out type, out subType);
                        if(type==70)
                        {
                            Body body = (Body)nXObject;
                            MessageBox.Show("当前选择的对象是实体,其tag为:" + body.Tag.ToString());
                        }
                    }

                }

运行效果如下:

NX二次开发(C#)-UIStyler-获取UI选择对象_第2张图片

 

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

对于面选择:

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

其运行效果为:

NX二次开发(C#)-UIStyler-获取UI选择对象_第3张图片

 

你可能感兴趣的:(C#,UIStyler,NX1957,NX二次开发)