abaqus RSG插件二次开发(二)

编程入门 行业动态 更新时间:2024-10-03 12:25:08

abaqus RSG<a href=https://www.elefans.com/category/jswz/34/1771202.html style=插件二次开发(二)"/>

abaqus RSG插件二次开发(二)

本次我们相比上次做的稍微复杂一点,这次的案列是一个钢箱板梁桥的一部分

即左跨包括挑梁这一段,各种情况都包括了,好了我们来看图吧

右侧是可以自动修改的U肋  左侧是球形肋,球形肋分成两种180mm和200mm

由于用壳单元建模时,无法建出球肋的厚度,所以就近似代替。

这是一段已经在CATIA里建完的模型,catia有自带的参数化设计,

现在我们希望将这个功能用到abaqus上,通过设置参数大小自动建立模型

先打开RSG设置好需要选择的参数,进行界面布置,注意所以类型要选择float浮点型

界面布置如下:

要注意其中的球肋和U肋都是使用阵列的形式生成的

这时候就有一个问题,

s.Line(point1=(0.0, 0.0), point2=(-1100 - (n - 1) * 200, 0.0))
s.HorizontalConstraint(entity=g[18], addUndoState=False)

不同的情况下连线所需要的个数是不一样的,所以需要 if 判别一下,

同时,根据不同的挑梁长度,球肋的个数以及球肋的间距也是有区别的

这方面我是之前写了一段matlab的代码区别了一下

这一段大家可以不用关系,简单的穷举判断。

但是同理在python函数中,也有判断各种情况又是几个循环

接下来插入内核代码

