iCAx开思工具箱

标题: 【求助】请看源程序! [打印本页]

作者: wflying    时间: 2004-7-26 10:00
标题: 【求助】请看源程序!
我是想求出实体的体积,程序如下:
tag_t  view;
/*
其他参数的定义
*/
char zhp[20];
  UF_UI_selection_options_t opts;
  UF_UI_mask_t mask = {UF_solid_type, 0, UF_UI_SEL_FEATURE_BODY};
  int  response = 2;
  int type = 1;
  int  unit = 3;
  int accuracy =  1;
  int  count = 0;
  int  zero = 0;
  double  acc_val[11] = {.01,0,0,0,0,0,0,0,0,0,0};
  double  density = 1.0;
  double  massprop[47];
  double  massprop_stat[13];
  opts.num_mask_triples = 1;
  opts.mask_triples = [$mask]
  opts.scope = UF_UI_SEL_SCOPE_WORK_PART;
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
  
  UF_UI_select_with_single_dialog (
cue,  
title,  
UF_UI_SEL_SCOPE_WORK_PART,  
NULL,  
NULL,   
&response,  
&object,  
cursor,  
&view );
uc1601("zhp",1);
  UF_CALL(UF_MODL_ask_mass_props_3d(view,///应该是在这里出错了
                                       count,
                                       type,
                                       unit,
                                       density,
                                       accuracy,
                                       acc_val,
                                       massprop,
                                       massprop_stat));
  sprintf(zhp,"%f",massprop[1]);
  uc1601(zhp,1);
  但是求得的数值好大,不对。我感觉应该是在view参数这里出错。我必须要用上边的 UF_UI_select_with_single_dialog 这个函数。怎么解决,请各位高手指点,多谢!!
作者: tari    时间: 2004-7-26 10:20
把view换成&object试试
count=0?好像不对吧
作者: wflying    时间: 2004-7-26 10:49
tari:
把view换成&object试试  
count=0?好像不对吧

  
这里没有count的呀,只是单个选择的呀,是用object来判断选中没有选中的。我按照上边的方法试了试,还是不对,请大家帮助,多谢了!!
作者: Maik    时间: 2004-7-26 11:33
建议好好看看函数的声明。
1.把UF_MODL_ask_mass_props_3d()函数的第一个参数放进数组(或指针)里在传给它。
2.第一个参数传的应该是Select_single_dialog的Object.而不是view.
3.count = 1;
作者: goodluckwu    时间: 2004-7-26 14:25
count表示你传给他几个物体。你给他个0当然出错了。
ug有的时候可以同时对一系列物体操作。这时ug主要采用了两种方法,一种是传给他一个list,需要事先create,事后delete。
另一种是传给其一个数组,并把数组的首指针和数组个数传给他。
这里就用的第二种。
作者: wflying    时间: 2004-7-26 15:32
这里是没有count这个参数的,但是可以用那个 object来判断选定与否的。我的那个实体肯定是选定了的,因为我其他的一些计算是根据它来的,都是能实现的,就是在求体积的时候不对!高手在帮我想想解决办法,这个问题困扰我好久了,多谢了!
作者: tari    时间: 2004-7-26 15:39
我感觉虽然count一直等于1,没什么意义,但是count还是需要赋值的啊
作者: wflying    时间: 2004-7-26 15:47
我需要的就是单个选择,其他的操作都能达到效果,是根据我选择的实体生成的。就是求体积这里不行了!
作者: tari    时间: 2004-7-26 15:54
单个选择也需要把count赋为1啊!
那你用UF_get_fail_message()这个函数调试的错误报告是什么?
作者: goodluckwu    时间: 2004-7-26 16:20
Maik wrote:
建议好好看看函数的声明。  
  1.把UF_MODL_ask_mass_props_3d()函数的第一个参数放进数组(或指针)里在传给它。  
  2.第一个参数传的应该是Select_single_dialog的Object.而不是view.  
  3.count = 1;

  
人家已经给你写得很好了。你仔细看看自己的程序和api里的帮助就明白了。
作者: wflying    时间: 2004-7-26 20:05
谢谢大家,终于通过了!!




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