CAM自动编程,自动创建型腔铣并设置加工区域和参数,生成刀路程序代码示例

nxopen 1年前 1136 17

对于电极自动编程开发,通常在第一步需要进行型腔铣粗加工,如果需要再考虑效率的问题,一般只对基准面以上的部分采用型腔铣,而单独的基准台只需要进行2D轮廓加工,可以节约一些时间。这样就需要对型腔铣单独设置加工区域面,并且要通过算法自动找到基准台以上的所有面。

524.jpg


自动识别电极基准面以上的所有面大致算法:

1,首先要自动找到电极的基准面,这一步对于做电极自动编程非常重要,找到基准面就可以确定电极的方向、大小等,后续的很多识别算法,都会参考这个基准面。那么如何自动找到电极的基准面呢?(要求是处于正交状态的任意方向,都能自动找到),方法在另外的帖子会详细说明,或者可以加胡君qq85585969获取算法的原型代码。


2,找到基准面后,就已经确定了电极的方向,然后以基准面的法向方向作为Z向建立工作坐标系,再遍历电极所有的面,计算每个面的边界盒得到Z向的极限值,再对比基准面的高度,就能得到基准面以上的所有面。如还是不明白可以加胡君qq85585969交流。


示例代码:

//创建一个型腔铣加工操作
int MyClass::CAMCreatCavityMillOperation ()
{
    //m_EleBodyTag是提前获得的选择的电极TAG
    tag_t datumFace = GetEleDatumFace(m_EleBodyTag, 1);        //自动获得电极基准面
    tag_t datumFloorFace = GetEleDatumFace(m_EleBodyTag, 2);   //自动获得电极基准底面
    if (datumFace == NULL_TAG || datumFloorFace == NULL_TAG)
    {
        uc1601("基准面或基准底面获取失败,",1);
        return 0;
    }

    int err_code=0;
    tag_t operTag;
    UF_OPER_create("mill_contour", "CAVITY_MILL", &operTag);

    //设定名称
    const char * objName ="CAVITY_MILL102";
    UF_OBJ_set_name(operTag, objName);

    //获取当前部件的UF_SETUP对象
    tag_t setupTag=NULL_TAG; 
    UF_SETUP_ask_setup(&setupTag);

    //获取geom根组,根据geom名字查询组的TAG
    tag_t rootGeomGroup=NULL_TAG;
    UF_SETUP_ask_geom_root(setupTag,&rootGeomGroup);
    tag_t geomGroupName = NULL_TAG; 
    UF_NCGROUP_ask_object_of_name(rootGeomGroup, "WORKPIECE", &geomGroupName);

    //获取刀具根组,根据刀具名字查询组的TAG
    tag_t rootMctGroup=NULL_TAG;
    UF_SETUP_ask_mct_root(setupTag,&rootMctGroup);
    tag_t mctGroupName = NULL_TAG; 
    UF_NCGROUP_ask_object_of_name(rootMctGroup, "D10", &mctGroupName);

    //获取program根组,根据program名字查询组的TAG
    tag_t rootProgramGroup=NULL_TAG;
    UF_SETUP_ask_program_root(setupTag,&rootProgramGroup);
    tag_t programGroupName = NULL_TAG; 
    UF_NCGROUP_ask_object_of_name(rootProgramGroup, "HUNC01", &programGroupName);

    //设定所属几何体、刀具、程序组
    UF_NCGROUP_accept_member( geomGroupName, operTag);
    UF_NCGROUP_accept_member( mctGroupName, operTag);
    UF_NCGROUP_accept_member( programGroupName, operTag);

    /*以下设置加工区域、切削模式、每刀切削深度、侧面底面余量、切削方向、内外公差、非切削运动、起始点等*/
    
    //设置加工区域    
    int dfCount = 0;
    tag_t *datumTopAllFace;

●●●请先 登陆注册 后查看●●●

    //设置进给率速度, ask查询的目的,是填充feedrateVla的值.
    UF_PARAM_feedrate_t feedrateVla; 
    UF_PARAM_ask_subobj_ptr_value (operTag, UF_PARAM_FEED_CUT,  &feedrateVla);
    feedrateVla.value = 235.3;
    UF_PARAM_set_subobj_ptr_value (operTag, UF_PARAM_FEED_CUT,  &feedrateVla);


    //生成程序
    logical generated;
    UF_PARAM_generate(operTag, &generated);


    //刷新导航器
    UF_UI_ONT_refresh(); 

    return 0;


效果演示:

22.gif



取消

打赏本帖作者:nxopen

扫码支持
建议打赏金额( 1 - 10 )元之间
将直接存入发帖者微信或支付宝账户

打开微信或支付宝扫一扫,即可进行打赏哦

2

承接UG NX二次开发、功能定制、毕业设计、疑难解决、远程培训,胡君QQ:85585969
最新回复 (17)
  • guo172960885 1年前
    1

    谢谢分享,给君哥点赞。

  • 林川秀木 1年前
    2

    谢谢分享,谢谢君哥。

  • gsyz1989 1年前
    3

    谢谢胡老师的分享,太有用了

  • T870480535 1年前
    4

    谢谢分享,学习一下……

  • tianmu1972 1年前
    5

    学习一下,谢谢非常不错

  • smthan 1年前
    6

    好东西 谢谢高手的分享哈

  • LH2514 1年前
    7

    谢谢胡老师分享!!!!!!!!!!!!!!!

  • wujiang11198 1年前
    8

    很不错 正在找这个资料

  • hedg 1年前
    9

    学习一下,补充一下自己的能力

  • LIB105545 1年前
    10

    谢谢分享.........

  • gaomigaojun 1年前
    11

    谢谢分享,666666

  • 卢尚宇 1年前
    12

    学习一下11111111111111111111

  • 模具 1年前
    13

    生命不息,学习不止

  • a529652412 1月前
    14

    谢谢楼主分享!学习一下11111111111111111111

  • 编程刘工 1月前
    15

    谢谢胡工的分享,这是难得的好资料、

  • waqa1314 23天前
    16

    学习一下,补充一下自己的能力

  • hu1576612022 22天前
    17

    谢谢谢谢谢谢谢谢谢谢

请登录后发表新帖