预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第页共NUMPAGES11页 基于Python的Abaqus二次开发实例讲解 (asian582013.6.26) 基于Python的Abaqus的二次开发便捷之处在于: 1、所有的代码均可以先在Abaqus\CAE中操作一遍后再通过rp文件读取,然后再在此基础上进行相应的修改; 2、Python是一种解释性语言,读起来非常清晰,因此在修改程序的过程中,不存在程序难以理解的问题; 3、Python是一种通用性的、功能非常强大的面向对象编程语言,有许多成熟的类似于Matlab函数的程序在网络上流传,为后期进一步的数据处理提供了方便。 为了更加方便地完成Abaqus的二次开发,需进行一些相关约定: 1、所有参数化直接通过点的坐标值进行,直接对几何尺寸的参数化反而更加繁琐; 2、程序参数化已不允许在模型中添加太多的Tie,因此不同零部件的绑定直接通过共节点来进行,这就要求建模方法与常规的建模方法有所区别。思路如下: 将一个整机拆成几个大的Part来建立,一个Part中包含许多零件,这样在划分网格式时就可以自动实现共节点的绑定。不同的零件可通过建立不同的Set来进行区分,不同Part的绑定可以通过Tie来实现。将一个复杂的结构拆成几个恰当的Part来建立,一方面可以将复杂的模型简单化,使建立复杂模型成为可能;另一方面,不同的Part可单独调用,从而又可实现程序的模块化,增加程序的适应范围,延长程序的使用寿命,也方便后期程序的维护和修改。 3、通过py文件建立起的模型要进行参数优化,已不适合采用Isight中Abaqus模块,需要用到Isight的Simcode模块。 下面详细解释一个臂架的py文件。 #此程序用来绘制臂架前段 #导入相关模块 #-*-coding:mbcs-*- fromabaqusimport* fromabaqusConstantsimport* #定义整个臂架的长、宽、高 L0=14300 W0=1650 H0=800 #创建零件P01_12 L1=H0+200 W1=200 T1=12 s=mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=2000.0) g,v,d,c=s.geometry,s.vertices,s.dimensions,s.constraints 注:通过点的坐标进行参数化是模型参数化的最好选择。 s.setPrimaryObject(option=STANDALONE) s.rectangle(point1=(W0/2,L1/2),point2=(W0/2+W1,-L1/2)) s.rectangle(point1=(-W0/2,L1/2),point2=(-W0/2-W1,-L1/2)) p=mdb.models['Model-1'].Part(name='Part-1',dimensionality=THREE_D, type=DEFORMABLE_BODY) p=mdb.models['Model-1'].parts['Part-1'] p.BaseShell(sketch=s) session.viewports['Viewport:1'].setValues(displayedObject=p) delmdb.models['Model-1'].sketches['__profile__'] 注:建立一个零件后就立即对该零件建立一个Set,Set的建立可以方便后期的相关处理。 需要通过findAt()命令来选取相应的体、面、线或点。 #定义零件的厚度 p=mdb.models['Model-1'].parts['Part-1'] f=p.faces pickedFaces01=f.findAt(((W0/2,L1/2,0),),((-W0/2,L1/2,0),),) p.assignThickness(faces=pickedFaces01,thickness=T1) p.Set(faces=pickedFaces01,name='P01_12') #创建辅助平面和辅助坐标系 p=mdb.models['Model-1'].parts['Part-1'] p.DatumCsysByThreePoints(name='Datumcsys-1',coordSysType=CARTESIAN,origin=( 注:所建立的第一个参考可以不编号。 0.0,0.0,0.0),line1=(1.0,0.0,0.0),line2=(0.0,1.0,0.0)) p=mdb.models['Model-1'].parts['Part-1'] p.DatumPlaneByPrincipalPlan