首先,需要导入abaqus包,以及abaqus中的常数集包(abaqusConstants),还有生成随机数的random包,后面会用得到:
然后,利用函数mdb.Model生成一个model,名字为xianWei(名字可以随便取,但不能有中文),注意这里做一个判断,如果已经有xianwei的model,就取它,如果没有,就新建一个。abaqus的所有脚本函数都是既定的,我们只需要了解并且会用即可。
现在就可以在abaqus里愉快的运行了,当然,咱们的程序还没写完。写程序的是时候,更推荐各位边写边运行,千万不要写完了再调试。(对于编程老司机,有足够的把握除外,不在考虑范围之内),这样可以再开始阶段就排除大量错误,为后续调试程序节省大量时间。把上述代码再abaqus里运行,就可以看到生成了一个叫做xianWei的model了。可以思考一下,如果你想生成1000个model,是不是加个循环就能实现了,这比再cae界面中一个个点快多了,这就是编程的魅力,脚本语言存在的必然。它可以为我们省去大量重复性的工作,让我们有更多的时间思考算法,而不是用在重复性的体力工作上。
如果还有不知道怎么运行脚本的小伙伴,百度一下或者留言告诉我吧。生成model之后,还需要新建立一个part。用过abqus建模的小伙伴应该知道,在abaqus里建模,是需要先建草图的,所以脚本也一样,先绘制草图。这次的例子需要生成一个长×宽=30mm×10mm的矩形shell。代码如下,先建立一个sketch对象,名字为t1(名字可以随便定),利用sketch里的函数rectangle生成一个矩形草图。
生成草图之后,就可以生成shell零件了。这里我们用的是2D平面shell。首先实例化一个part对象,名字为P1,2D平面,可变形体。再利用part的函数BaseShell,参数选择为上一步生成的草图。
运行这两行,就生成了一个长30mm,宽10mm的矩形2Dshell。
生成基体之后,就要在基体内部生成2D的纤维了,具体思路是,首先定义好矩形纤维的长度和宽度,然后随机生成一个点以及纤维的转动角度,这样就能确定纤维的位置了,以草图的形式绘制出来,再利用草图切割,将纤维形状从基体中切割出来。重复以上的工作既可生成许许多多的纤维啦,当然,还有一步非常重要的步骤,干涉检查。因为如果每个纤维都是完全随机,不加检查,那么数量多的时候,一定会有重叠的纤维,这是我们不想遇到的。所以每新生成一个纤维,需要检查它与前面已生成的纤维是否产生干涉,如果有干涉则舍弃该纤维。重新生成。最终的效果如下图,你可以改变纤维或者基体的大小形状去做你想做的模型:
纤维长×宽:1*0.2
纤维长×宽:0.5*0.1
纤维长×宽:2*0.1
接下来介绍,关于纤维的生成,再此只介绍单个纤维的生成,多纤维生成比较复杂的点在于干涉检查,涉及到线段的相交判断。
首先单纤维是通过草图切割基体生成的,所以,需要生成纤维形状的草图。同上,实例化sketch对象,定义纤维的长与宽,计算纤维对角线长度ce,计算对角线长度,是为了限制随机生成点的坐标范围,实现纤维在基体内部。
随机生成的第一点以及转动角度,abaqus草图中的角度是从y轴正方向开始算的,并非熟知的x正方形。即图中的angle。剩余3点可以根据这两个定位参数确定出来,由此即可计算出草图的四个点。
纤维生成算法
生成第一个点的代码,生成随机数:
计算出其余点的坐标
根据这四点坐标值,在sketch对象中绘制四条直线:
绘制好纤维草图之后,再利用partionShell函数,切割shell基体:
这样我们的单纤维脚本就完整写好啦。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删