iCAx开思工具箱

标题: 请zzz等高手们过来指点一下!! [打印本页]

作者: qiaozhp    时间: 2003-7-16 17:09
标题: 请zzz等高手们过来指点一下!!
我想用函数UF_MODL_create_law_extension来创建一个曲面,它的输入参数为结构体struct UF_MODL_lawext_data_s
{  
   UF_MODL_lawext_dirref_t ref_type; /* Direction reference type  
                                     */  
   void *length_law_parms;           /* For the specification of   
                                        length law parameters */  
   void *angle_law_parms;            /* For the specification of   
                                        angle law parameters */  
   UF_STRING_p_t curve;   
  
前面两个参数length_law_parms和angle_law_parms怎么给它定义??UF_MODL_type.h里说用UF_MODL_create_law()定义,可是找不到这个函数阿。:-S例如我想定义length_law为Constant Law,law value为50怎么处理阿?
作者: qiaozhp    时间: 2003-7-17 10:20
怎么还没有人答复阿?好郁闷,望zzz、spline等高手们指点一下,谢了先!!
作者: zzz    时间: 2003-7-17 15:39
看了很久,觉得应该是UF_MODL_law_linear_cubic_t, UF_MODL_law_contant_t等结构,强制类型转换。
作者: qiaozhp    时间: 2003-7-19 15:51
多谢zzz的指点,我作了如下的赋值!!
  
             UF_MODL_lawext_data_p_t law_ext_data;
             uf_list_p_t face_list;
             tag_t law_ext,face_obj;
             UF_MODL_parm_t len_law,angle_law;
  
          law_ext_data=(UF_MODL_lawext_data_t *)UF_allocate_memory(sizeof(UF_MODL_lawext_data_t),[$err)]
  
  len_law.method_type=UF_MODL_PARM_CONSTANT;
  strcpy(len_law.defined_by.constant.value,"50");
  strcpy(angle_law.defined_by.constant.value,"90");
  angle_law.method_type=UF_MODL_PARM_CONSTANT;
  
  law_ext_data->angle_law_parms=[$angle_law]
  law_ext_data->length_law_parms=[$len_law]
  UF_MODL_ask_angle_tolerance([$tol)]
  law_ext_data->angle_tol=tol;
  
  
  UF_MODL_create_string_list( 1 ,1,[$cur)]
  cur.num=1;
  cur.id[0]=edge;
  cur.dir[0]=UF_MODL_CURVE_START_FROM_BEGIN;
  cur.string[0]=1;
  
  UF_MODL_ask_edge_faces(edge,[$face_list)]
  UF_MODL_ask_list_item(face_list, 0, [$face_obj)]
  
  law_ext_data->curve=[$cur]
  law_ext_data->spine=NULL;
  law_ext_data->ref_type=UF_MODL_lawext_dirref_face;
  law_ext_data->n_faces=1;
  law_ext_data->face_ids=[$face_obj]
  
  UF_MODL_create_law_extension(law_ext_data,[$law_ext)]
可是求不出创建的extension曲面,后来我又用下面的赋值方法
                UF_MODL_law_constant_t len_value,angle_value;
                 strcpy(len_value.value,"50");
  strcpy(angle_value.value,"90");
                 law_ext_data->angle_law_parms=[$angle_value]
  law_ext_data->length_law_parms=[$len_value]
  还是求不出曲面的tag,郁闷阿!!还望zzz等高手们再指点一下!!
作者: zzz    时间: 2003-7-19 16:28
能否把代码发上来看一下
作者: qiaozhp    时间: 2003-7-21 10:05
程序里我是先用交互方式先选择了一个face的一条边edge,然后就是用上面这段代码来生成一个extension曲面。
由于完整的代码中还有其它很多不相关的内容,我也不知道该如何剔除它们,但是创建extension面就只用了上述的代码!!
请zzz指点,ths!!
作者: qiaozhp    时间: 2003-7-23 10:35
please help!!!!!!
作者: zzz    时间: 2003-7-23 14:47
不知道,不好意思。
不过我有个建议。
用UG做一个law extension特征,
然后用UF_MODL_ask_law_extension()去读一下它的参数,看看UG是怎么设的。
作者: qiaozhp    时间: 2003-7-23 22:02
郁闷阿,还是读不出来,我用ug生成了一个law extension曲面,然后用UF_MODL_ask_law_extension(object_tag,&law_ext_data)来读取它的参数,可是程序运行到函数UF_MODL_ask_law_extension()这里就死掉了!!查log_file,原因是
*** NOTE:: in line 488 of f:\ips\ugv190\ip21\src\syss\mddi\ind\fpinit.c
+++ Floating Point Invalid Operation
>>> FPE error: Floating Point Invalid Operation,浮点操作错误,也不知道哪里出了问题!!
是不是结构体struct UF_MODL_lawext_data_s  
{  
   UF_MODL_lawext_dirref_t ref_type; /* Direction reference type  
                                     */  
   void *length_law_parms; /* For the specification of  
                                        length law parameters */  
   void *angle_law_parms; /* For the specification of  
                                        angle law parameters */  
   UF_STRING_p_t curve;  
的length_law_parms和angle_law_parms两个指针变量也要给它强制分配地址空间才能读出它的参数,我用law_ext_data.angle_law_parms=(double *)UF_allocate_memory(sizeof(double)*count,&err)给它分配了double型、UF_MODL_law_constant_t、UF_MODL_law_linear_cubic_t、UF_MODL_law_curve_t等等关于law的结构体地址,都还不行阿!!
还希望zzz等高人们继续指点一下!!!please!!!!
作者: zzz    时间: 2003-7-25 10:38
object_tag是怎么得到的?
作者: qiaozhp    时间: 2003-7-25 11:19
我是用交互的方法选择创建的law extension曲面,然后用函数UF_UI_ask_sel_object_list ( select, &count, &objects )来得到它的object_tag的,
这里count=1,所以object_tag=objects[0];我用函数UF_OBJ_ask_type_and_subtype(object_tag,&type,&subtype)来问了它的type和subtype,这里type=70,subtype=2,是面的tag!!
  
我现在黔驴技穷了,还望zzz继续指点!!!
作者: zzz    时间: 2003-7-25 11:54
这样不对吧,你得到这是face的tag,不是law extension这个特征的tag。
要去cycle特征才行。
作者: qiaozhp    时间: 2003-7-28 11:30
ft,这个都错了,zzz指点得极是!!
现在得到它的feature_tag就可以调试通过了。
  
不过得到的length_law_parms和angle_law_parms两个参数仍然是两个空指针的地址值,我还是没有办法把地址里面的数值给读出来!!用取值的方式*(law_ext.length_law_parms)不行,law_ext.length_law_parms[0]也不行,用UF_MODL_law_constant_t angle_law;
   law_ext.angle_law_parms=&angle_law给它强制转换类型,然后用angle_law.value[0]也不行。
  
我实在不知道改如何读出这种空指针的值,还望zzz指点一下正确的读值方法!!!ths
作者: qiaozhp    时间: 2003-7-29 16:29
好热阿!!难道大家都休息去了吗?
作者: zzz    时间: 2003-7-29 16:42
我也不知道了,让我到UG帮你问一下吧,可能要等几天才能有结果。
作者: qiaozhp    时间: 2003-7-30 09:07
感谢zzz雪中送炭式的帮助,顺便问一下,如果有技术问题需要他们解决l,怎么联系他们?email地址是什么?




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