nx二次开发之齿轮快速建模


 相对其他的开发方法是最简单的,思路大概就是:

01  在nx中间表达式,生成渐开线,之后拉伸齿根圆,拉伸齿部分,阵列;


02  做交互界面

03  写代码了,vs创建代码模板,获取界面值,转换参数,导入部件,表达式赋值,编辑表达式

04  编译,调试

大概就是这样子。

做之前,在网上也看了很多论文,技术文稿;有使用,API与grip结合的,这个难度不算太大;也有纯grip; 貌似没有纯api 和 nx open做的; nx再带的齿轮工具箱,看了一下,大概是,生成曲线之后离散点,在拟合起来;这个难度最大;


代码


//获取NX的安装路径
    char *translation;
    UF_translate_variable("UGII_BASE_DIR", &translation);
    CString s1 = translation;
    CString s2 = "\\SYTool\\application\\CHILUN.prt";
    CString s3 = s1+s2;
    char mm[200];
    CString2Char(s3 ,mm); //CString转char


//获取UI参数
     // 获取 UI 的参数
     UF_STYLER_item_value_type_t data[5];
     double Mvalue,Zvalue,ARFvalue,Bvalue,DDvalue;

     data[0].item_attr=UF_STYLER_VALUE;
     data[0].item_id = CHANGE_M;
     UF_STYLER_ask_value(dialog_id,&data[0]);

     data[1].item_attr=UF_STYLER_VALUE;
     data[1].item_id = CHANGE_Z;
     UF_STYLER_ask_value(dialog_id,&data[1]);

     data[2].item_attr=UF_STYLER_VALUE;
     data[2].item_id = CHANGE_ARF;
     UF_STYLER_ask_value(dialog_id,&data[2]);

     data[3].item_attr=UF_STYLER_VALUE;
     data[3].item_id = CHANGE_B;
     UF_STYLER_ask_value(dialog_id,&data[3]);

     data[4].item_attr=UF_STYLER_VALUE;
     data[4].item_id = CHANGE_REAL_5;
     UF_STYLER_ask_value(dialog_id,&data[4]);

     Mvalue = data[0].value.real;
     Zvalue = data[1].value.real;
     ARFvalue = data[2].value.real;
     Bvalue = data[3].value.real;
     DDvalue = data[4].value.real;
    

//创建字符串数组,用来存放转换后的值
     char M1[300],Z1[300],ARF1[300],BB1[300],DD1[300];


//浮点型 转换 字符串型
     sprintf(M1, "m'2=%f",Mvalue);    
     sprintf(Z1, "z'2=%f",Zvalue);
     sprintf(ARF1, "arf'2=%f",ARFvalue);    
     sprintf(BB1, "B'2=%f",Bvalue);
     sprintf(DD1, "dd=%f",DDvalue);
//导入部件
    UF_import_part_modes_t modes;
    modes.layer_mode = 0;
    modes.group_mode = 0;
    modes.view_mode = 0;
    modes.cam_mode = false;
    double dest_csys[6] = {1.0, 0.0, 0.0, 0.0, 1.0, 0.0};
    double dest_point[3] = {0.0, 0.0, 0.0};
    tag_t group = NULL_TAG;
    UF_PART_import(mm, &modes, dest_csys, dest_point, 1.0, &group);

//编辑表达式
        UF_MODL_edit_exp (M1);
        UF_MODL_edit_exp (Z1);
        UF_MODL_edit_exp (ARF1);
        UF_MODL_edit_exp (BB1);
        UF_MODL_edit_exp (DD1);

        UF_MODL_update();

我认为这个还有许多优化的地方,等在学习几天,做的更完美一些


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值