UG NX二次开发(C#)-建模-图层操作
Posted GimiGimmy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 NX二次开发(C#)-建模-图层操作的主要内容,如果未能解决你的问题,请参考以下文章
UG NX二次开发(C#)-建模-创建填充曲面(CreateFillHoleBuilder)
UG NX二次开发(C#)-建模-获得NX当前打开的所有part文件