找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 24185|回复: 16
打印 上一主题 下一主题

【求助】UG二次开发的问题

[复制链接]
跳转到指定楼层
1
发表于 2003-5-7 20:06:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
在这里先谢过版主了,呵呵,终于有个地方可以向大家请教了,希望各位大虾们不吝赐教。
我做的是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,但是我在帮助文件中没有看到相应的函数,请问应该如何设置?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2003-5-7 20:22:06 | 只看该作者
遍历到17个tag,肯定是你的代码有问题。
如果你不介意的话,可以把这段代码帖上来看一下。
  
第一个参数和第二个参数是联合使用的,第二个参数是要划分网格的实体组成的数组,第一个参数就是指定这些实体的个数,要不然你怎么知道数组中有多少个元素。
  
ug的uf_sf帮助文档中,概述一部分讲了一下开发的注意事项,你可以看一看。
3
发表于 2003-5-8 14:59:29 | 只看该作者
我的程序在附件里,执行的前提是打开一个part文件,用来实验的就是一个block。copy在这里太乱了,所以放在附件里,希望版主不介意,呵呵,感谢中。。。^_^*

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
4
发表于 2003-5-8 18:16:28 | 只看该作者
我看了一下你的代码,发现我以前的说法有点疏漏,实在对不起。
现在我把过程重新讲一下。
  
要在一个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(), 和你的不一样,我没有进一步的探讨。  
5
发表于 2003-5-9 20:33:01 | 只看该作者
还是没有分出网格来,:(
  
能告诉我关于分网格函数UF_SF_create_ugs_tet_mesh中的参数设置需要注意那些地方么?
6
发表于 2003-5-10 10:34:31 | 只看该作者
最后得到的body的tag只有一个(打开文件是一个block的part),这个结果应该是正确的吧?
7
发表于 2003-5-11 11:54:53 | 只看该作者
我调UF_SF_create_ugs_tet_mesh的时候也出错了,网格也没有生成。
8
发表于 2003-5-11 20:38:19 | 只看该作者
呵呵,那大家一起试试,看能不能把这个问题解决,呵呵
  
在这里还是要谢谢你啊,多谢了哦,^_^*
9
发表于 2003-5-13 16:02:49 | 只看该作者
很高兴在这里碰见一个搞CAE二次开发的朋友.我采用的是UF_SF_create_ugs_tet_mesh()函数,我现在也在实验一个block的tet10的划分方法,很遗憾,错误代码告诉我说在UG里面没有对这个错误代码的解释.
我也以为跟APPLICATION里面要切换模块有关系,可实际上没有.
细读上面这个函数的参数,就没发现错在什么地方?
不知到楼上的斑竹有进展没?
期待共勉!
10
发表于 2003-5-13 16:57:40 | 只看该作者
没有,估计是这个函数刚推出,很不稳定。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-1-1 07:52 , Processed in 0.028439 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表