You are on page 1of 27

Abaqus

Dassault Systmes, 2008

L2.2

Abaqus
Abaqus
Abaqus
Abaqus
Abaqus


Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

Abaqus

Dassault Systmes, 2008

L2.4

Abaqus
Abaqus
Abaqus ASI Python
Abaqus
Abaqus abaqus_v6.env

ODB

Abaqus

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.5

Abaqus

GUI

Abaqus/CAE

1
GUI

command
line
interface
(CLI)

3
script

commands

Python
interpreter

replay
files

Abaqus/CAE
kernel

input file

Abaqus/Standard
Abaqus/Explicit

output database file

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.6

Abaqus


TAB

CLI

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.7

Abaqus
CLI
Python
Abaqus Abaqus/CAE
Abaqus/CAE Python

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.8

Abaqus
Abaqus/CAE

Abaqus/CAE
Abaqus/CAE

File
Python
execfile()

start-up

abaqus cae startup = myscript.py


abaqus cae script = myscript.py
abaqus viewer startup = myscript.py

Abaqus/CAE :
abaqus python myscript.py
abaqus script myscript.py
Introduction to Python and Scripting in Abaqus
Dassault Systmes, 2008

L2.9

Abaqus

Macro Abaqus

abaqusMacros.py

Abaqus .rpy
session abaqus.rpy
Abaqus/CAE session
abaqus.rpy.1

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.10

Abaqus
:
:
1) Abaqus/CAE View/Specify
.rpy

session.viewports['Viewport:1'].view.rotate(xAngle=10,
yAngle=0,zAngle=0,mode=MODEL)

2) Python :
for x in range(36):
session.viewports['Viewport:1'].view.rotate(xAngle=10,
yAngle=0,zAngle=0, mode=MODEL)

rotate.py.
Introduction to Python and Scripting in Abaqus
Dassault Systmes, 2008

L2.11

Abaqus
3) File FileRun
Script.

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.12

Abaqus
Abaqus

GUI
CLI
CLI
Python _main__
CLI !
.rpy
vp = session.viewports['Viewport: 1']

vp CLI

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

Abaqus

Dassault Systmes, 2008

L2.14

Abaqus

Abaqus Python
Abaqus
Abaqus
roots
SessionMdb Odb

Taken from the Abaqus Scripting User's Manual


(available online only)

Abaqus

container

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.15

Abaqus

ownership

Abaqus/CAE
Introduction to Python and Scripting in Abaqus
Dassault Systmes, 2008

L2.16

Abaqus

members
methods
constructor
ownershippath
SessionMdb Odb Python

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.17

Abaqus

:
vp = session.viewports['Viewport: 1']
vp.setValues(origin=(200,0))
cell4 = mdb.models['block'].parts['crankcase'].cells[4]

cell4

mdb

block

crankcase

mdbblock crankcase 4
cell 4

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.18

Abaqus


Abaqus Scripting User's Manual:
, ,
!
Abaqus Scripting Reference Manual:
Abaqus Python
Access
Path

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.19

Abaqus
Abaqus Access Path Abaqus

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.20

Abaqus

p = mdb.models['Model-1'].Part(name='Part-1',
dimensionality=THREE_D, type=DEFORMABLE_BODY)

mdb.models['Model-1'].Part

mdb.models['Model-1'].parts['Part-1']

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.21

Abaqus

Abaqus

member setValues

printOptions rendition
session.printOptions.setValues(rendition=GREYSCALE)
Introduction to Python and Scripting in Abaqus
Dassault Systmes, 2008

L2.22

Abaqus
Session

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.23

Abaqus
Session
Session ( Abaqus/CAE Abaqus/Viewer
)
Session
Session Abaqus/CAE Abaqus/Viewer
Session :

from abaqus import *


from abaqus import session

XYData Session
ODB

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.24

Abaqus
Mdb
Mdb .
Mdb
Abaqus/Viewer Abaqus/CAE
.

Mdb

from abaqus import *


from abaqus import mdb

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.25

Abaqus
ODB
Odb
Odb :
from odbAccess import *
from odbAccess import openOdb, Odb

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.26

