• NX 二次开发,线性移动uf5943


    #include <uf.h>
    #include <uf_modl.h>
    #include <uf_part.h>
    #include <uf_modl_primitives.h>
    #include <uf_object_types.h>
    #include <uf_CSYS.h> 
    #include <UF_VEC.h>
    #include <UF_MTX.h>
    #include <uf_trns.h>
    
    	tag_t point_tag=NULL_TAG;
    	double point[3]={0,0,0};
    	UF_CURVE_create_point(point,&point_tag);//创建点
    	/*----------------------------*/
    	double matrix [16]; 
    double O1[3]={0.0,0.0,1.0};	//变换Z+1	
    	tag_t  object2=NULL_TAG;         //变化后tag	
    	int    status;
    	uf5943(O1,matrix);           //矩阵方法(线性)
    
    	//矩阵的实现
    	int numbers=1;      // 阵列数量
    	int  tran=2;        // 1 :移动 2 :复制
    	int  layer=-1;      //  -1: 工作层
    	int trace_curves=2; 
    	uf5947(matrix,&point_tag,&numbers,&tran,&layer,&trace_curves,&object2,NULL,&status); 
        UF_CSYS_set_wcs_display(1); //显示工作坐标
    
    

     封装

    
    

    static void moveObjtect(tag_t object, double X, double Y,double Z)
    {
    tag_t csys_tag = NULL_TAG;
    tag_t matrix_id = NULL_TAG;
    double csys_origin[3];
    UF_CSYS_ask_wcs(&csys_tag);
    UF_CSYS_ask_csys_info(csys_tag, &matrix_id, csys_origin);

    double min_corner[3], directions[3][3], distances[3];
    UF_MODL_ask_bounding_box_exact(object, csys_tag, min_corner, directions, distances);
    UF_CSYS_map_point(UF_CSYS_WORK_COORDS, min_corner, UF_CSYS_ROOT_WCS_COORDS, min_corner);
    double matrix[16]; //矩阵
    double O1[3] = { X - min_corner[0],Y - min_corner[1],Z }; //变换Z+1
    tag_t object2 = NULL_TAG; //变化后tag
    int status;
    uf5943(O1, matrix); //矩阵方法(线性)
    //矩阵的实现
    int numbers = 1; // 阵列数量
    int tran = 1; // 1 :移动 2 :复制
    int layer = 0; // -1: 工作层
    int trace_curves = 2;
    uf5947(matrix, &object, &numbers, &tran, &layer, &trace_curves, &object2, NULL, &status);
    if (X > 0 && Y == 0)
    {
    double min_corner1[3], directions1[3][3], distances1[3];
    UF_MODL_ask_bounding_box_exact(object, csys_tag, min_corner1, directions1, distances1);
    double origin[3] = { min_corner1[0] + distances1[0],min_corner1[1],0.0 };
    tag_t temp_csys = NULL_TAG;
    UF_CSYS_create_temp_csys(origin, matrix_id, &temp_csys);
    UF_CSYS_set_wcs(temp_csys);
    }
    else
    {
    double min_corner1[3], directions1[3][3], distances1[3];
    UF_MODL_ask_bounding_box_exact(object, csys_tag, min_corner1, directions1, distances1);
    double origin[3] = { min_corner1[0],min_corner1[1]+distances1[1],0.0 };
    tag_t temp_csys = NULL_TAG;
    UF_CSYS_create_temp_csys(origin, matrix_id, &temp_csys);
    UF_CSYS_set_wcs(temp_csys);
    }
    }

     
  • 相关阅读:
    poj1141
    poj1260
    poj1080
    poj1221
    用Microsoft Office SharePoint Designer 2007开发aspx
    在Web Part中使用User Control
    MOSS中的WebPart开发
    在MOSS中开发一个模块化的feature
    SharePoint Web Service的身份验证
    MOSS中对列表的一些操作(创建,查询等)
  • 原文地址:https://www.cnblogs.com/liuxiaoqing1/p/12012664.html
Copyright © 2020-2023  润新知