UG二次开发中,如何遍历得到面的tag
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UG二次开发中,如何遍历得到面的tag相关的知识,希望对你有一定的参考价值。
请教各位高手一个问题:比如说,我在UG中建立了一个简单的长方体,我现在想通过自己写一个二次开发的小程序通过这个程序,为这个长方体的6个面,自动添加属性要实现这个功能,应该是需要遍历得到各个面的tag,然后通过循环为各个面创建属性并赋值现在的问题是,我不知道使用什么函数可以遍历得到面UF_OBJ_cycle_objs_in_part(partTag,UF_face_type,&cycleTag);这个函数好像不可以请问大家有知道的吗?谢谢了~
你先建的长方体,可以得到长方体features的tag; 需要根据特征的tag找到对应的body的tag;然后通过遍历body,找到所有的面;以下是参考函数:int UF_MODL_ask_feat_body(tag_t feature_obj_id, tag_t * body_obj_id )int UF_MODL_ask_body_faces(tag_t body, uf_list_p_t * face_list )通过面的类型type可以筛选出需要的面 参考技术A 先建长方体,得到长方体features的tag; 需要根据特征的tag找到对应的body的tag;然后通过遍历body,找到所有的面;以下是参考函数:int UF_MODL_ask_feat_body(tag_t feature_obj_id, tag_t * body_obj_id )int UF_MODL_ask_body_faces(tag_t body, uf_list_p_t * face_list )通过面的类型type可以筛选出需要的面 。 参考技术B 先建长方体,得到长方体features的tag; 需要根据特征的tag找到对应的body的tag;然后通过遍历body,找到所有的面;以下是参考函数:int UF_MODL_ask_feat_body(tag_t feature_obj_id, tag_t * body_obj_id )int UF_MODL_ask_body_faces(tag_t body, uf_list_p_t * face_list )通过面的类型type可以筛选出需要的面 。 参考技术C UF_MODL_ask_body_faces 首先通过这个函数获得所有面,会得到一个面的链表,再用UF_MODL_ask_list_item语句获得各个面,用一个循环语句,赋予属性即可(from kmold.cn)UG NX二次开发(C#)--建模--识别曲面类型(圆柱面)
获取所有圆柱面
简介
我们以一个获取所有圆柱面的例子来说明如何获取某一类型的曲面。圆柱面是比较典型的曲面,比如倒圆曲面就是圆柱面,如果想删除自动识别倒圆曲面并删除这个曲面,则必须要识别出圆柱面。我们设计一个小界面,按钮“获取所有圆柱面”执行遍历所有圆柱面的代码,如下图所示。
识别曲面类型代码
在按钮的响应中,添加如下代码:
List<Face> cylinderFaceList = new List<Face>(); //定义圆柱面的链表,并初始化
BodyCollection bodyCollection = workPart.Bodies; //获得工作部件的体集合
Body[] bodies = bodyCollection.ToArray(); //将体集合转换为体数组
//对每个体进行遍历操作
foreach(var bd in bodies)
//获得体的所有曲面
Face[] faces = bd.GetFaces();
//对买个面进行遍历操作
foreach(var fc in faces)
//判断这个面是不是圆柱面
if(fc.SolidFaceType==Face.FaceType.Cylindrical)
//将圆柱面存储在链表中
cylinderFaceList.Add(fc);
//输出圆柱面的个数
MessageBox.Show("圆柱面的个数为:" + cylinderFaceList.Count.ToString());
生成dll,并运行程序,对于UG NX视图区的模型(如下图所示):
点击“识别所有圆柱面”按钮,则识别结果如下:
以上是关于UG二次开发中,如何遍历得到面的tag的主要内容,如果未能解决你的问题,请参考以下文章
UG NX二次开发(C#)--建模--识别曲面类型(圆柱面)
UG NX二次开发(C#)--建模--识别曲面类型(圆柱面)