• 【NX二次开发】体素特征相关函数(块、柱、锥、球)


    NX Open允许用户创建和查询所有基本体素特征,通过API函数建立基本体素特征返回的是相应的特征标识,如果需要可以通过函数UG_MODL_ask_feat_body()获得特征对应的实体对象标识。基本体素特征的参数是通过字符串输入的。我们可以直接输入数值,或者输入表达式,例如下面的例子中,球的直径我们可以设置输入参数 cDiam[] = "8" 或者 cDiam[] = "D=8" 。与体素特征相关的函数如下:

    //
    UF_MODL_create_block1()
    UF_MODL_ask_block_parms()
    //圆柱
    UF_MODL_create_cyl1()
    UF_MODL_ask_cylinder_parms()
    //圆锥
    UF_MODL_create_cone1()
    UF_MODL_ask_cone_parms()
    //
    UF_MODL_create_sphere1()
    UF_MODL_ask_sphere_parms()

    函数例子:

     1 #include "Text.h"
     2 extern DllExport void ufsta(char *param, int *returnCode, int rlen)
     3 {
     4     UF_initialize();
     5     //创建块
     6     UF_FEATURE_SIGN sign = UF_NULLSIGN;
     7     double block_orig[3] = { 0.0,0.0,0.0 };//起点相对于ABS
     8     char *block_len[3] = { "1", "2", "3" };//方向相对于WCS
     9     tag_t blk_obj;//体特征
    10     UF_MODL_create_block1(sign, block_orig, block_len, &blk_obj);
    11     
    12     int iEdit = 0;    //这是一个未使用的标志。它用于确定是返回表达式的右边还是两边。目前,表达式的两边都返回。
    13     char *size[3];
    14     UF_MODL_ask_block_parms(blk_obj, iEdit, size);
    15     list("%s,%s,%s
    ", size[0], size[1], size[2]);//输出: p9=1,p10=2,p11=3
    16     
    17     //创建圆柱
    18     UF_FEATURE_SIGN sign1 = UF_NULLSIGN;
    19     double origin[3] = { 0.0,0.0,10.0 };
    20     char  height[] = "20";
    21     char  diam[] = "10";
    22     double direction[3] = {0,0,1};//方向
    23     tag_t  cyl_obj_id;
    24     UF_MODL_create_cyl1(sign1, origin, height, diam, direction, &cyl_obj_id);
    25 
    26     int iEdit2 = 0;    //这是一个未使用的标志。它用于确定是返回表达式的右边还是两边。目前,表达式的两边都返回。
    27     char *cDiameter;
    28     char *cHeight;
    29     UF_MODL_ask_cylinder_parms(cyl_obj_id, iEdit2, &cDiameter, &cHeight);
    30     list("%s,%s
    ", cDiameter, cHeight);//输出:p8=10,p9=20
    31     UF_free(cDiameter);
    32     UF_free(cHeight);
    33     
    34     //创建圆锥
    35     UF_FEATURE_SIGN sign2 = UF_NULLSIGN;
    36     double origin2[3] = { 0.0,0.0,10.0 };
    37     char  height2[] = "20";
    38     char  *diam2[2] = { "10" ,"5" };
    39     double direction2[3] = { 0,0,1 };//方向
    40     tag_t  cone_obj_id;
    41     UF_MODL_create_cone1(sign2, origin2, height2, diam2, direction2, &cone_obj_id);
    42 
    43     int iEdit3 = 0;    //这是一个未使用的标志。它用于确定是返回表达式的右边还是两边。目前,表达式的两边都返回。
    44     char *cD1;
    45     char *cD2;
    46     char *cH;
    47     char *cAngle;
    48     UF_MODL_ask_cone_parms(cone_obj_id, iEdit3, &cD1, &cD2, &cH, &cAngle);
    49     list("%s,%s,%s,%s
    ", cD1, cD2, cH, cAngle);//输出:p8=10,p9=5,p10=20,p11=7.1250163489018
    50     UF_free(cD1);
    51     UF_free(cD2);
    52     UF_free(cH);
    53     UF_free(cAngle);
    54 
    55     //创建球
    56     UF_FEATURE_SIGN sign3 = UF_NULLSIGN;
    57     double douCenter2[3] = { 0.0,0.0,30.0 };
    58     char  cDiam[] = "8";
    59     tag_t  sphere_obj_id;
    60     UF_MODL_create_sphere1(sign3, douCenter2, cDiam,&sphere_obj_id);
    61     
    62     int iEdit4 = 0;    //这是一个未使用的标志。它用于确定是返回表达式的右边还是两边。目前,表达式的两边都返回。
    63     char *cDiam_parm;
    64     UF_MODL_ask_sphere_parms(sphere_obj_id, iEdit4, &cDiam_parm);
    65     list("%s
    ", cDiam_parm);//输出:p9=8
    66     UF_free(cDiam_parm);
    67 
    68     UF_terminate();
    69 }
    70 
    71 extern int ufusr_ask_unload(void)
    72 {
    73     return (UF_UNLOAD_IMMEDIATELY);
    74 }
  • 相关阅读:
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月19日)
    2016年小升初海淀区全部初中排名分析
    LVM Linear vs Striped Logical Volumes
    Spring Data Redis实现消息队列——发布/订阅模式
    Redis Pubsub命令用法
    mysql 截取身份证出生日期
    MA均线组合
    Eclipse代码格式化规范
    JSON Web Token实际应用
    JSON Web Token单点登录设计
  • 原文地址:https://www.cnblogs.com/KMould/p/13403805.html
Copyright © 2020-2023  润新知