|
|
[二次开发] 分享一段小程序
(这条文章已经被阅读了 1978 次) 时间:2009/09/22/08:16
来源:even2004
程序的功能是获取当前部件一个特征,获取其表达式,以交互的方式更改其值并更新显示,功能很简单,但也费了一番功夫才实现: char cue[] = "cue message"; int cnt=0, resp=0; tag_t *feats, first=NULL_TAG; char *string; tag_t *exps; int number_of_exps=0,i; char *expr_str; char *string1; char cp2[][16]={{'r'},{'h'}}; int ip3=2; double da4[2]={0,0}; int ip5; char *diameter = NULL, *lhs_str = NULL, *rhs_str = NULL, new_exp_str[UF_MAX_EXP_LENGTH+1] = { "" }; tag_t exp_tag = NULL_TAG; UF_CALL(UF_UI_select_feature(cue, NULL, &cnt, &feats, &resp)); if (cnt) { first = feats[0]; UF_free(feats); } UF_CALL(UF_MODL_ask_exps_of_feature(first,&number_of_exps,&exps)); UF_CALL(UF_MODL_ask_exp_tag_string(exps[0], &string1)); UF_CALL( UF_MODL_dissect_exp_string(string1, &lhs_str, &rhs_str, &exp_tag )); uc1609(cue,cp2,ip3,da4,&ip5); sprintf( new_exp_str, "%s=%f", lhs_str, da4[0] ); UF_CALL( UF_MODL_edit_exp( new_exp_str )); UF_MODL_update(); 注: 1、 获取对象的特征后不能将输出值直接给UF_MODL_ask_exps_of_feature,要做一次中间转化; 2、 获取的特征表达式也不能直接传给表达式分割函数,需要获取表达式字符串。 这两点是写程序过程中遇到的困难,虽然现在发现了但还不是完全理解,感觉是C语言的问题,不知是不是这样的!
|
|