NX二次开发常用函数:UF_MODL_ask_feat_......(一)

         最近学习NX二次开发发现有一些函数经常使用,俗话说得好,好记性不如烂笔头,现在做一下笔记,帮助理解。

UF_MODL_ask_feat_......所在头文件uf_modl.h

1、UF_MODL_ask_feat_body(通过特征查询体)

概述:通过特征查询体,输出是一个实体类型 (type 70, subtype 0) ,type 70, subtype 0可以通过uf_object_types.h头文件进行查看。该头文件所有NX对象类型和子类型的名称。如下图所示。

适用环境:内部或外部开发

函数解析:

tag_t	    feature_obj_id	    Input	特征对象的TAG
tag_t *	    body_obj_id	        Output	通过特征找体后得到的的实体对象TAG

实例:通过特征找体,并打印体的TAG值,并对体进行染色(注意直接对特征进行染色时不可以的)

	UF_initialize();
	//创建块
	UF_FEATURE_SIGN Sign = UF_NULLSIGN;//设置布尔
	double Corner_pt[3] = { 0.0, 0.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 bodyTag = NULL_TAG;
	UF_MODL_ask_feat_body(BlkTag, &bodyTag);

	//打印实体的TAG值
	char msg[256];
	sprintf(msg, "%d", bodyTag);

	//将实体染为红色
	UF_OBJ_set_color(bodyTag, 186);
	UF_terminate();

结果:

2、UF_MODL_ask_feat_edges(通过特征查询边)

概述:通过特征查询边,输出是一个实体类型边 (type 70, subtype 3) ,type 70, subtype 3可以通过uf_object_types.h头文件进行查看。该头文件所有NX对象类型和子类型的名称。如下图所示。

适用环境:内部或外部开发

函数解析:

tag_t	        feature_obj_id	Input	                特征对象的TAG
uf_list_p_t *	object_list	    Output to UF_*free*	    使用链表对边进行收集,注意使用UF_MODL_delete_list()释放空间

实例:通过特征找边,并打印所有边的TAG值

    UF_initialize();
	//创建块
	UF_FEATURE_SIGN Sign = UF_NULLSIGN;//设置布尔
	double Corner_pt[3] = { 0.0, 0.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 bodyTag = NULL_TAG;
	UF_MODL_ask_feat_body(BlkTag, &bodyTag);

	//通过特征查询边
	uf_list_p_t edgelist = NULL_TAG;
	UF_MODL_ask_feat_edges(BlkTag, &edgelist);
	
	//链表操作
	int cout;
	UF_MODL_ask_list_count(edgelist, &cout);	//访问链表数量
	tag_t edgwTag = NULL_TAG;
	for (int i = 0; i < cout; i++)
	{
		//打印实体的TAG值
		UF_MODL_ask_list_item(edgelist, i, &edgwTag);
		char msg[256];
		sprintf(msg, "%d", edgwTag);
		print(msg);
	}

	UF_terminate();

结果:

3、UF_MODL_ask_feat_faces(通过特征查询面)

概述:通过特征查询面,输出是一个实体类型面 (type 70, subtype 3) ,type 70, subtype 3可以通过uf_object_types.h头文件进行查看。该头文件所有NX对象类型和子类型的名称。如下图所示。

适用环境:内部或外部开发

函数解析:

tag_t	        feature_obj_id	Input	                特征对象的TAG
uf_list_p_t *	object_list	    Output to UF_*free*	    使用链表对面进行收集,注意使用UF_MODL_delete_list()释放空间

实例:通过特征找面,并打印所有面的TAG值

	UF_initialize();
	//创建块
	UF_FEATURE_SIGN Sign = UF_NULLSIGN;//设置布尔
	double Corner_pt[3] = { 0.0, 0.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 bodyTag = NULL_TAG;
	UF_MODL_ask_feat_body(BlkTag, &bodyTag);

	//通过特征查询边
	uf_list_p_t edgelist = NULL_TAG;
	UF_MODL_ask_feat_edges(BlkTag, &edgelist);
	
	//通过特征查询面
	uf_list_p_t facelist = NULL_TAG;
	UF_MODL_ask_feat_faces(BlkTag, &facelist);

	//链表操作
	int cout;
	UF_MODL_ask_list_count(facelist, &cout);	//访问链表数量
	tag_t faceTag = NULL_TAG;
	for (int i = 0; i < cout; i++)
	{
		//打印实体的TAG值
		UF_MODL_ask_list_item(edgelist, i, &faceTag);
		char msg[256];
		sprintf(msg, "%d", faceTag);
		print(msg);
	}

	UF_terminate();

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白雪公主的后妈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值