首页/文章/ 详情

HyperMesh二次开发-对白车身进行多进程网格划分与进程监控

27天前浏览2053

HyperMesh二次开发-一键完成模型前处理

这是基于HyperMesh的一键完成程序,程序是放在实际场景中是不具有可行性的,但凡模型中存在挤压类零件,或者实体零件,在网格划分这一步就错误了。后续的工作做得再多也是无效的。所以基于这个程序还得进行优化,即对于网格划分部分的逻辑进行修复,用于识别不同零件采用不同算法。

当然也不是毫无应用场景,例如处理像钣金CCB这类的冲压零件组成的产品或者完全由管梁组成的框架类产品,并且零件数量不能太多,不然BatchMesh的时候容易卡死。

那么在实际仿真中,以白车身为例,如何快速得到整车的网格。我们通常会采用交互的方式实现,虽然会损失掉部分效率,但是这样会让工作更连贯,不会倒回去重新做。

在batchMesh的时候,我们看电脑的运行内存基本上都还有很多空余,并没有完全调用起,那么突破点就是在剩下的那部分内存,如何将其利用起来。

我们可以通过调用batchMesher来划分网格,程序支持多核的调用;亦或者通过多开HyperMesh进程实现。

我们选择的技术路线是通过多开进程实现需求,因为这可以让程序在划分网格的基础上做更多的定制化操作,比如调整网格流向,细化网格,处理不合格单元等可以在模型上单独处理的操作。

程序还演示了进程监控的功能,HyperMesh本身是不支持多线程的,这里通过解析进程列表,并与主进程的GUI程序通信,实现划分进程状态的实时获取。

局部视角-中央通道

局部视角-减震塔

局部视角-机舱纵梁

局部视角-前轮毂包

局部视角-前地板

局部视角-前壁板

三角形占比统计

测试电脑参数性能如图所示,测试过程中还有很多性能没有调用,可以继续提高进程数量,从而节约时间。

通过识别不同的零件,采用不同的网格划分算法,在搭配上之前所演示的二次开发功能,例如

1、挤压成型零件划分

HyperMesh二次开发-老表,挤压成型零件也能一键完成哦

2、钣金六面体划分

HyperMesh二次开发-亲,铰链的六面体网格也能一键划分哦

3、回转零件六面体划分

HyperMesh二次开发-亲,回转体零件的六面体网格也能一键划分哦

4、钢丝划分

HyperMesh二次开发-兄弟伙,钢丝的1D-2D-3D建模都支持哦

5、常规四面体划分

HyperMesh二次开发-靓仔你画的四面体零件和打的螺栓都能一键完成的

模型装配,工况自动创建

HyperMesh二次开发-一键完成模型前处理

我们可以将前处理工作做到半自动化完成,当基础模型规范后再进行工况部分的开发,那一切就变得清晰明了,工况的创建可以理解为模型的截取,工装的添加,创建Rigid,创建加载,约束,卡片等,这部分可以不会由于模型的变化而存在较大出入的操作。

摸鱼热线,请后台留言:

专业解决

HyperWork、ANSA、META、ADAMS、STAR-CCM+软件的结构、多体、流体前后处理二次开发需求;

ADAMS的路面加密;

OPTIMUS优化模板开发;

SDM(仿真数据管理)系统搭建;

TDM(试验数据管理)系统搭建。

就像前面说的,与人沟通的问题、优化的问题无法解决外,其他都能解决,就算做不到完美解决,至少能让老表少点几下鼠标。

来源:TodayCAEer
HyperMeshAdamsStar-CCM+疲劳二次开发ANSA通信GID试验钣金螺栓装配
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-08-14
最近编辑:27天前
TodayCAEer
本科 签名征集中
获赞 16粉丝 8文章 163课程 0
点赞
收藏
作者推荐

基于Python语言的二次开发-Tcl语言基础回顾- Variables(1/12)

Tclvariablesarealwaysstringsevenwhentheycontainnumericvalues.Formostapplications,usingstringshasnoeffect,butoccasionallyaHyperWorksapplicationwillexpectarealnumberandpassingastringwillcauseanerror.Tclvariablesmaynotcontaintabs,spaces,carriagereturns,northefollowingcharacters:$[]{}.#Thesetcommandisusedtoassociatevariableswithdata.setvar1"oneplusoneequals";setvar2"2";setcanalsoreturnthevalueofavariable.Thiscanbeusefulwhenusingonevariabletoreferencethenameofanothervariable.setvar1"oneplusoneequals2";setvar1;oneplusoneequals2setvar2"var1";setvar2;var1set[setvar2];oneplusoneequals2Placinga$beforeavariablenamewillreplace(substitute)thevariablewithitsassociatedvalue.puts"Theexpression:$var1$var2";Theexpression:oneplusoneequals2Tosetavariabletonothing:setvar2"2";setvar2{};puts$var2;Tclreturnsacarriagereturn.Toremoveavariablefromthecurrentscriptusetheunsetcommand.Thisishandybecausetherearecommandstocheckavariablesexistence.setvar2"2";unsetvar2;puts$var2;can'tread"var2":nosuchvariable来源:TodayCAEer

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