• NX二次开发UFUN获得镜像矩阵(做镜像体)uf5946


    内容为转载,出自https://www.cnblogs.com/KMould/p/14084087.html

    使用uf5946获取镜像矩阵
    注意:uf5946镜像这个函数,只能用#define UF_plane_type=46这种类型的数据作为镜像面,不能用#define UF_datum_plane_type=197这种类型的数据作为镜像面。
    NX9+VS2012
    
    #include <uf.h>
    #include <uf_ui.h>
    #include <uf_modl.h>
    #include <uf_trns.h>
    
    
        
    UF_initialize();
    
    
    uc1601("镜像体",1);
    
    //创建块
    UF_FEATURE_SIGN Sign = UF_NULLSIGN;//设置布尔
    double Corner_pt[3] = {0.0, 100.0, 0.0};//设置原点
    char *Edge_Len[3] = {"100", "100", "100"};//设置长宽高
    tag_t BlkTag = NULL_TAG;
    UF_MODL_create_block(Sign, NULL_TAG, Corner_pt, Edge_Len, &BlkTag);
    
    //特征找体
    tag_t body_tag = NULL_TAG;
    UF_MODL_ask_feat_body(BlkTag, &body_tag);
    
    //创建基准面
    double dP1[3] = { 0.0,0.0,0.0 };
    double dDir[3] = { 0.0,1.0,0.0 };
    tag_t tagPlane;
    UF_MODL_create_plane(dP1, dDir, &tagPlane);
    
    //获取转换矩阵
    double douMatris[12];
    int iSt = 0;
    tag_t tagPlanes[] = { tagPlane };
    uf5946(tagPlanes, douMatris, &iSt);
    
    tag_t tagObjs[] = { body_tag };
    int iCount = 1;
    int iMoveOrCopy = 2;//1:Move 2:Copy
    int iDestLayer = 0;    //0:原来的图层 //-1活动的图层  //1-256指定的图层
    int iTraceCurves = 1;//轨迹状态,1:开,2:关。
    tag_t tagCopies = NULL_TAG; //变化后坐标tag  复制的对象标识符的列表。当move_or_copy等于1 (move)时不使用。
    //当move_or_copy为2(copy)时,调用者必须将其赋予足够大的维度,以包含对象数组中相同数量的对象。
    tag_t tagTraceCurveGroup = NULL_TAG; //一组轨迹曲线。当trace_curves输入被设置为2(off)时,不会使用这个函数。
    int iStatus = 0;//0:成功 1-12错误
    if (iSt == 0)
    {
        //转换的实现
        uf5947(douMatris, tagObjs, &iCount, &iMoveOrCopy, &iDestLayer, &iTraceCurves, &tagCopies, &tagTraceCurveGroup, &iStatus);
    }
    
    UF_terminate();

     

    错误示例

    当使用UF_MODL_create_fixed_dplane创建基准面时,不能镜像

    NX9+VS2012
    
    #include <uf.h>
    #include <uf_ui.h>
    #include <uf_modl.h>
    #include <uf_trns.h>
    
    
        
    UF_initialize();
    
    
    uc1601("镜像体",1);
    
    //创建块
    UF_FEATURE_SIGN Sign = UF_NULLSIGN;//设置布尔
    double Corner_pt[3] = {0.0, 100.0, 0.0};//设置原点
    char *Edge_Len[3] = {"100", "100", "100"};//设置长宽高
    tag_t BlkTag = NULL_TAG;
    UF_MODL_create_block(Sign, NULL_TAG, Corner_pt, Edge_Len, &BlkTag);
    
    //特征找体
    tag_t body_tag = NULL_TAG;
    UF_MODL_ask_feat_body(BlkTag, &body_tag);
    
    
    //创建固定的基准平面
    double Origin_Point[3] = { 0.0,0.0,0.0 };
    double Plane_Normal[3] = { 0.0,1.0,0.0 };
    tag_t tagPlane = NULL_TAG;
    UF_MODL_create_fixed_dplane(Origin_Point, Plane_Normal, &tagPlane);
    
    
    //获取转换矩阵
    double douMatris[12];
    int iSt = 0;
    tag_t tagPlanes[] = { tagPlane };
    uf5946(tagPlanes, douMatris, &iSt);
    
    tag_t tagObjs[] = { body_tag };
    int iCount = 1;
    int iMoveOrCopy = 2;//1:Move 2:Copy
    int iDestLayer = 0;    //0:原来的图层 //-1活动的图层  //1-256指定的图层
    int iTraceCurves = 1;//轨迹状态,1:开,2:关。
    tag_t tagCopies = NULL_TAG; //变化后坐标tag  复制的对象标识符的列表。当move_or_copy等于1 (move)时不使用。
    //当move_or_copy为2(copy)时,调用者必须将其赋予足够大的维度,以包含对象数组中相同数量的对象。
    tag_t tagTraceCurveGroup = NULL_TAG; //一组轨迹曲线。当trace_curves输入被设置为2(off)时,不会使用这个函数。
    int iStatus = 0;//0:成功 1-12错误
    if (iSt == 0)
    {
        //转换的实现
        uf5947(douMatris, tagObjs, &iCount, &iMoveOrCopy, &iDestLayer, &iTraceCurves, &tagCopies, &tagTraceCurveGroup, &iStatus);
    }
    
    UF_terminate();

     

    阿飞

    2021年10月16日

  • 相关阅读:
    function与感叹号
    js中的|| 与 &&
    [转] html屏蔽右键、禁止复制
    ExtJS 5.1 WINDOW BLUR
    ExtJS 网页版执行工具
    Excel 随即获得一组数据集中的数据
    [转] Spring Data JPA Tutorial: Pagination
    Set up eclipse for Ext js and spket IDE plugin
    ExtJS Alias, xtype and widget
    ExtJS stores
  • 原文地址:https://www.cnblogs.com/nxopen2018/p/15415592.html
Copyright © 2020-2023  润新知