Abaqus Python脚本生成3D随机球形骨料的实践


1 模型

一个100*100*100mm的方块基体内,存在着3种直径的骨料,分别为10mm,4mm,1mm。跟2D的一样,只是维度变了。

2 cae建模

2.1 打开cae,运行pythonReader

   还是先在cae里建模,大家应该看得出,写脚本的套路都是一样的,现在cae里操作找函数然后改写。今天就不在rpy里写了,我们打开cae之后,直接打开pythonReader,没有这个工具的,看我之前一篇专栏,评论区置顶有这个阅读器的下载链接。非常好用。打开之后,就是这个样子的。有个一直置顶的,时刻展示rpy文件的内容。


2.2 画基体

   首先建模,肯定是要画基体对不对,先把基体的函数弄出来。


   然后不用我多说了吧,拷贝到开发环境下,改写一下,把重复的命令去掉,没用的命令去掉,变量赋值等等。

   写完之后,如下,这个相必大家应该都没什么疑问了,改写的方法有很多种。尽量简单易读一点:


2.2 画骨料

   大家可能遇到的困难就在于此,骨料的Part怎么画,先放个图。看一下成品。


   说实话,如果有人能直接在Part里画出这样的,一定要教教我,我交学费。正常人在Part里都无从下手,所以当你在这里碰壁的时候,无法下手的时候,不如换个角度想。我们part里难做,但是assembly里是很容易实现的呀,是不是这个道理。只需要在assembly里装配成这个样子不就行了???你管他是几个,几十几百个Part,全导入assembly,有多少装多少。如果你这么一想的画,事情突然就变得简单起来。只需要画3个不同直径的球形骨料就行了。

   我们在cae里先画个骨料。然后找函数:


   把这些乱起八糟的东西都复制到开发环境下,改一改,加个循环,生成3不同直径的球。


   测试一下,程序没有问题。(大家先过一遍思路,然后自己尝试着做,如果有不明白的地方,再看我的程序)


2.3 导入Assembly

   把基体和测试的球都导入到Assembly里。观察函数是什么。


   同样的办法,改写一下,这两句比较简单。


2.4 移动

   这是cae操作的最后一步,也是最最最重要的一步,因为我们到现在还没说到是如何实现随机的。没错,就是通过assembly的移动命令。如果对每个骨料都进行移动,且移动命令的x、y、z坐标是随机的,那么不就是相当于生成随机的骨料了嘛。

   如果大家有还没明白的地方,继续往下看,到后面你就明白了。

   还是同样的办法,在cae里移动,记录函数。


   然后改写,其实就是一行命令:


   到此为止,我在cae的操作已经全部完成了。剩下的内容,就是算法实现了,我们需要置顶的函数都已经完全记录下来了。大家如果看到这里,已经明白怎么写了,请停一停,自己尝试一下。如果还有点懵的,继续往下看。

3 算法实现

   其实到这里,我个人感觉跟2D的已经没什么区别了,唯一的不同就是2D可以直接建模,而3D需要借助于assembly。其他的接触判断,其实就是比2D多了一个维度而已。好,我们继续往下写:

   这里的交叉判断函数我是把之前的2D函数直接拿来用的,就是稍作修改,因为距离的计算多了个维度。先生成一下直径为10的球,测试一下程序。


   测试结果如下,球体之间并无接触,所以程序是没问题的


   完全同样的办法,把生成直径4和1mm的程序写出来。细心的小伙伴应该发现了,这几个写法上是神似的,这种完全可以封装成函数,让你的代码看起来更加的精炼。我这里没有做了,大家可以自己想想,怎么写的又简单而又好看。


   到此为止 ,我们的整个脚本就写完了,测试一下:


   


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空