NX二次开发(C#)-UIStyler-获取UI选择对象
Posted NX二次开发专注者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NX二次开发(C#)-UIStyler-获取UI选择对象相关的知识,希望对你有一定的参考价值。
用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)
在代码段中添加如下代码:
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());
}
}
}
运行效果如下:
对于面选择、体选择,其形式是一样的。
对于面选择:
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选择对象的主要内容,如果未能解决你的问题,请参考以下文章
UG NX二次开发(C#)-UIStyler-ListBox操作