UG二次开发UG层中部件获取函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UG二次开发UG层中部件获取函数相关的知识,希望对你有一定的参考价值。

如何通过选取的部件的层获得该层下其他部件的属性,如该层下直线的亮点坐标等信息

参考技术A 我.UG二次开发资.料

UG NX二次开发(C#)-建模-图层操作

图层简介

通俗地讲,图层就像是含有文字或图形等元素的胶片,一张张按顺序叠放在一起,组合起来形成页面的最终效果。图层可以将页面上的元素精确定位。图层中可以加入文本、图片、表格、插件,也可以在里面再嵌套图层。在UG NX中,图层分为1~256层,每一层中都可以存放一些对象,然后对图层进行槽,实现隐藏、显示、复制、移动等操作,使得复杂的模型也能通过图层操作精确查看和编辑操作。

图层二次开发空间(NXOen.Layer NameSpace)的说明

在采用NXOpen.net进行NX二次开发时,图层是属于NXOpen.Layer空间的类,其本地帮助文档说明如下图所示。

在这个空间中包括了以下几个类:
 Category—图层类别
 CategoryCollection—图层类别集合
 LayerManager—图层管理
 StateCollection—状态集合
以下几个枚举量
 Constants—图层间距,包括第一个有效图层和最后一个有效图层
 State—图层的状态,WorkLayer—工作图层;Selectable—可选图层;Visible—可见图层和Hidden—隐藏图层
和一个结构体
 StateInfo—状态信息结构体
UG NX二次开发的图层操作就是针对这几个类、枚举量和结构体展开的。下面根据一些功能进行介绍。

查找图层的所有对象

查找某个图层的所有对象,采用遍历对象的方法,即:

LayerManager layerManager = workPart.Layers;
NXObject[]nXObjects =   layerManager.GetAllObjectsOnLayer(1);

删除某图层的所有对象

首先获得这个图层的所有对象,比如第1层,

LayerManager layerManager = workPart.Layers;
NXObject[]nXObjects =   layerManager.GetAllObjectsOnLayer(1);

然后采用删除对象函数:

  public static void DeleteObjects(TaggedObject[] objects)
        
            theSession.UpdateManager.ClearErrorList();
            int nErrs1;
            nErrs1 = theSession.UpdateManager.AddObjectsToDeleteList(objects);
            NXOpen.Session.UndoMarkId id1;
            id1 = theSession.NewestVisibleUndoMark;
            int nErrs2;
            nErrs2 = theSession.UpdateManager.DoUpdate(id1);
    

调用DeleteObjects函数,即:

DeleteObjects(nXObjects);

删除某图层的体对象

首先获得这个图层的所有对象,比如第1层,

LayerManager layerManager = workPart.Layers;
NXObject[]nXObjects =   layerManager.GetAllObjectsOnLayer(1);

然后根据判断每个对象的类型,如果是体,则添加到删除链表中,

List<TaggedObject> taggedObjectList = new List<TaggedObject>();
LayerManager layerManager = workPart.Layers;
NXObject[] nXObjects = layerManager.GetAllObjectsOnLayer(1);
foreach (var no in nXObjects)

if(no.GetType().ToString()=="NXOpen.Body")

taggedObjectList.Add(no);


再采用删除函数删除体对象

移动对象到图层

移动对象到图层,采用NXOpen.Layer. LayerManager.

ApplyMoveToLayerToOwningParts(Int32, array<DisplayableObject>)`

图层显示与隐藏

设置图层1是可见的

NXOpen.Layer.StateInfo[] stateInfos = new StateInfo[1];
stateInfos[0].Layer = 1;
stateInfos[0].State = NXOpen.Layer.State.Visible;
layerManager.ChangeStates(stateInfos,true);

以上是关于UG二次开发UG层中部件获取函数的主要内容,如果未能解决你的问题,请参考以下文章

ug二次开发想获得曲面的id用啥函数

UG二次开发,菜单操作注册无效?

UG NX二次开发(C#)-Part-根据模型名称获取part的对象

UG NX二次开发(C#)-Part-根据模型名称获取part的对象

UG NX二次开发(C#)-外部模式-批量删除某些图层中的体对象和曲线对象

UG NX二次开发(C#)-外部模式-批量删除某些图层中的体对象和曲线对象