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://t.icax.org/)
Powered by Discuz! X3.3