你好,欢迎来到UG二次开发专业技术交流论坛! 会员登录 | 快速注册 | 忘记密码?
UG二次开发最新技术资料
  • UG二次开发获取面的最外边缘实例代码

    发布者:woiusr 查看次数:9 评论条数:0 发布时间:2016-12-3
    //获取面的最外边缘实例代码#include<uf.h>#include<uf_exit.h>#include<uf_ui.h>#if!defined(__hp9000s800)&&!defined(__sgi)&&!defined(__sun)#        include<strstream>#  include<iostream>        usingstd::ostrstream;        usingstd::endl;                usingstd::ends;        usingstd::cerr;#else#        include<strstream.h>#  include<iostream.h>#endif#include<uf_csys.h>#include<uf_obj.h>#include<uf_modl.h>//设置选择的实体类型staticintinit_proc(UF_UI_selection_p_tselect,void*user_data){int  errorCode  =0;int  num_triples=1;//选择类型数量UF_UI_mask_tmask_triples[]={UF_face_type,0,0,};//定义选择类型errorCode=UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,num_triples,mask_triples);if(errorCode==0){returnUF_UI_SEL_SUCCESS;}else{returnUF_UI_SEL_FAILURE;}}extern"C"DllExportvoidufsta(char*param,int*returnCode,intrlen){    /*InitializetheAPIenvironment*/    interrorCode=UF_initialize();    if(0==errorCode)    {  char*message="提示!请选择表面。";  char*title="请选择表面";  int  scope=UF_UI_SEL_SCOPE_WORK_PART;//UF_UI_SEL_SCOPE_NO_CHANGE  int  response;  tag_tobject_tag;  double  cursor[3]={0.0};  tag_tview=NULL_TAG;UF_UI_lock_ug_access(UF_UI_FROM_CUSTOM);//加锁UF_UI_select_with_single_dialog(message,title,scope,init_proc,NULL,&response,&object_tag,cursor,&view);  //选择框UF_DISP_set_highlight(object_tag,0);//1高亮显示0不高亮显示UF_UI_unlock_ug_access(UF_UI_FROM_CUSTOM);//解锁  if(response==UF_UI_OBJECT_SELECTED)  {    //获得面最外边缘    int      loops_count=0;    UF_MODL_ask_loop_list_count(loops_list,&loops_count);//查询数量    for(intl_i=0;l_i<loops_count;l_i++)    {        int    loops_type=0;              //类型        uf_list_p_t  edge_list=NULL_TAG;//边缘菜单指针ID        UF_MODL_ask_loop_list_item(loops_list,l_i,&loops_type,&edge_list);              if(1==loops_type)                //边界=1,洞=2,其他=3        {          int  edge_count=0;            //边缘数量          UF_MODL_ask_list_count(edge_list,&edge_count);          for(intedge_i=0;edge_i<edge_count;edge_i++)          {                          n=n+1;              UF_MODL_ask_list_item(edge_list,edge_i,&edge_id[n-1]);    //n-1是因为数组是从0开始的              UF_MODL_create_curve_from_edge(edge_id[n-1],&edge_id[n-1]);//提取实体边缘            }        }      }      if(n!=0)      {        charmsg[32]="";        sprintf(msg,"%d",n);        uc1601(msg,1);      }      else      {            uc1601("UGapi提示!你选择的面没有发现边缘(比如:首尾相连的圆柱面不返回边缘)",1);      }    }        errorCode=UF_terminate();    }  return;}extern"C"intufusr_ask_unload(void){        return(UF_UNLOAD_IMMEDIATELY);}
  • 获得部件实体信息函数 UF_MODL_ask_object

    发布者:woiusr 查看次数:8 评论条数:0 发布时间:2016-12-3
    函数:UF_MODL_ask_object()功能:用于获得部件内的实体信息                                                参数说明:int        ug_type              对象的类型,通常为70(UF_Solid_type)              int        ug_subtype        对象的子类型,通常为0(UF_Solid_body_subtype)                                在获取了实体对象(solidbody)的标识后,调用函数UF_MODL_ask_body_feats()时,将对象标识作为参数输入,可以返回与该实体相关联的特征标识链表,如上所述,该函数的正确参数输入可以调用函数UF_MODL_ask_object()获得。注意:UF_MODL_ask_body_feats()函数不再返回草图或基准面的信息,函数返回的特征也不包含螺纹特征,可以使用函数UF_MODL_ask_feat_relatives()获得螺纹特征。  
  • 计算两个对象相对最小距离函数 UF_MODL_ask_minimum_dist

    发布者:woiusr 查看次数:8 评论条数:0 发布时间:2016-12-3
    函数:UF_MODL_ask_minimum_dist功能:计算两个对象相对最小距离参数说明:tag_tobj[2];  //【输入】两个对象intguess1_given;//【输入】我们输入0就可以了doubleguess1[3];//【输入】假设最近点1(如果上一个参数是0无需设置)intguess2_given;  //【输入】我们输入0就可以了doubleguess2[3];  //【输入】假设最近点2(如果上一个参数是0无需设置)double  min_dist;  //【输出】最小距离    UF_MODL_ask_minimum_dist(obj[0],obj[1],0,guess1,0,guess2,&min_dist,pt_on_ent1,pt_on_ent2);
  • 点击查看GRIP全套视频教程
  • UGopen关于图层操作的函数详细说明

    发布者:lchooce99 查看次数:14 评论条数:1 发布时间:2016-12-1
    //层名不能用中文,层描述可以用#include<uf_obj.h>#include<uf_layer.h>//对象移动到层UF_OBJ_set_layer(tag_tobject_id,intlayer);//读取工作层。UF_LAYER_ask_work_layer(int*layer_number);UF_LAYER_set_all_but_work(UF_LAYER_ACTIVE_LAYER);  //所有层可见UF_LAYER_set_all_but_work(UF_LAYER_INACTIVE_LAYER);//所有层不可见UF_LAYER_set_all_but_work(UF_LAYER_REFERENCE_LAYER);//所有层只可见//设置指定层指定相应的状态。UF_LAYER_set_status(255,UF_LAYER_INACTIVE_LAYER);//255层不可见//UF_LAYER_WORK_LAYER      工作层//UF_LAYER_ACTIVE_LAYER    可选择//UF_LAYER_REFERENCE_LAYER只可见//UF_LAYER_INACTIVE_LAYER  不可见//读取层状态。intlayer_number=1;  //输入层号intlayer_status;    //输出层状态UF_LAYER_ask_status(layer_number,&layer_status);if(layer_status==UF_LAYER_WORK_LAYER)uc1601("工作层",1);if(layer_status==UF_LAYER_ACTIVE_LAYER)uc1601("可见",1);if(layer_status==UF_LAYER_REFERENCE_LAYER)uc1601("只可见",1);if(layer_status==UF_LAYER_INACTIVE_LAYER)uc1601("不可见",1);//创建层组层名层描述UF_LAYER_category_info_tcat;  tag_tcat_tag=NULL;  strcpy(cat.name,"M_3");        //层名  strcpy(cat.descr,"产品未缩放");  //描述UF_LAYER_create_category(&cat,&cat_tag);//创建层组层名层描述//编辑//UF_LAYER_edit_category_name(cat_tag,"ASM_20");//编辑名称//UF_LAYER_edit_category_descr(cat_tag,"AssemblyLine20");  //编辑描述//UF_LAYER_edit_category_layer(cat_tag,cat.layer_mask);//编辑范围//UF_LAYER_ask_category_info(cat_tag,&cat);//得到的分类信息//uc1601(cat1.name,1);//uc1601(cat1.descr,1);//通过层名获得层标识tag_t  category;UF_LAYER_ask_category_tag("LEI",&category);//通过层标识编辑类别描述。charcat_descr[81]="LEI";UF_LAYER_edit_category_descr(category,cat_descr);//通过层标识编辑名称。charcat_name[31]="MM";UF_LAYER_edit_category_name(category,cat_name);//通过层名获得层标识UF_LAYER_ask_category_tag("MM",&category);//通过层标识编辑层组范围logicallayer_mask[256];inti;  for(i=0;i<256;++i)      {      layer_mask=0;      }          layer_mask[5]=1;  //第6层加入到层组layer_mask[6]=1;  //第7层加入到层组layer_mask[18]=1;//第19层加入到层组UF_LAYER_edit_category_layer(category,layer_mask);设置指定层指定相应的状态。的工作层不提及或无效。只有一层可工作层。如果出现任何错误,则不是层状态改性。UF_LAYER_set_many_layers_status//读取类别名称,构件层,和描述UF_LAYER_ask_category_info循环工作部分的层。第一个:返回第一层对象启用。下一个:返回下一个对象层下启用。最后:当所有的对象已经筋疲力尽,返回object_tag=null_tag。不要试图删除对象时,循环回路中的数据库。问题可以发生在试图读取下一个对象时当前对象已经删除。要删除的对象,在它的对象保存一个数组,然后当你完成了循环,使用uf_obj_delete_array_of_objects删除保存的对象数组。UF_LAYER_cycle_by_layer//获得对象信息tag_tobject;UF_OBJ_disp_props_sdispprops;UF_OBJ_ask_display_properties(object,&dispprops);这些信息都保存在结构体UF_OBJ_disp_props_s中,参数说明:Intlayer                //对象所在的层Intcolor                //对象的颜色Intblank_status          //对象的隐藏状态:UF_OBJ_NOT_BLANKED;Intline_width            //对象的线宽:UF_OBJ_WIDTH_NORMAL;                                                  UF_OBJ_WIDTH_THICK;                                                  UF_OBJ_WIDTH_THIN;                                                  UF_OBJ_WIDTH_ORIGINALIntfont                  //对象的线型Logical  highlight_status  //对象的高亮显示状态intll=dispprops.layer    //对象所在的层
  • UG二次开发 获得轮廓线

    发布者:lchooce99 查看次数:15 评论条数:0 发布时间:2016-12-1
    获得轮廓线函数:UF_CURVE_create_silhouette返回的直线和圆弧逼近一个数组标识符曲线和边。容忍参数确定最大一条曲线或边缘和近似的弧段之间的距离。externintUF_CURVE_create_silhouette(tag_tsolid,tag_tview,int*count,tag_t**curves);参数说明:tag_t  solidInput      实心板或身体轮廓曲线tag_t  viewInput      在生成曲线视图int*  countOutput    创建并返回的数组中的曲线,曲线的计算tag_t**  curvesOutput被释放的曲线阵列。你是负责释放此数组的内存分配。使用uf_free来释放内存的时候做的。
  • GRIP 最小包容盒完整代码

    发布者:lchooce99 查看次数:22 评论条数:1 发布时间:2016-12-1
    Gripsw/Declrv        Entity/Obj(2000),Pl(6)Number/R(7),Array(1),P(6),I,NmNumber/Resp,Xmin,Ymin,Zmin,Xmax,Ymax,ZmaxNumber/Xmin1,Ymin1,Zmin1,Xmax1,Ymax1,Zmax1Number/Xmin2,Ymin2,Zmin2,Xmax2,Ymax2,Zmax2Number/Jd,A,Dx,Dy,Dz,Ddx,Ddy,DdzString/Str(64)Entity/BoxIfthen/&Actprt==1Messg/'请打开一个部件。'Jump/End:EndifL10:I=0Mask/70Ident/'UGapi提示!请选择对象...',Obj,Cnt,Nm,RespJump/L10:,End:,,,RespIfthen/Nm>2000          Messg/'UGapi提示!所选对象超过2000,请重新选择...'  Jump/L10:Endif        Messg/Temp,'UGapi提示!测量中...'Do/Li1:,I,1,NmP=Solbox/Obj(I)  $$获得对象的坐标极点Ifthen/I==1Xmin1=Xmin2Xmax1=Xmax2Ymin1=Ymin2Ymax1=Ymax2Zmin1=Zmin2Zmax1=Zmax2Else  Xmin1=Minf(Xmin1,Xmin2)  Xmax1=Maxf(Xmax1,Xmax2)  Ymin1=Minf(Ymin1,Ymin2)  Ymax1=Maxf(Ymax1,Ymax2)  Zmin1=Minf(Zmin1,Zmin2)  Zmax1=Maxf(Zmax1,Zmax2)EndifLi1:  $$生成六个辅助平面Pl(1)=Plane/Yzplan,(Xmin1-20)Pl(2)=Plane/Yzplan,(Xmax1+20)Pl(3)=Plane/Xzplan,(Ymin1-20)Pl(4)=Plane/Xzplan,(Ymax1+20)Pl(5)=Plane/Xyplan,(Zmin1-20)Pl(6)=Plane/Xyplan,(Zmax1+20)Do/Li2:,I,1,Nm$$测出六个辅助平面到所有体的距离R(1..7)=Reldst/Obj(I),Pl(1)Xmin2=R(7)+(Xmin1-20)R(1..7)=Reldst/Obj(I),Pl(2)Xmax2=(Xmax1+20)-R(7)R(1..7)=Reldst/Obj(I),Pl(3)Ymin2=R(7)+(Ymin1-20)R(1..7)=Reldst/Obj(I),Pl(4)Ymax2=(Ymax1+20)-R(7)R(1..7)=Reldst/Obj(I),Pl(5)Zmin2=R(7)+(Zmin1-20)R(1..7)=Reldst/Obj(I),Pl(6)  $$测相对距离Zmax2=(Zmax1+20)-R(7)        $$取得距离值Ifthen/I==1Xmin=Xmin2Xmax=Xmax2Ymin=Ymin2Ymax=Ymax2Zmin=Zmin2Zmax=Zmax2Else  Xmin=Minf(Xmin,Xmin2)  Xmax=Maxf(Xmax,Xmax2)  Ymin=Minf(Ymin,Ymin2)  Ymax=Maxf(Ymax,Ymax2)  Zmin=Minf(Zmin,Zmin2)  Zmax=Maxf(Zmax,Zmax2)EndifLi2:Delete/Pl  Dx=Xmax-XminDy=Ymax-YminDz=Zmax-Zmin  $$对象最大外形Dx,Dy,Dz$$对象最小坐标Xmin,Ymin,Zmin$$对象最大坐标Xmax,Ymax,ZmaxA=&Decpl&Decpl=2Str='最大外形:'+Fstr(Dx)+','+Fstr(Dy)+','+Fstr(Dz)&Decpl=A$$Jd=1$$Jd=1->精度=1$$Jd=0.1->精度=0.1$$没有启用$$A=1/JdDdx=DxDdy=DyDdz=DzIf/Ddx>Intf(Ddx),Ddx=Dx+1If/Ddy>Intf(Ddy),Ddy=Dy+1If/Ddz>Intf(Ddz),Ddz=Dz+1Ddx=Intf(Ddx)Ddy=Intf(Ddy)Ddz=Intf(Ddz)L20:      Param/Str,$            '长=',Int,Ddx,$            '宽=',Int,Ddy,$            '高=',Int,Ddz,Resp      Jump/L10:,End:,,,RespBox=Solblk/Origin,Xmin-(Ddx-Dx)/2,Ymin-(Ddy-Dy)/2,Zmin-(Ddz-Dz)/2,$            Size,Ddx,Ddy,DdzJump/L10:End:Halt
  • grip获得最后一次打开的目录位置

    发布者:lchooce99 查看次数:10 评论条数:0 发布时间:2016-12-1
    string/  STR(132)$$清空信息窗口EJECT/PRINTEJECT/WINDOWprint/'获得最后一次打开的目录位置'+strlabel1:HALT
  • 点击查看VIP会员特权
  • GRIP 获得UG安装目录

    发布者:lchooce99 查看次数:7 评论条数:0 发布时间:2016-12-1
    gripsw/declrvprint/'UG安装目录(UGII目录):'+&exclibPRINT/'UG起始目录:'+&curdirprint/'**目录:'+&dollibEND:halt
  • UG二次开发判断面的半径大小,类型轴中心极点坐标,轴中心方向

    发布者:lchooce99 查看次数:12 评论条数:1 发布时间:2016-12-1
    函数:UF_MODL_ask_face_data判断面类型圆柱或圆锥等等轴中心方向极点坐标半径大小#include<uf_modl.h>#include<uf_obj.h>tag_tobject_tag=NULL_TAG;//输入面inttype=0;      //判断面类型intnorm_dir=0;  //1=外R,0=内Rdoublepoint[3];  //轴中心点doubledir[3];    //轴方向doublebox[6];    //极点坐标doubleradius;    //半径圆锥=最小半径+最大半径/2doublerad_data;UF_MODL_ask_face_data(object_tag,      //输入面&type,point,dir,box,&radius,&rad_data,&norm_dir);//分析面//判断面类型type值//16=圆柱//17=圆锥//18=球//19=旋转(环形)//20=挤压//22=有界平面//23=角(物)//43=b级表面//65=偏移曲面//66=外表面charmsg[64];UF_UI_open_listing_window();//打开窗口UF_UI_write_listing_window("制作者:UGapi\n");sprintf(msg,"判断面类型:%d\n",type);UF_UI_write_listing_window(msg);sprintf(msg,"判断面内外R:%d\n",norm_dir);UF_UI_write_listing_window(msg);sprintf(msg,"轴中心点:%.2f,%.2f,%.2f\n",point[0],point[1],point[2]);UF_UI_write_listing_window(msg);sprintf(msg,"轴方向:%.2f,%.2f,%.2f\n",dir[0],dir[1],dir[2]);UF_UI_write_listing_window(msg);sprintf(msg,"半径:%.2f,rad_data:%.4f\n",radius,rad_data);UF_UI_write_listing_window(msg);
  • UGopen获得面的u,v参数中u,v最小值和最大值

    发布者:lchooce99 查看次数:11 评论条数:0 发布时间:2016-12-1
    获得面u,v参数空间(u,v最小,最大值)tag_tobject_tag=NULL_TAG;doubleuvs[4]={0,1,0,1};UF_MODL_ask_face_uv_minmax(object_tag,uvs);//获得面u,v参数空间(u,v最小,最大值)
  • UG二次开发中 获得面积 函数

    发布者:lchooce99 查看次数:8 评论条数:0 发布时间:2016-12-1
    获得面积函数:UF_MODL_ask_mass_props_3d一般先使用函数UF_MODL_extract_face提取面抽取面后再使用获得面积函数
  • 点击查看SNAP技术资料
  • UF_MODL_create_extruded_path 沿着路径拉伸函数的说明

    发布者:lchooce99 查看次数:6 评论条数:0 发布时间:2016-12-1
    头文件:#include<uf_modl.h>函数:UF_MODL_create_extruded_path参数说明:uf_list_p_t  objects            //拉伸对象的标识链表        uf_list_p_t  path_objects  //拉伸路径对象的标识链表        doublepoint[3]                  //截面上的点        doubledirection[3]              //拉伸方向        UF_FEATURE_SIGNsign  //布尔操作类型:UF_NULLSIGN;UF_POSITIVE;UF_NEGATIVE;UF_UNSIGNED                                        uf_list_p_t*features          //创建的拉伸特征的标识链表,使用函数UF_MODL_delete_list()释放内存        
  • UG二次开发中简单拉伸函数UF_MODL_create_extruded详细说明与例子代码

    发布者:lchooce99 查看次数:9 评论条数:0 发布时间:2016-12-1
    //头文件  #include<uf_modl.h>//函数:UF_MODL_create_extruded                                        UF_FEATURE_SIGN  sign=UF_NULLSIGN;//创建新的几何实体UF_FEATURE_SIGN  sign=UF_POSITIVE;//添加到目标实体,做加运算                                        UF_FEATURE_SIGN  sign=UF_NEGATIVE;//从目标实体中去除,做减运算UF_FEATURE_SIGN  sign=UF_UNSIGNED;//与目标实体做交运算//例子1,创建一条直线做拉伸操作生成片体tag_tobject_tag;UF_CURVE_line_tline_coords;  //直线函数      line_coords.start_point[0]=0;//启始点坐标line_coords.start_point[1]=0;line_coords.start_point[2]=0;line_coords.end_point[0]=10;  //终止点坐标line_coords.end_point[1]=10;line_coords.end_point[2]=0;UF_CURVE_create_line(&line_coords,&object_tag);//创建一条直线uf_list_p_tobjects,features;表UF_MODL_create_list(&objects);UF_MODL_put_list_item(objects,object_tag);  //对象加入到对象列表尾部char*锥角="0.0";            //锥角char起始值[32]="";char终止值[32]="";sprintf(起始值,"%.6f",5);  sprintf(终止值,"%.6f",10);  char*limit[2]={起始值,终止值};doublepoint[3]={0,0,0};          //不再使用doubledirection[3]={0,0,1};      //拉伸方向UF_FEATURE_SIGN  sign=UF_NULLSIGN;//创建新的几何实体UF_MODL_create_extruded(objects,锥角,limit,point,direction,sign,&features);//拉伸//例子2,创建7条直线形成封闭区域做拉伸操作生成实体tag_tobject_tag[7];UF_CURVE_line_tline_coords;  line_coords.start_point[0]=0;line_coords.start_point[1]=0;line_coords.start_point[2]=0;line_coords.end_point[0]=10;line_coords.end_point[1]=0;line_coords.end_point[2]=0;UF_CURVE_create_line(&line_coords,&object_tag[0]);line_coords.start_point[0]=0;line_coords.start_point[1]=0;line_coords.start_point[2]=0;line_coords.end_point[0]=0;line_coords.end_point[1]=10;line_coords.end_point[2]=0;UF_CURVE_create_line(&line_coords,&object_tag[1]);line_coords.start_point[0]=0;line_coords.start_point[1]=10;line_coords.start_point[2]=0;line_coords.end_point[0]=10;line_coords.end_point[1]=10;line_coords.end_point[2]=0;UF_CURVE_create_line(&line_coords,&object_tag[2]);line_coords.start_point[0]=10;line_coords.start_point[1]=10;line_coords.start_point[2]=0;line_coords.end_point[0]=10;line_coords.end_point[1]=0;line_coords.end_point[2]=0;UF_CURVE_create_line(&line_coords,&object_tag[3]);line_coords.start_point[0]=2;line_coords.start_point[1]=2;line_coords.start_point[2]=0;line_coords.end_point[0]=5;line_coords.end_point[1]=2;line_coords.end_point[2]=0;UF_CURVE_create_line(&line_coords,&object_tag[4]);line_coords.start_point[0]=5;line_coords.start_point[1]=2;line_coords.start_point[2]=0;line_coords.end_point[0]=2;line_coords.end_point[1]=5;line_coords.end_point[2]=0;UF_CURVE_create_line(&line_coords,&object_tag[5]);line_coords.start_point[0]=2;line_coords.start_point[1]=5;line_coords.start_point[2]=0;line_coords.end_point[0]=2;line_coords.end_point[1]=2;line_coords.end_point[2]=0;UF_CURVE_create_line(&line_coords,&object_tag[6]);uf_list_p_tobjects,features;UF_MODL_create_list(&objects);UF_MODL_put_list_item(objects,object_tag[0]);//对象加入到对象列表尾部[/replyview]UF_MODL_put_list_item(objects,object_tag[1]);UF_MODL_put_list_item(objects,object_tag[2]);UF_MODL_put_list_item(objects,object_tag[3]);UF_MODL_put_list_item(objects,object_tag[4]);UF_MODL_put_list_item(objects,object_tag[5]);UF_MODL_put_list_item(objects,object_tag[6]);[/replyview]char*锥角="0.0";char起始值[32]="";char终止值[32]="";sprintf(起始值,"%.6f",5);  sprintf(终止值,"%.6f",10);  char*limit[2]={起始值,终止值};doublepoint[3];              //无效可以不写doubledirection[3]={0,0,1};  //拉伸方向UF_FEATURE_SIGN  sign=UF_NULLSIGN;//创建新的几何实体UF_MODL_create_extruded(objects,锥角,limit,point,direction,sign,&features);//拉伸
  • UF_OBJ_cycle_all 循环所有函数的说明

    发布者:lchooce99 查看次数:10 评论条数:0 发布时间:2016-12-1
    //头文件#include<uf_obj.h>函数:UF_OBJ_cycle_all返回给定部分的所有对象的所有层次不管他们目前的状态或displayability。它不返回表达式。这个函数返回的对象,发现标签。继续循环,将返回的对象在这第二个参数功能。注:强烈建议你避免做任何非活着对象,除非你是熟悉它们的使用。这样可以删除或重用这些物体在任何时间。这些对象没有提交部分。注意:这个例行部分加载的部分无效。如果你打电话给这个使用部分加载的部分函数,它返回一个null_tag从周期的开始。不要试图删除对象时,循环回路中的数据库。问题可以发生在试图读取下一个对象时当前对象已经删除。要删除的对象,在它的对象保存一个数组,然后当你完成了循环,使用uf_obj_delete_array_of_objects删除保存的对象数组。  externtag_tUF_OBJ_cycle_all(        tag_tpart_tag,        tag_tobject);tag_t  part_tagInputTagofpartyouwishtocycletag_t  objectInputBeginthecyclebypassinginobject=NULL_TAG
  • UGopen遍历所有对象的使用方法实例代码

    发布者:lchooce99 查看次数:20 评论条数:2 发布时间:2016-12-1
    以下例子是遍历删除所有固体参数的一个例子,通过这个例子可以明白UGopen中遍历的用法//例子:删除所有固体参数#include<uf_modl.h>#include<uf_obj.h>#include<uf_part.h>tag_t  disp_part_tag,next_tag=NULL_TAG,subtype=NULL_TAG;int        num=0,nm=0;char        *feat_type;int  type=UF_solid_type;  //对象类型UF_solid_typeint  ssubtype;uf_list_p_tbody_list;UF_MODL_create_list(&body_list);disp_part_tag=UF_PART_ask_display_part();//得到当前部件文件标识while(next_tag!=NULL_TAG){  num++;  UF_OBJ_ask_type_and_subtype(next_tag,&type,&ssubtype);//获得对象类型  if(ssubtype==UF_solid_body_subtype)//比较对象类型是否固体  {      nm++;      UF_MODL_put_list_item(body_list,next_tag);            //next_tag对象加入到body_list对象列表尾部  }  UF_OBJ_cycle_objs_in_part(disp_part_tag,type,&next_tag);}if(nm>0){UF_MODL_delete_body_parms(body_list);//删除对象列表所有对象参数}
NX二次开发热门资料
点击查看VIP会员特权
技术帖子评论排行
最新评论技术帖子