Python二次開發(fā)——findAt方法的正確食用方法
Load命令:使用region參數(shù)指定施加荷載的區(qū)域
Mesh命令:使用region參數(shù)指定單元類型、網(wǎng)格種子的定義區(qū)域
Set命令:使用region參數(shù)定義節(jié)點(diǎn)集、單元集
#!/user/bin/python
# -* - coding:UTF-8 -*-
# 導(dǎo)入腳本中使用的各個(gè)模塊
from abaqus import *
from abaqusConstants import *
from caeModules import *
#創(chuàng)建新模型 Model-1
myModel = mdb.models['Model-1']
# 創(chuàng)建新的視口
myViewport=session.Viewport(name='Region syntax',
origin=(20, 20), width=200, height=100)
# 創(chuàng)建一個(gè)草圖,并繪制兩個(gè)矩形
mySketch = myModel.ConstrainedSketch(name='Sketch A',
sheetSize=200.0)
mySketch.rectangle(point1=(-40.0, 30.0),
point2=(-10.0, 0.0))
mySketch.rectangle(point1=(10.0, 30.0),
point2=(40.0, 0.0))
# 對上面創(chuàng)建的兩個(gè)矩形進(jìn)行拉伸操作,生成三維部件
door = myModel.Part(name='Door',
dimensionality=THREE_D, type=DEFORMABLE_BODY)
door.BaseSolidExtrude(sketch=mySketch, depth=20.0)
# 創(chuàng)建部件實(shí)例
myAssembly = myModel.rootAssembly
doorInstance = myAssembly.Instance(name='Door-1',
part=door, dependent=OFF)
# 選擇兩個(gè)頂點(diǎn)
pillarVertices = doorInstance.vertices.findAt(
((-40,30,0),), ((40,0,0),) )
# 創(chuàng)建靜力分析步(static)
myModel.StaticStep(name='impact',
previous='Initial', initialInc=1, timePeriod=1)
# 在選擇的頂點(diǎn)上施加集中力
myPillarLoad = myModel.ConcentratedForce(
name='pillarForce', createStepName='impact',
region=(pillarVertices,), cf1=12.50E4)
# 選擇兩個(gè)面
topFace = doorInstance.faces.findAt(((-25,30,10),))
bottomFace = doorInstance.faces.findAt(((-25,0,10),))
# 在選擇的面上施加壓力(pressure)
# 對于同一部件實(shí)例的相同類型的實(shí)體,可以使用 + 號
myFenderLoad = myModel.Pressure(
name='pillarPressure', createStepName='impact',
region=((topFace+bottomFace, SIDE1),),
magnitude=10E4)
# 在同一部件實(shí)例上選擇兩條邊
myEdge1 = doorInstance.edges.findAt(((10,15,20),))
myEdge2 = doorInstance.edges.findAt(((10,15,0),))
# 對一個(gè)面、兩條邊和兩個(gè)頂點(diǎn)施加邊界條件
myDisplacementBc= myModel.DisplacementBC(
name='xBC', createStepName='impact',
region=(pillarVertices, myEdge1+myEdge2,
topFace), u1=5.0)
# 使用面上的任意點(diǎn)選擇兩個(gè)面
faceRegion = doorInstance.faces.findAt(
((-30,15,20), ), ((30,15,20),))
# 創(chuàng)建包含兩個(gè)面(face)的表面(surface)
mySurface = myModel.rootAssembly.Surface(
name='exterior', side1Faces=faceRegion)
# 使用這個(gè)表面來創(chuàng)建彈性地基(elastic foundation)
myFoundation = myModel.ElasticFoundation(
name='elasticFloor', createStepName='Initial',
surface=mySurface, stiffness=1500)
# 顯示施加荷載和邊界條件后的裝配件
myViewport.setValues(displayedObject=myAssembly)
myViewport.assemblyDisplay.setValues(step='impact',
loads=ON, bcs=ON, predefinedFields=ON)
重點(diǎn)講解:
28:調(diào)用findAt()方法時(shí),里面點(diǎn)的坐標(biāo)應(yīng)是三維坐標(biāo),在二維平面內(nèi)繪制草圖時(shí)z坐標(biāo)應(yīng)為0;
42~45:在同一部件實(shí)例中,相同類型實(shí)體(topFace和bottomFace均為表面),可以使用“+”進(jìn)行合并。
補(bǔ)充:用findAt捕捉點(diǎn):
a1 = mdb.models['Model-1'].rootAssembly
v1 = a1.instances['Part-1-1'].vertices
verts1 = v1.findAt(((5.0,5.0,200.0),))
region = a1.Set(vertices=verts1, name='Set-2')
選擇一條弧線進(jìn)行加載:
import math
cood_x=5.0*math.sin(45.0/180.0*math.pi)
cood_y=5.0*math.cos(45.0/180.0*math.pi)
side1Edges3 =s1.findAt(((cood_x,cood_y,0.0),))
region3 = a.Surface(side1Edges=side1Edges3, name='Surf-1')
mdb.models['Model-1'].Pressure(name='Load-1', createStepName='Step-1',
region=region3, distributionType=UNIFORM, field='', magnitude=-pp,
amplitude=UNSET)
選擇四個(gè)點(diǎn)施加集中力:
a1 = mdb.models['Model-1'].rootAssembly
v1 = a1.instances['Part-1-1'].vertices
verts1 = v1.findAt(((5.0,5.0,200.0),),((5.0,-5.0,200.0),),((-5.0,-5.0,200.0),),((-5.0,5.0,200.0),))
region = a1.Set(vertices=verts1, name='Set-2')
mdb.models['Model-1'].ConcentratedForce(name='Load-1', createStepName='Step-1',
region=region, cf3=1000.0, distributionType=UNIFORM, field='',
localCsys=None)
對于剛開始接觸Python二次開發(fā)的童鞋們,強(qiáng)烈推薦大家一個(gè)利器:Python Reader
公眾號內(nèi)回復(fù):reader即可自動(dòng)獲取
Pyhton Reader的用法:
打開Abaqus后,點(diǎn)擊運(yùn)行Python Reader,會出現(xiàn)如圖所示:
右邊那個(gè)框框就是PythonReader的界面,同學(xué)們先不要被這么多命令流嚇到哈,這個(gè)小軟件做的特別良心,你在軟件里每操作一步,小框框里就會顯示相應(yīng)的命令流,并進(jìn)行高亮,所以我們剛開始接觸Python二次開發(fā)的時(shí)候這個(gè)小軟件會幫助我們不少忙。給大家示范一下:把背景換為白色
View-Graphics Options-Viewport Background
這時(shí)會出現(xiàn)這樣的畫面:
小框框內(nèi)高亮的部分即為剛剛的操作,將它復(fù)制到軟件下面命令行,即可通過命令流控制背景顏色了。
以上就是木木今天所要分享的內(nèi)容了
木木自費(fèi)搞了個(gè)小抽獎(jiǎng),大家有興趣可以參加哦~在公眾號(易木木響叮當(dāng))內(nèi)回復(fù)“木木向上沖!”即可參與
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺客服
TOP




















