基于Python的Abaqus二次开发实例讲解
(asian58 2013.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 -*-
手足的意思
from abaqus import *
from abaqusConstants import *
#定义整个臂架的长、宽、高
L0=14300
W0=1650
H0=800
#创建零件P01_12
青年一代有L1=H0+200
W1=200
T1=12
s = dels['Model-1'].ConstrainedSketch(name='__profile__',
sheetSize=2000.0)
g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.tPrimaryObject(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 = dels['Model-1'].Part(name='Part-1', dimensionality=THREE_D,
type=DEFORMABLE_BODY)
p = dels['Model-1'].parts['Part-1']
p.BaShell(sketch=s)
ssion.viewports['Viewport: 1'].tValues(displayedObject=p)
dels['Model-1'].sketches['__profile__']
#定义零件的厚度
p = dels['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 = dels['Model-1'].parts['Part-1']
p.DatumCsysByThreePoints(name='Datum csys-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 = dels['Model-1'].parts['Part-1']
p.DatumPlaneByPrincipalPlane(principalPlane=XYPLANE, offt=L0)
#创建零件P02_12
L2=L1
W2=W1
T2=12
p = dels['Model-1'].parts['Part-1']
d = p.datums
#将草图原点参数化
t = p.MakeSketchTransform(sketchPlane=d[5], sketchUpEdge=d[4].axis2,
sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(0.0, 0.0, L0))
s = dels['Model-1'].ConstrainedSketch(name='__profile__',
sheetSize=29006.85, gridSpacing=725.17, transform=t)
g, v, d1, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.tPrimaryObject(option=SUPERIMPOSE)
p = dels['Model-1'].parts['Part-1']
s.rectangle(point1=(W0/2, L2/2), point2=(W0/2+W2, -L2/2))
s.rectangle(point1=(-W0/2, L2/2), point2=(-W0/2-W2, -L2/2))
p = dels['Model-1'].parts['Part-1']
d2 = p.datums
p.Shell(sketchPlane=d2[5], sketchUpEdge=d2[4].axis2, sketchPlaneSide=SIDE1,
他拼音 sketchOrientation=RIGHT, sketch=s)
s.untPrimaryObject()
dels['Model-1'].sketches['__profile__']
#定义零件的厚度
p = dels['Model-1'].parts['Part-1']
f = p.faces
pickedFaces02 = f.findAt(((W0/2, L1/2, L0),),((-W0/2, L1/2, L0),), )
p.assignThickness(faces=pickedFaces02, thickness=T2)
p.Set(faces=pickedFaces02, name='P02_12')
#创建零件P03_12和零件P04_08
T3=12
T4=8
手机卡怎么补办
p = dels['Model-1'].parts['Part-1']
d = p.datums
t = p.MakeSketchTransform(sketchPlane=d[5], sketchUpEdge=d[4].axis2,
sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(0.0, 0.0, L0))
s = dels['Model-1'].ConstrainedSketch(name='__profile__',
sheetSize=29006.85, gridSpacing=725.17, transform=t)
disclo
g, v, d1, c = s.geometry, s.vertices, s.dimensions, s.constraints
s.tPrimaryObject(option=SUPERIMPOSE)
#创建草图
学习方法报
p = dels['Model-1'].parts['Part-1']
s.Line(point1=(-W0/2-W1, H0/2), point2=(-W0/2, H0/2))
s.Line(point1=(W0/2, H0/2), point2=(W0/2+W1, H0/2))
s.Line(point1=(-W0/2-W1, -H0/2), point2=(-W0/2, -H0/2))
s.Line(point1=(W0/2, -H0/2), point2=(W0/2+W1, -H0/2))
p = dels['Model-1'].parts['Part-1']
d2 = p.datums
p.ShellExtrude(sketchPlane=d2[5], sketchUpEdge=d2[4].axis2,
sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, sketch=s, depth=L0,
flipExtrudeDirection=ON)
s.untPrimaryObject()
dels['Model-1'].sketches['__profile__']
#定义零件P03_12的厚度
p = dels['Model-1'].parts['Part-1']