iCAx开思工具箱

标题: 【讨论】菜鸟大显眼了,请不吝赐教! [打印本页]

作者: jackezhang    时间: 2004-10-23 00:38
标题: 【讨论】菜鸟大显眼了,请不吝赐教!
本菜菜鸟作了个暴傻的程序,就是弹出个特征提取的对话框,然后在有simple_hole特征的零件文件中找到simple_hole,然后得出它的直径、深度、倒角。问题是UF_UI_select_feature (char * message, void * filter, int *count, tag_t ** feature_tags, int * response )函数中提取好特征输出的是tag_t **,而下面读取特征名字的函数UF_MODL_ask_feat_name (tag_t feature_tag, char ** feature_name )要求输入tag_t类型的参数。*tag_p_t=tag_t?有这样的说法吗?我示了好像不行的。反正这个程序问题肯定有的,请各位大虾仁者见仁,不吝赐教
作者: 深夜摔键盘    时间: 2004-10-23 07:24
_t
  Data type
   
_p_t
  Pointer to that type
   
_s
  Structure tag
   
_u_t
  Union type
   
_u_p_t
  Pointer to a union type
   
_f_t
  Pointer to a function
   
tag_t data type
We now note one of the most used data types in Open C and C++ because of its relationship to the Object Model. In Open C and C++ API there is a data type defined in uf_defs.h:
  
typedef unsigned int tag_t, *tag_p_t;
作者: 深夜摔键盘    时间: 2004-10-23 07:53
你的程序错误之一:
UF_MODL_ask_feat_name ([$features, &feature_name )]
第一个参数用的不对。
去查查DOC,这个函数有Example。
  
错误之二:
一个字符串不是 这么来定义的:char *feature_name[100];
这个表示一个字符串数组100个字符串。
要么char *feature.  要么char feature[100];
其它相关的字串定义,好好检查一下。顺便把C语言课本相关内容也翻翻看看。怕字符串,可以考虑用MFC的CString。
  
错误之三:
UF_MODL_ask_simple_hole_parms([$features,edit,&diameter,&depth,&tip_angle,*thru_flag)]
最后的一个参数thru_flag,你的代码里定义这个变量时是:int *thru_flag;
仔细看看文档,函数要求的参数类型是:int * thru_flag。
  
把这些错误改改,编译应该可以通过了。
作者: 深夜摔键盘    时间: 2004-10-23 08:25
编译通过,但执行时还是有问题。
这时,你得单步跟踪一下。所以,一定得看看书,VC++6是怎样调试程序的!许多错误是跟踪出来的,不是用眼睛去瞄。
  
我跟踪了一下,运行到特征选择完毕后,
执行到if(!strcmp(feature_name,"SIMPLE_HOLE"))就有问题了!
  
特征选择函数会出现一个特征选择对话框,里面列举了所有特征名。为了表示同一特征的不同对象,UG在特征名后加了数字标识,这个数字好象是根据特征出现的次序来定的。所以用strcmp(feature_name,"SIMPLE_HOLE"),就不对了。至于具体怎么做,自己再好好想想办法!
如下图所示:
作者: wflying    时间: 2004-10-23 11:01
不就是提取孔的参数吗?给你一段程序,望对你有帮助!
tag_t *feature_tags;
double  exp_value;
int num,response1,thru_flag;
char *diameter,*height,*tip_angle,*depth;  
char pt[10];
char *lhs_str,*rhs_str;  
tag_t exp_tag;
  
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
    
  UF_UI_select_feature ("请选择",NULL , [$num, &feature_tags,  &response1)]
  
  UF_MODL_ask_simple_hole_parms (
*feature_tags,  
0,  
&diameter,  
&depth,  
&tip_angle,  
[$thru_flag)]  
UF_MODL_dissect_exp_string (diameter,[$lhs_str,&rhs_str,&exp_tag)]
UF_MODL_eval_exp (lhs_str,[$exp_value)]////////////孔的直径
  
sprintf(pt,"%f",exp_value);
uc1601(pt,1);




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3