常用的表达式函数:
//转化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();