点击查看详细介绍

NXopen二次开发AIP基础:点构造器和点收集器函数的介绍与示例代码

nxopen 10年前 19591 131

购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008  QQ号:85585969  


这里介绍两个和点相关的对话框,点构造器和点收集器。

点构造器
点构造器用于在工作部件中产生点,并返回点的标识以及在绝对坐标系下的坐标值。通常用于创建与部件关联的点,当然,这部分场合下,也能返回非关联的点,具体说明可一参考手册。

函数原型如下:
int UF_UI_point_construct
(
char * cue,
UF_UI_POINT_base_method_t * base_method,
tag_t * point_tag,
double base_pt[3] ,
int * response
);

1,第一个参数是在状态栏上的提示。
2,第二个参数base_method用于指定构造点的方法,例如我们只想选择圆心,或者交点等,可用成员有:
UF_UI_POINT_INFERRED = 0
UF_UI_POINT_CURSOR_POS
UF_UI_POINT_EXISTING_PT
UF_UI_POINT_END_PT
UF_UI_POINT_CONTROL_PT
UF_UI_POINT_INTERSECT_PT
UF_UI_POINT_CENTER_PT
UF_UI_POINT_ANGLE_PT
UF_UI_POINT_QUADRANT_PT
UF_UI_POINT_ON_CURVE_PT
UF_UI_POINT_ON_SURFACE_PT
UF_UI_POINT_OFFSET_CSYS_PT
UF_UI_POINT_DIALOG
UF_UI_POINT_NO_METHOD
UF_UI_POINT_APPLICATION_METHOD

3,第三个参数则是创建点的标识,如果点击对话框的取消按钮,则返回的是NULL_TAG。
4,第四个参数是创建点的坐标,本质上可以理解为在绝对坐标系下的一个向量
5,最后一个参数指示了消息框的返回值,是UF_UI_OK、UF_UI_BACK 、UF_UI_CANCEL三者中的一个。


示例代码如下:

void DlgTest()
{
UF_UI_POINT_base_method_t baseMethod=UF_UI_POINT_CENTER_PT;
tag_t thePoint;
double base_pt[3]={1,2,3};
int response;
UF_UI_point_construct("选择点",&baseMethod,&thePoint,base_pt,&response);
char str[100];
if(response==UF_UI_OK)
{
sprintf(str,"Point Tag: %d,At (%f,%f,%f)",thePoint,base_pt[0],base_pt[1],base_pt[2]);
uc1601(str,1);
}
}
//入口函数
extern DllExport void ufsta( char *param, int *returnCode, int rlen)
{
if(UF_initialize()) 
return;
//Add your code here
DlgTest();
UF_terminate();
}
//退出函数
extern int ufusr_ask_unload()
{
return UF_UNLOAD_IMMEDIATELY;
}

编译后执行如图所示:

当我们选择一个实体的圆弧中心点之后会弹出对话框如下图:

另外,函数uc1616,也能实现类似的功能,具体使用方法可参考手册。

点收集器

前面介绍的点构造器用于创建点,这里谈到的点收集器用于创建一系列的点的集合。

该函数原型如下:
int UF_UI_select_point_collection
(
char * message,
logical coincident_points,
UF_UI_chained_points_p_t * points,
int * count,
int * response
);

第一个参数是提示信息,不超过32个字符,通常使用的是"Point Specification Method"。

第二个参数决定是否接收重合点,TRUE表示可返回重合点,而FALSE则不返回。

第三个参数是所选择的一系列点,注意使用完毕之后需要调用UF_free释放内存,count参数表示返回点的数目,而response和前面相同,是指示对话框所点击的按钮。

重点说明一下第三个参数,函数调用后,该参数是一个指向数组首地址的指针,数组成员是UF_UI_chained_points_s结构体,其定义如下:

struct UF_UI_chained_points_s
{
double pt[3];
tag_t object;
};

其中pt[3]就是点的坐标,而object则是所选择点对应的标识。


示例代码如下:

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


运行效果如下:

3

最新回复 (131)
  • f1632947 10年前
    1

    学习学习,谢谢楼主分享

  • jqs888 VIP会员 10年前
    2

    学习学习,谢谢楼主分享

  • jqs888 VIP会员 10年前
    3

    学习学习,谢谢楼主分享

  • ZF6655 10年前
    4

    这个可以用UC1616代替吗

  • ccpseric 10年前
    5

    正是我所需要的!多謝版主

  • xbzoo1 10年前
    6

    感谢作者分享!感谢作者分享!

  • wormsccc 10年前
    7

    感谢作者分享!

  • w1075482171 10年前
    8

    内容不错,代码写的很详细,学习了

  • waqa1314 VIP会员 10年前
    9

    学习学习,谢谢楼主分享

  • tank520 10年前
    10

    谢谢分享!!正是需要的

  • pengfujun VIP会员 10年前
    11

    资料很不错,学习了!!!!

  • gyx627 10年前
    12

    好有用,找了好久,谢谢

  • gyx627 10年前
    13

    我选完点之后对话框的按钮一直是灰色的,无法确定,该怎么办

  • snfgdgvUGNX 10年前
    14

    正是我所需要的!多謝版主

  • 3心心心 10年前
    15

    回复:楼主

    谢谢分享!!瞧瞧看看

请登录后发表新帖