NX二次开发 UFUN分离表达式的名称和值 UF_MODL_dissect_exp_string

NX二次开发 UFUN分离表达式的名称和值 UF_MODL_dissect_exp_string

//NX8.0+VS2010
#include <uf.h>
#include <uf_ui.h>
#include <uf_obj.h>
#include <uf_modl.h>

extern DllExport void ufsta(char* param, int* returnCode, int rlen)
{
	if (UF_initialize())
		return;


	int number_of_exps = 0;
	tag_t* exps = NULL;
	tag_t body_tag = NULL;
	double point[3] = { 0.0, 0.0, 0.0 };
	char* edgeLen[3] = { "5.0", "10.0", "15.0" };
	UF_MODL_create_block1(UF_NULLSIGN, point, edgeLen, &body_tag);
	/*获取实体模型表达式 number_of_exps表达式数量 exps表达式标识*/
	UF_MODL_ask_exps_of_part(body_tag, &number_of_exps, &exps);

	char* string = "";
	char* lhs_str = "";
	char* rhs_str = "";
	tag_t exp_tag = NULL;
	char* name[3];
	name[0] = "block_l";
	name[1] = "block_w";
	name[2] = "block_h";
	double exp_value = 0.0;
	char buffer[100] = "";
	UF_UI_open_listing_window();
	for (int i = 0; i < number_of_exps; ++i)
	{
		/*利用表达式标识获得表达式字符串*/
		UF_MODL_ask_exp_tag_string(exps[i], &string);
		/*分离表达式的名称和数值*/
		UF_MODL_dissect_exp_string(string, &lhs_str, &rhs_str, &exp_tag);
		/*表达式重命名*/
		UF_MODL_rename_exp(lhs_str, name[i]);
		UF_UI_write_listing_window(lhs_str);
		UF_UI_write_listing_window("=");
		/*计算表达式*/
		UF_MODL_eval_exp(name[i], &exp_value);
		sprintf(buffer, "%.3f\n", exp_value);
		UF_UI_write_listing_window(buffer);
	}
	UF_terminate();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

梅雷

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

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

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

打赏作者

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

抵扣说明:

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

余额充值