iCAx开思网

标题: 【求助】UG二次开发的问题 [打印本页]

作者: lindan    时间: 2003-5-7 20:06
标题: 【求助】UG二次开发的问题
在这里先谢过版主了,呵呵,终于有个地方可以向大家请教了,希望各位大虾们不吝赐教。
我做的是UG二次开发中的CAE部分,主要是根UG中的有限元分析部分有关,据我所知,在UG中进行有限元分析主要有这几个步骤:
1。建立Scenario模型
2。设置分析环境
3。添加载荷
4。添加边界条件
5。指定材料特性
6。划分网格
7。求解
8。查看分析结果
而用函数来实现的话,我在创建Scenario模型后,想对Scenario模型进行网格的划分,但是一直没有成功,我用的是函数
extern int UF_SF_create_tet_mesh (  
                                    int num_objects,  
                                    tag_t * objects_to_mesh,  
                                    UF_SF_atm_mesh_parameters_data_t * params,  
                                    tag_t * mesh_recipe );  
对一个block进行网格划分,现在有以下几个问题向大家请教:
1、如何获得第二个参数objects_to_mesh,
2、第一个参数代表的是什么意思,我通过函数UF_OBJ_cycle_objs_in_part()+ UF_solid_type对这个Scenario模型进行遍历得到了19个tag,用UF_MODL_ask_body_type判断后,得到一个有17个tag的数组,那第一个参数int num_objects是应该设置为1还是17?
3、对第三个参数 params,在这个结构体中,最后一个成员elem_desc_tag代表的是什么意思,该怎样设置?
4、在UG的有限元分析中有一步是设置分析的类型,也就是环境设置,是其中规定了解算器Slover和分析类型:Structural、Modal、Themal,但是我在帮助文件中没有看到相应的函数,请问应该如何设置?
作者: zzz    时间: 2003-5-7 20:22
遍历到17个tag,肯定是你的代码有问题。
如果你不介意的话,可以把这段代码帖上来看一下。
  
第一个参数和第二个参数是联合使用的,第二个参数是要划分网格的实体组成的数组,第一个参数就是指定这些实体的个数,要不然你怎么知道数组中有多少个元素。
  
ug的uf_sf帮助文档中,概述一部分讲了一下开发的注意事项,你可以看一看。
作者: lindan    时间: 2003-5-8 14:59
我的程序在附件里,执行的前提是打开一个part文件,用来实验的就是一个block。copy在这里太乱了,所以放在附件里,希望版主不介意,呵呵,感谢中。。。^_^*
作者: zzz    时间: 2003-5-8 18:16
我看了一下你的代码,发现我以前的说法有点疏漏,实在对不起。
现在我把过程重新讲一下。
  
要在一个part中正确地遍历出所有的solid body, 需要经过两步判断,而不是以前的一步。
  
1. 用UF_OBJ_cycle_objs_in_part()+UF_solid_type得到一个tag后,首先用
UF_OBJ_ask_type_and_subtype()莱得到这个tag德subtype,如果它的subtype == UF_solid_body_sub_type, 才会继续进行下一步。
2。用UF_MODL_ask_body_type()得到body type,如果body type == UF_MODL_BODY_TYPE,才是真正的solid body。
  
具体代码如下(变量的定义省略了):
  
   part_tag = UF_PART_ask_display_part();    
   irc = UF_OBJ_cycle_objs_in_part(part_tag, UF_solid_type, [$solid)]    
  do
   {
     UF_OBJ_ask_type_and_subtype(solid, [$type, &sub_type)]
  
     if(sub_type == UF_solid_body_subtype)
     {
       UF_MODL_ask_body_type (solid, [$body_type )]
       if(body_type==UF_MODL_SOLID_BODY)
       {
         tag_solid[body_count]=solid;
         body_count++;
       }
     }
     UF_OBJ_cycle_objs_in_part(part_tag, UF_solid_type, [$solid)]
  
   }while(solid != NULL_TAG);
  
至于,网格生成,我没法检验。我的UGNX2.0 分网的函数已经改成
  
UF_SF_create_ugs_tet_mesh(), 和你的不一样,我没有进一步的探讨。  
作者: lindan    时间: 2003-5-9 20:33
还是没有分出网格来,:(
  
能告诉我关于分网格函数UF_SF_create_ugs_tet_mesh中的参数设置需要注意那些地方么?
作者: lindan    时间: 2003-5-10 10:34
最后得到的body的tag只有一个(打开文件是一个block的part),这个结果应该是正确的吧?
作者: zzz    时间: 2003-5-11 11:54
我调UF_SF_create_ugs_tet_mesh的时候也出错了,网格也没有生成。
作者: lindan    时间: 2003-5-11 20:38
呵呵,那大家一起试试,看能不能把这个问题解决,呵呵
  
在这里还是要谢谢你啊,多谢了哦,^_^*
作者: Knight74    时间: 2003-5-13 16:02
很高兴在这里碰见一个搞CAE二次开发的朋友.我采用的是UF_SF_create_ugs_tet_mesh()函数,我现在也在实验一个block的tet10的划分方法,很遗憾,错误代码告诉我说在UG里面没有对这个错误代码的解释.
我也以为跟APPLICATION里面要切换模块有关系,可实际上没有.
细读上面这个函数的参数,就没发现错在什么地方?
不知到楼上的斑竹有进展没?
期待共勉!
作者: zzz    时间: 2003-5-13 16:57
没有,估计是这个函数刚推出,很不稳定。
作者: spline    时间: 2003-5-15 08:39
不排除这种可能。
我也用过这几个函数,结果是很奇怪的。
还有一种可能就是我们的是用函数的顺序和步骤有问题。肯定有些函数没有用到。
作者: xbzlyt    时间: 2007-4-12 16:10
向各位学习
作者: UGstady    时间: 2007-6-9 20:34
顶一贴,支持
作者: sincosxu    时间: 2007-10-23 09:12
好贴,顶出来。..
作者: aa118194208    时间: 2007-10-25 09:51
我是个UG的初学者,以后还请高手们多多指教啊
作者: gaokun0903    时间: 2007-11-9 15:55
标题: 求助:UG二次开发问题
大家好,初学UG/API二次开发,望大家指点

我想调用UG中的点构造器函数,用的是
                                         char cue[]="请选择第一点";
                UF_UI_POINT_base_method_t base_method;
                tag_t point_tag;
                double base_pt[3];
                                          int response;
                      UF_UI_point_construct(cue,&base_method,&point_tag,base_pt,&response);
                        为什么在UG中调用不出来呢?
作者: 198513    时间: 2008-11-13 07:38
我再试一下




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3