Abaqus Python多边形骨料脚本:感受脚本的魅力

    hello,大家好。我是你们的小伙伴,咱们又见面了。今天是2021年的第一天。可能你们看到的时候已经是第二天了啊。但是我写的时候确实是第一天的。外面其实阳光不错,但是我宅了。宅在家里看电影是真的自在啊,巴适的很。等我赚够了2亿存款,我宅在家里天天看电影。

    自从上次跟大家说了问题之后,突然我收集的问题文档就多了好多。感谢各位看得起,但是有些问题我实在是不会。很惭愧。所以我只能挑我会的跟大家讲了,各位多担待。

    今天就讲一个脚本吧,以前说要做的,今天来做了,我真快成职业讲abaqus的了,难道各位对我的爬虫技能不感兴趣吗?我决定做点数据可视化的东西,然后做点视频发b站出,秀一秀操作。引起各位的兴趣。兄弟们别学了编程天天怼abaqus,多多感受一下他们别的功能,找点自己喜欢的,享受一下编程的快乐。(你们不会真的因为喜欢abaqus才学这个的吧)

1 今日任务

    今天讲一个脚本,多边形骨料的建模。其实跟我之前做的2D的圆、纤维等其实是一样的,区别就是画的图不一样嘛,然后生成的算法不一样。干涉判断的算法也有区别。这几个的脚本建模思路其实都是一样的。     写脚本的步骤和模式我就不讲了啊,打开pythonReader,边在cae里操作,边记录函数,然后改写,调试。老粉丝都懂。新粉丝们可以看我以前写的脚本文章,我讲的非常详细。

2 实现逻辑

    写脚本最重要的是,你要知道你在干什么。一步步写,然后理一下思路,今天的思路我带着大家理一遍,主要的难点其实就是随机的多边形骨料怎么画。这个是今天的难点内容也是重点内容。我目前的想法是,先生成一个随机半径的圆,然后随机在圆上取点画多边形。相当于随机的是圆的内接多边形。不知道这种合不合适。如果大家有更好的想法,欢迎留言告诉我。 有了思路,定了目标之后。写一下脚本的逻辑:

1 首先是需要生成一个基体,这里我们用的矩形

2 画骨料。画骨料是在画在草图上的。主要分几个步骤

    2.1 随机一个圆半径,以及圆心坐标;

    2.2 判断这个圆有没有跟其他圆干涉,若有干涉,重新取圆;

    2.3 随机生成几个角度值,代表在圆上取几个点;

    2.4 画多边形

    2.5 循环

3 切割基体。这里我们用Partition命令,把骨料的形状切出来。

4 完成脚本

3 脚本实现

    今天我给大家边写,边展示结果。一般写脚本的时候,是写一点,然后运行调试一点,确认没问题之后,才能继续往下写。这个调试程序的老套路了,大家记得。之前有粉丝把子程序写完了,写的挺多的,很不容易,然后再调试,然后报错了,心里的草泥马飞腾的场面兄弟们自己脑部一下。然后问我......,我心里的.......

1 生成基体

    这个我都不想说了,对于我的老粉丝来说。讲这个都有点对不起你们的档次。所以啊,我就不讲了,直接上代码。

    谁要是问我这个的,头都给你们。。。。打烂。我不解释,自己看。运行之后的效果如下,100*50的2D平面矩形。

2 画骨料

    开始我们的第二步,第二步是重点内容。也是写一点运行一点。然后调试找错。

2.1 随机一个圆半径,以及圆心坐标

    这个也简单,随机3个变量,圆心坐标(x,y),以及半径radius。这个也很简单,代码如下,这里有个函数ConstructionCircleByCenterPerimeter:其实是画构造线的圆。大家知道什么是构造线吧,我个人再cad绘图里是非常喜欢这个的,因为构造线就相当于辅助线,是不影响你的草图的,可以随便画。(用creo多,特别喜欢构造线)

    我再草图里化成构造线模式。随机生成100个,给大家看看效果。所以圆是可以生成的没问题的。那么接下来的问题的也很明显,这些圆干涉了,如果画多边形,肯定会干涉的。所以就是出现2.2的原因,要做干涉判断。不能让圆相交。

2.2 干涉判断

    整个干涉判断的函数就是,两个圆的圆心距离要大于他们的半径和。所以我些的干涉函数如下:

    是不是很简单明了。center是储存合格的圆的信息。round是随机生成的圆的信息。返回值是bool类型值。True or False。用于后续的判断,如果round符合条件,则加入center里,如果不符合,重新生成随机数。以此循环。整个前两部分的脚本整合如下:

    这一部分的运行效果如下:     大家可以看出,每个圆都非常神奇的分开了。继续写,你会感受到这个美妙的过程,享受着脚本给你带来的快乐和成就感。

    到此,我们的任务基本上已经完成了一半了。剩下的就是在每个圆上画多边形了。跟着我们之前的逻辑继续往下写。

2.3 随机生成几个角度值,代表在圆上取几个点

    这里其实是把顶点坐标计算出来,先随机取点,然后在计算坐标。

2.4 画多边形

    计算出多边形的顶点坐标后,利用line函数画一下就行了,注意要头尾相连。

2.5 循环

    这里的循环是加在。对每个圆都做重复的操作。这个也比较简单,遍历完成后的效果如下:大家可以看到,其实已经是符合我们的预期了。

3 切割基体。这里我们用Partition命令,把骨料的形状切出来。

    这个也很简单,一句话的命令

4 完成脚本,测试效果

    到此为止,我们的整个脚本其实就已经写完了。那么测试一下最终的效果吧。当然,这是在下写的,运行是肯定没问题的。效果如下:

    但是,问题来了。     我觉得它长的不好看,究其原因,是因为在圆上取随机点的时候,太随机了。就出现了这种细长细长的东西。应该还要加一点限制,把圆分为几个区域,然后每个点在各自的区域里随机,这样整个骨料看起来就非常的赏心悦目了。所以,还需要对脚本稍作修改。

5 修改脚本

    修改后的效果如后图。     大家可以看到,其实稍作修改,那么整个效果是截然不同的。这就是算法的魅力,各位体会一下。脚本的源码我放在github里。还是以前的仓库里。

https://github.com/wuhuiguo/Abaqus

4 脚本测试

测试一:

测试二:

    各位可以自己改骨料的大小,边数等等。可以给定值,也可以变量。大家自己下载玩一玩吧。     今天的内容呢,就到这里了。其实我自己写脚本是非常享受这个过程的,能看这这些东西随着我的想法而变是很快乐的。各位也是,享受这个过程。我们一起共勉。

    我们下期再见啦。88

cut-off

凡治众如治寡,分数是也。

斗众如斗寡,形名是也。

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

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

* 公司名称:

姓名不为空

手机不正确

公司不为空