NX二次开发,有关表达式(expression)操作相关的函数——基础知识

常用的表达式函数:

//转化int转化为char类型

int number;
double number1;
char msg[256];
sprintf(msg,"%d",number);
sprintf(msg1,"%f",number1);

//打印

//打印
UF_UI_open_listing_window();
UF_UI_write_listing_window(msg);

一、与创建表达式相关的函数

1、创建表达式

创建表达式 ;一般不用因为二次开发中一般对表达操作必须有TAG

UF_MODL_create_exp("name=80.0");

2、创建带TAG的表达式

tag_t expTAG = NULL_TAG;
UF_MODL_create_exp_tag("表达式名字=80.0", &expTAG);

二、与获取表达式相关的函数

1、通过输入表达式的名称,获取它的值
   通过设置表达式的名称,获取值(得到结果为名字+值)

char outValue[UF_MAX_EXP_BUFSIZE+1];//uf中输出字符串最大值
UF_MODL_ask_exp("表达式名字", outValue);

//打印
UF_UI_open_listing_window();
UF_UI_write_listing_window(outValue);

2、通过输入PART的TAG,获取整个部件表达式的TAG及表达式的个数

//获取当前工作部件的表达式
//得到输入特征的TAG
tag_t workpartTAG = NULL_TAG;
workpartTAG = UF_ASSEM_ask_work_part();
//通过输入PART的TAG,获取该特征的所有表达式的TAG及个数
int number;
tag_t *expTAG = NULL_TAG;
UF_MODL_ask_exps_of_part(workpartTAG, &number, &expTAG);
UF_free(expTAG);

3、通过输入特征的TAG,获取该特征所有表达式的TAG及个数

    //创建块
	UF_FEATURE_SIGN blocksign = UF_NULLSIGN;
	double blockcorner[3] = { 0.0,0.0,0.0 };
	char *blockedge[3] = { "100","100","100" };
	tag_t blockTag = NULL_TAG;
	UF_MODL_create_block1(blocksign, blockcorner, blockedge, &blockTag);
	//通过输入特征的TAG,获取该特征的所有表达式的TAG及个数
	int number;
	tag_t *expTAG = NULL_TAG;
	UF_MODL_ask_exps_of_feature(blockTag, &number, &expTAG);
	UF_UI_open_listing_window();
	//得到特征相关的表达式TAG
	for (int i = 0; i < number; i++)
	{
		char msg[256];
		sprintf(msg, "特征TAG为:%d", expTAG[i]);
		UF_UI_write_listing_window(msg);
		UF_UI_write_listing_window("\n");
	}
    UF_free(expTAG);

4、通过输入表达式的TAG,得到表达式的值

    //创建块
	UF_FEATURE_SIGN blocksign = UF_NULLSIGN;
	double blockcorner[3] = { 0.0,0.0,0.0 };
	char *blockedge[3] = { "100","100","100" };
	tag_t blockTag = NULL_TAG;
	UF_MODL_create_block1(blocksign, blockcorner, blockedge, &blockTag);
	//通过输入特征的TAG,获取该特征的所有表达式的TAG及个数
	int number;
	tag_t *expTAG = NULL_TAG;
	UF_MODL_ask_exps_of_feature(blockTag, &number, &expTAG);
	UF_UI_open_listing_window();
	//得到特征相关的表达式TAG
	char msg[256];
    double value;
	for (int i = 0; i < number; i++)
	{

        UF_MODL_ask_exp_tag_value(expTAG[i],&value);
		sprintf(msg, "特征value为:%f", value);
		UF_UI_write_listing_window(msg);
		UF_UI_write_listing_window("\n");
	}
    UF_free(expTAG);

5、通过输入表达式的TAG,得到表达式的字符串

    //创建块
	UF_FEATURE_SIGN blocksign = UF_NULLSIGN;
	double blockcorner[3] = { 0.0,0.0,0.0 };
	char *blockedge[3] = { "100","100","100" };
	tag_t blockTag = NULL_TAG;
	UF_MODL_create_block1(blocksign, blockcorner, blockedge, &blockTag);
	//通过输入特征的TAG,获取该特征的所有表达式的TAG及个数
	int number;
	tag_t *expTAG = NULL_TAG;
	UF_MODL_ask_exps_of_feature(blockTag, &number, &expTAG);
	UF_UI_open_listing_window();
	//得到特征相关的表达式TAG
	char msg[256];
    char *stringValue=NULL;
	for (int i = 0; i < number; i++)
	{

        UF_MODL_ask_exp_tag_value(expTAG[i],&stringValue);
		UF_UI_write_listing_window(stringValue);
		UF_UI_write_listing_window("\n");
	}
    UF_free(stringValue);

三、与编辑表达式相关的函数

1、分割表达式;编辑表达式;重命名

	//得到工作部件的TAG
	tag_t workPartTAG = UF_ASSEM_ask_work_part();

	//获取工作部件里边的表达式的TAG及个数
	int number;
	tag_t *outExpTAG = NULL_TAG;
	UF_MODL_ask_exps_of_part(workPartTAG, &number, &outExpTAG);

	//表达式左边等于右边
	char *expstring = NULL;
	char *leftstring = NULL;//表达式左边
	char *rightstring = NULL;//表达式右边
	tag_t newexpTAG = NULL_TAG;
	char newname1[256];

	for (int i = 0; i < number; i++)
	{
        //获得表达式的字符串
		UF_MODL_ask_exp_tag_string(outTAG[i], &expstring);
		//分割表达式
		UF_MODL_dissect_exp_string(expstring, &leftstring, &rightstring, &newexpTAG);
		
		//重命名
		sprintf(newname1, "新的名字%d", i);
		UF_MODL_rename_exp(leftstring, newname1);

	}
	//编辑表达式
	UF_MODL_edit_exp("新的名字3=300.0");
	//更新模型
	UF_MODL_update();

	//释放内存
	UF_free(leftstring);
	UF_free(rightstring);
	UF_free(expstring);
	UF_free(outExpTAG);

2、计算表达式

    //新建一个表达式
	//创建代TAG的表达式
	tag_t expTAG = NULL_TAG;
	double zzvalue;
	UF_MODL_create_exp_tag("zz=sin(30)", &expTAG);

	UF_MODL_eval_exp("zz", &zzvalue);
	char msg[256];
	sprintf(msg, "%f", zzvalue);
	UF_UI_open_listing_window();
	UF_UI_write_listing_window(msg);

四、与导入导出有关的函数

1、导入表达式

	//导入表达式
	UF_MODL_import_exp("D:\\UgDevelop\\123.exp", 0);
	//更新模型
	UF_MODL_update();

2、导出表达式

    //导出表达式
    UF_MODL_export_exp("D:\\UgDevelop\\12");
    UF_MODL_update();

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

白雪公主的后妈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值