Abaqus

Python
.cae .odb
type()
Abaqus
object.__members__
object.__methods__
:
>>> vp = session.viewports['Viewport: 1]
>>> type(vp)
<type 'Viewport'>
>>> vp.__members__
['activeColorModes', 'animationConnect', 'animationPlayer', ]
>>> vp.__methods__
['Layer', 'bringToFront', 'disableMultipleColors', ]

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.27

Abaqus

Abaqus __doc__

>>> from odbAccess import openOdb
>>> print openOdb.__doc__
sys.modules['odbAccess'].openOdb(path) -> This method opens an
existing output
database (.odb) file and creates a new Odb object. You typically
execute this
method outside of Abaqus/CAE when, in most cases, only one output
database is
open at any time. For example,
import odbAccess
shockLoadOdb = odbAccess.openOdb(path='myOdb.odb')

>>>
Abaqus Python Tab
Python
Introduction to Python and Scripting in Abaqus
Dassault Systmes, 2008

Abaqus Types

Dassault Systmes, 2008

L2.29

Abaqus
Python Abaqus Python

Repository (a keyed container)






mdb.models['engine'].Material('steel')
steel = mdb.models['engine'].materials['steel']

Abaqus ()

Abaqus MeshNodeArrays
MeshElementArrays

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.30

Abaqus

Abaqus Abaqus
ALL_CAPS
: QUAD, SAX2T, RB2D2, DEFORMABLE, D_2D,
DEFORMABLE_BODY
a.setMeshControls(elemShape=QUAD)



: Boolean titleBar

if vp.titleBar:
print "The title bar will be displayed"

Abaqus Python

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.31

Abaqus
Abaqus
280
:
type(mdb.models['Model-1'].materials['Steel'])
<type 'Material'>

Type
s = mdb.models['Model-1'].sections['sec-1']
...
...
if type(s) == HomogeneousSolidSection:
print 'This object is of type HomogeneousSolidSection'


from section import HomogeneousSolidSection

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.32

Abaqus

Abaqus

vp = session.viewports['Viewport: 1']
vp.odbDisplay.display.setValues(plotState=(CONTOURS_ON_UNDEF, ))



del
vp
del vp

Viewport: 1
del session.viewports['Viewport: 1']

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.33

Abaqus
: section
>>> s = mdb.models['Model-1'].sections['sec-1']
>>> type(s)
<type 'HomogeneousSolidSection'>
>>> s.__members__
['material', 'name', 'thickness']
>>> s.__methods__
['setValues']
>>> for member in s.__members__:
...
print 's.%s = %s' % (member, getattr(s, member))
s.material = mat-1
s.name = sec-1
s.thickness = 1.0
>>> del mdb.models['Model-1'].sections['sec-1']

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

Abaqus

Dassault Systmes, 2008

L2.35

Abaqus

part

material
section

assembly

step

interaction

load

mesh

job

visualization

odb
odbAccess

sketch

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.36

Abaqus

Python import Abaqus
caeModules Abaqus
from caeModules import *

Abaqus GUI

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

Abaqus

Dassault Systmes, 2008

L2.38

Abaqus
Abaqus
abaqus_v6.env
Abaqus Python/ASI

Abaqus Python
onCaeStartup()
onCaeGraphicsStartup()
onJobStartup()
onJobCompletion()

Abaqus site_dirhome_dir local.dir abaqus v6.env

Python

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.39

Abaqus
Abaqus : abaqus_v6.env
def onCaeStartup():
# Compatibility issues
backwardCompatibility.setValues(includeDeprecated=OFF)
# Graphics preferences
session.graphicsOptions.setValues(displayLists=ON,
dragMode=AS_IS)
# Print preferences
session.printOptions.setValues(vpDecorations=OFF,
vpBackground=OFF,
rendition=COLOR, printCommand='lpr')
# Visualization preferences
def setVisPreferences(module, userData):
from visualization import SHADED, EXTERIOR, CONTINUOUS
session.defaultOdbDisplay.commonOptions.setValues(
renderStyle=SHADED, visibleEdges=EXTERIOR)
session.defaultOdbDisplay.contourOptions.setValues(
contourStyle=CONTINUOUS)
addImportCallback('visualization', setVisPreferences)
# Material properties - read them from a file
execfile('my_material_library.py')

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.40

Abaqus
Abaqus abaqus_v6.env ()
onJobCompletion onJobStartup
savedir, id, scrdir, analysisType, applicationName,
abaqus_version
def onJobCompletion():
import os
extensions = ('res','stt','mdl','prt','abq','pac')
restartDir = savedir + id + '_restart' + os.sep
if (not os.path.exists(restartDir)):
os.mkdir(restartDir)
for extension in extensions:
fileName = id + '.' + extension
if (os.path.exists(savedir + fileName)):
os.rename(savedir + fileName, restartDir + fileName)
def onJobStartup():
import os, osutils
restartDir = savedir + id + '_restart'
if (os.path.exists(restartDir)):
osutils.removeTree(restartDir)

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.41

Abaqus
Execution environment

abaqus_v6.env
abaqus_v6.env

Predefined names

onCaeStartup

from abaqus import *


from abaqusConstants import *


for name in globals().keys():
if name != '__builtins__':
print '%s = %s' % (name , eval(name))
(this code be used at top level or within one of the functions)

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

Dassault Systmes, 2008

L2.43

getInput
.
getInputs 1 /
Enter ok

getInput getInputs

Abaqus getInput getInputs


getInput -start -script

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.44


getInput (getInput.py sy31.py)
from abaqus import *
from math import sqrt
input = getInput('Enter a number', '9')
number = float(input)
print sqrt(number)

getInput float
getInputs
x = getInputs((('Enter first', '1'),
('Enter second', '2'),
('Enter third', '3')))
print x

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

Dassault Systmes, 2008

L2.46

2-1:

scr_viewport_tiler.py

createViewports()
tileViewports()

createViewports()

tileViewports()

CLI

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.47

2-2: A
: A (A.py)
1 mdb
from abaqus import *
from abaqusConstants import *
from caeModules import *
Mdb()

mdb

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.48

2-2: A
2
myModel = mdb.Model(name='Model A')
mySketch = myModel.ConstrainedSketch(
name='Sketch A', sheetSize=200.0)
xyCoordsInner = ((-5 , 20), (5, 20), (15, 0),
(-15, 0), (-5, 20))
xyCoordsOuter = ((-10, 30), (10, 30), (40, -30),
(30, -30), (20, -10), (-20, -10),
(-30, -30), (-40, -30), (-10, 30))
for i in range(len(xyCoordsInner)-1):
mySketch.Line(point1=xyCoordsInner[i],
point2=xyCoordsInner[i+1])
for i in range(len(xyCoordsOuter)-1):
mySketch.Line(point1=xyCoordsOuter[i],
point2=xyCoordsOuter[i+1])

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.49

2-2: A
3
myPart = myModel.Part(name='Part A',
dimensionality=THREE_D, type=DEFORMABLE_BODY)
myPart.BaseSolidExtrude(sketch=mySketch,
depth=20.0)

myAssembly = mdb.models['Model A'].rootAssembly


myInstance = myAssembly.Instance(name='Part A-1', part=myPart,
dependent=OFF)

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.50

2-2: A
5
partInstances = (myInstance,)
myAssembly.seedPartInstance(
regions=partInstances, size=5.0)
myAssembly.generateMesh(regions=partInstances)

myViewport = session.Viewport(name='Viewport for Model A',


origin=(20, 20), width=150, height=100)
myViewport.assemblyDisplay.setValues(renderStyle=SHADED, mesh=ON)
myViewport.setValues(displayedObject=myAssembly)

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.51

2-3:
Abaqus 2.3.4

(skewshell_parametric.py)

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

Dassault Systmes, 2008

L2.53

2-1: Session (workshop2-1.py)


1.
2. ODB
TopLeftFront Iso

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

L2.54

2-2: (workshop2-2.py)
1. Abaqus/CAE
2. abaqusMacros.py

3.

Abaqus/CAE GUIProperty

Introduction to Python and Scripting in Abaqus


Dassault Systmes, 2008

You might also like