NX二次开发UFUN获取几何对象的维数UF_MODL_ask_obj_dimensionality

NX11+VS2013

#include <uf.h>
#include <uf_ui.h>
#include <uf_curve.h>
#include <uf_modl.h>


UF_initialize();

//创建点
double point_coords[3] = { 10, 10, 10 };
tag_t point_tag = NULL_TAG;
UF_CURVE_create_point(point_coords, &point_tag);

//获取几何对象的维数
int dimensionality = 0;//物体的维度 -1 = object is not valid  UF_MODL_POINT  UF_MODL_LINEAR  UF_MODL_PLANAR  UF_MODL_THREE_DIMENSIONAL
double data[6] = { 0 };
//如果维数 = UF_MODL_POINT
//Data[0 - 2] = 点的坐标
//如果维数 = UF_MODL_LINEAR
//数据[0 - 2] = 直线上一点的坐标
//Data[3 - 5] = 直线的单位方向向量
//如果维数 = UF_MODL_PLANAR
//数据[0 - 2] = 平面上一点的坐标
//Data[3 - 5] = 平面的单位法线
//如果维数 =  UF_MODL_THREE_DIMENSIONAL
//数据[0 - 5] = 未使用
UF_MODL_ask_obj_dimensionality(point_tag, &dimensionality, data);

if (dimensionality == UF_MODL_POINT)
{
    //打印
    char msg[256];
    sprintf(msg, "点的坐标 X:%f, Y:%f, Z:%f", data[0], data[1], data[2]);
    uc1601(msg, 1);
}


UF_terminate();

阿飞
2021年10月14日

 

NX11+VS2013

#include <uf.h>
#include <uf_ui.h>
#include <uf_curve.h>
#include <uf_modl.h>


UF_initialize();


//创建直线
UF_CURVE_line_t Line_coords;
Line_coords.start_point[0] = 15.0;
Line_coords.start_point[1] = 16.0;
Line_coords.start_point[2] = 17.5;
Line_coords.end_point[0] = 100.0;
Line_coords.end_point[1] = 100.0;
Line_coords.end_point[2] = 100.0;
tag_t Line = NULL_TAG;
UF_CURVE_create_line(&Line_coords, &Line);

//获取几何对象的维数
int dimensionality = 0;//物体的维度 -1 = object is not valid  UF_MODL_POINT  UF_MODL_LINEAR  UF_MODL_PLANAR  UF_MODL_THREE_DIMENSIONAL
double data[6] = { 0 };
//如果维数 = UF_MODL_POINT
//Data[0 - 2] = 点的坐标
//如果维数 = UF_MODL_LINEAR
//数据[0 - 2] = 直线上一点的坐标
//Data[3 - 5] = 直线的单位方向向量
//如果维数 = UF_MODL_PLANAR
//数据[0 - 2] = 平面上一点的坐标
//Data[3 - 5] = 平面的单位法线
//如果维数 =  UF_MODL_THREE_DIMENSIONAL
//数据[0 - 5] = 未使用
UF_MODL_ask_obj_dimensionality(Line, &dimensionality, data);

if (dimensionality == UF_MODL_LINEAR)
{
    //打印
    char msg[256];
    sprintf(msg, "直线上一点的坐标 X:%f, Y:%f, Z:%f, \n直线的单位方向向量 X:%f, Y:%f, Z:%f", data[0], data[1], data[2], data[3], data[4], data[5]);
    uc1601(msg, 1);
}

UF_terminate();

阿飞
2021年10月14日

 

NX11+VS2013

#include <uf.h>
#include <uf_ui.h>
#include <uf_curve.h>
#include <uf_modl.h>


    
UF_initialize();


//一个平面的tag(只能是平面)
tag_t face_Tag = 44046;


//获取几何对象的维数
int dimensionality = 0;//物体的维度 -1 = object is not valid  UF_MODL_POINT  UF_MODL_LINEAR  UF_MODL_PLANAR  UF_MODL_THREE_DIMENSIONAL
double data[6] = { 0 };
//如果维数 = UF_MODL_POINT
//Data[0 - 2] = 点的坐标
//如果维数 = UF_MODL_LINEAR
//数据[0 - 2] = 直线上一点的坐标
//Data[3 - 5] = 直线的单位方向向量
//如果维数 = UF_MODL_PLANAR
//数据[0 - 2] = 平面上一点的坐标
//Data[3 - 5] = 平面的单位法线
//如果维数 =  UF_MODL_THREE_DIMENSIONAL
//数据[0 - 5] = 未使用
UF_MODL_ask_obj_dimensionality(face_Tag, &dimensionality, data);

if (dimensionality == UF_MODL_PLANAR)
{
    //打印
    char msg[256];
    sprintf(msg, "平面上一点的坐标 X:%f, Y:%f, Z:%f, \n平面的单位法线 X:%f, Y:%f, Z:%f", data[0], data[1], data[2], data[3], data[4], data[5]);
    uc1601(msg, 1);
}


UF_terminate();

阿飞
2021年10月14日

 

阿飞

2021年10月14日

原文地址:https://www.cnblogs.com/nxopen2018/p/15409203.html