from abaqus import *
from abaqusConstants import *
import mathdef createPlateFunction(H,A,N,n,h,Q):list1=[1100,1300,1500,1700,1900,2100]list2=[325,325,350,350,375,375]list3=[3,4,4,5,5,6]R=1100+(n-1)*200for i in range(6):if R==float(list1[i]):a=float(list2[i])b=list3[i]Q=float(Q)s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__',sheetSize=3000.0)g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraintss.setPrimaryObject(option=STANDALONE)s.Line(point1=(0.0, 0.0), point2=(100+600*N, 0.0))s.HorizontalConstraint(entity=g[2], addUndoState=False)s.ConstructionLine(point1=(400.0, 0.0), point2=(400.0, 450.0))s.VerticalConstraint(entity=g[3], addUndoState=False)s.Line(point1=(250.0, 0.0), point2=(300.0, -H))s.copyMirror(mirrorLine=g[3], objectList=(g[4],))s.HorizontalDimension(vertex1=v[3], vertex2=v[5], textPoint=(367.0419921875,-360.14013671875), value=A-H*2/4.5)s.Line(point1=(400-(A-H*2/4.5)/2, -H), point2=(400+(A-H*2/4.5)/2, -H))s.HorizontalConstraint(entity=g[6], addUndoState=False)s.FilletByRadius(radius=40.0, curve1=g[4], nearPoint1=(291.798278808594,-200.214797973633), curve2=g[6],nearPoint2=(371.829162597656,-253.40608215332))s.FilletByRadius(radius=40.0, curve1=g[5], nearPoint1=(521.689086914063,-134.439208984375), curve2=g[6],nearPoint2=(449.259521484375,-248.27099609375))if N > 1:s.linearPattern(geomList=(g[3], g[4], g[5], g[6], g[7], g[8]), vertexList=(),number1=N, spacing1=600.0, angle1=0.0, number2=1, spacing2=300.0,angle2=90.0)s.Line(point1=(0.0, 0.0), point2=(0.0, -h))s.VerticalConstraint(entity=g[15], addUndoState=False)s.Line(point1=(200.0, -370.0), point2=(-200.0, -370.0))s.HorizontalConstraint(entity=g[16], addUndoState=False)s.Line(point1=(250.0, -h), point2=(-250.0, -h))s.HorizontalConstraint(entity=g[17], addUndoState=False)s.Line(point1=(0.0, 0.0), point2=(-1100 - (n - 1) * 200, 0.0))s.HorizontalConstraint(entity=g[18], addUndoState=False)if a == 325:s.Line(point1=(-a, 0.0), point2=(-a, -Q))s.VerticalConstraint(entity=g[19], addUndoState=False)s.Line(point1=(-a, -Q), point2=(-a - 40, -Q))s.HorizontalConstraint(entity=g[20], addUndoState=False)s.PerpendicularConstraint(entity1=g[19], entity2=g[20], addUndoState=False)s.FilletByRadius(radius=10.0, curve1=g[19], nearPoint1=(-322.638732910156,-139.701538085938), curve2=g[20],nearPoint2=(-345.492401123047,-199.322738647461))if a == 350:s.Line(point1=(-a, 0.0), point2=(-a, -Q))s.VerticalConstraint(entity=g[19], addUndoState=False)s.Line(point1=(-a, -Q), point2=(-a - 40, -Q))s.HorizontalConstraint(entity=g[20], addUndoState=False)s.PerpendicularConstraint(entity1=g[19], entity2=g[20], addUndoState=False)s.FilletByRadius(radius=10.0, curve1=g[19], nearPoint1=(-346.004302978516,-124.948425292969), curve2=g[20],nearPoint2=(-366.399017333984,-200.446655273438))if a == 375:s.Line(point1=(-a, 0.0), point2=(-a, -Q))s.VerticalConstraint(entity=g[19], addUndoState=False)s.Line(point1=(-a, -Q), point2=(-a - 40, -Q))s.HorizontalConstraint(entity=g[20], addUndoState=False)s.PerpendicularConstraint(entity1=g[19], entity2=g[20], addUndoState=False)s.FilletByRadius(radius=10.0, curve1=g[19], nearPoint1=(-384.071136474609,-115.328598022461), curve2=g[20],nearPoint2=(-396.226287841797,-196.57243347168))s.linearPattern(geomList=(g[19], g[20], g[21]), vertexList=(), number1=b - 1,spacing1=a, angle1=180.0, number2=1, spacing2=300.0, angle2=90.0)s.Line(point1=(-R + 25, 0.0), point2=(-R + 25, -300.0))s.VerticalConstraint(entity=g[22], addUndoState=False)else:s.Line(point1=(0.0, 0.0), point2=(0.0, -h))s.VerticalConstraint(entity=g[9], addUndoState=False)s.Line(point1=(200.0, -370.0), point2=(-200.0, -370.0))s.HorizontalConstraint(entity=g[10], addUndoState=False)s.Line(point1=(250.0, -h), point2=(-250.0, -h))s.HorizontalConstraint(entity=g[11], addUndoState=False)s.Line(point1=(0.0, 0.0), point2=(-1100 - (n - 1) * 200, 0.0))s.HorizontalConstraint(entity=g[12], addUndoState=False)if a == 325:s.Line(point1=(-a, 0.0), point2=(-a, -Q))s.VerticalConstraint(entity=g[13], addUndoState=False)s.Line(point1=(-a, -Q), point2=(-a - 40, -Q))s.HorizontalConstraint(entity=g[14], addUndoState=False)s.PerpendicularConstraint(entity1=g[13], entity2=g[14], addUndoState=False)s.FilletByRadius(radius=10.0, curve1=g[13], nearPoint1=(-322.638732910156,-139.701538085938), curve2=g[14],nearPoint2=(-345.492401123047,-199.322738647461))if a == 350:s.Line(point1=(-a, 0.0), point2=(-a, -Q))s.VerticalConstraint(entity=g[13], addUndoState=False)s.Line(point1=(-a, -Q), point2=(-a - 40, -Q))s.HorizontalConstraint(entity=g[14], addUndoState=False)s.PerpendicularConstraint(entity1=g[13], entity2=g[14], addUndoState=False)s.FilletByRadius(radius=10.0, curve1=g[13], nearPoint1=(-346.004302978516,-124.948425292969), curve2=g[14],nearPoint2=(-366.399017333984,-200.446655273438))if a == 375:s.Line(point1=(-a, 0.0), point2=(-a, -Q))s.VerticalConstraint(entity=g[13], addUndoState=False)s.Line(point1=(-a, -Q), point2=(-a - 40, -Q))s.HorizontalConstraint(entity=g[14], addUndoState=False)s.PerpendicularConstraint(entity1=g[13], entity2=g[14], addUndoState=False)s.FilletByRadius(radius=10.0, curve1=g[13], nearPoint1=(-384.071136474609,-115.328598022461), curve2=g[14],nearPoint2=(-396.226287841797,-196.57243347168))s.linearPattern(geomList=(g[13], g[14], g[15]), vertexList=(), number1=b - 1,spacing1=a, angle1=180.0, number2=1, spacing2=300.0, angle2=90.0)s.Line(point1=(-R + 25, 0.0), point2=(-R + 25, -300.0))s.VerticalConstraint(entity=g[16], addUndoState=False)p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=THREE_D,type=DEFORMABLE_BODY)p = mdb.models['Model-1'].parts['Part-1']p.BaseShellExtrude(sketch=s, depth=5000.0)s.unsetPrimaryObject()p = mdb.models['Model-1'].parts['Part-1']session.viewports['Viewport: 1'].setValues(displayedObject=p)del mdb.models['Model-1'].sketches['__profile__']

如上,大部分代码由pythonreader录入,或者可以选择自己看rpy文件,

其余的界面代码可以自动生成就不多说了

上一下结果图:

希望对大家有帮助

更多推荐

abaqus RSG插件二次开发(二)

本文发布于:2024-02-28 05:42:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1768640.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:插件   abaqus   RSG

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!