Abaqus 利用FindAt函數根據坐標查找點,線,面

  在ANSYS中可以通過坐標來選取對象,Abaqus雖說沒有ANSYS那么方便,但是也還是可以實現的,主要是通過findAt函數,可以選擇cell(體)、face(面)、edge(邊)和vertex(頂點)。

  findAt(): This method returns the object or objects in the VertexArray located at the given coordinates.

  findAt initially uses the ACIS tolerance of 1E-6. As a result, findAt returns any Vertex object that is at the arbitrary point specified or at a distance of less than 1E-6 from the arbitrary point. If nothing is found, findAt uses the tolerance for imprecise geometry (applicable only for imprecise geometric entities).

  findAt will always try to find objects among all the vertices in the part or assembly instance and will not restrict itself to a subset even if the VertexArray represents such subset.

  Required argument:coordinates A sequence of Floats specifying the X-, Y-, and Z-coordinates of the object to find.

  findAt returns either a Vertex object or a sequence of Vertex objects based on the type of input.

  If coordinates is a sequence of Floats, findAt returns the Vertex object at that point.If you omit the coordinates keyword argument, findAt accepts as arguments a sequence of sequence of floats in the    following format:

verts = v.findAt(((20.19686, -169.513997, 27.798593), ),

         ((19.657627, -167.295749, 27.056402), ),

         ((18.274129, -157.144741, 25.15218), ))

Return value:A Vertex object or a sequence of Vertex objects.

實例:

######選擇一個點施加集中力

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')

mdb.models['Model-1'].ConcentratedForce(name='Load-1', createStepName='Step-1', 

  region=region, cf3=1000.0, distributionType=UNIFORM, field='', 

  localCsys=None)

######選擇兩個點施加集中力

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),))

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)

#####選擇四個點施加集中力

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)

其實查找線和面其實也類似。

--------------------------------------------------------------------------------

-----------------------------------查找線---------------------------------------

示例:

#加載

#一次選擇一條邊進行加載

a = mdb.models['Model-1'].rootAssembly

s1 = a.instances['Part-1-1'].edges

#這個點的坐標只需要在這條線上即可,這個坐標位置處不一定得有關鍵點存在

side1Edges1 =s1.findAt(((20.0,5.0,0.0),))

region = a.Surface(side1Edges=side1Edges1, name='Surf-1')

mdb.models['Model-1'].Pressure(name='Load-1', createStepName='Step-1', 

  region=region, distributionType=UNIFORM, field='', magnitude=-pp, 

  amplitude=UNSET)

#####一次選擇兩條邊進行加載

#這個點的坐標只需要在這條線上即可,這個坐標位置處不一定得有關鍵點存在

side1Edges2 =s1.findAt(((10.0,10.0,0.0),),((-10.0,10.0,0),))

region2 = a.Surface(side1Edges=side1Edges2, name='Surf-1')

mdb.models['Model-1'].Pressure(name='Load-1', createStepName='Step-1', 

  region=region2, distributionType=UNIFORM, field='', magnitude=-pp, 

  amplitude=UNSET)

#選擇一條弧線進行加載

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)

#選擇一個院的四條弧線進行加載

cood_x=5.0*math.sin(45.0/180.0*math.pi)

cood_y=5.0*math.cos(45.0/180.0*math.pi)

side1Edges4 =s1.findAt(((cood_x,cood_y,0.0),),((-cood_x,cood_y,0.0),),((-cood_x,-cood_y,0.0),),((cood_x,-cood_y,0.0),))

region4 = a.Surface(side1Edges=side1Edges4, name='Surf-1')

mdb.models['Model-1'].Pressure(name='Load-1', createStepName='Step-1', 

  region=region4, distributionType=UNIFORM, field='', magnitude=-pp, 

  amplitude=UNSET)

#######選擇一條邊施加約束

a = mdb.models['Model-1'].rootAssembly

e1 = a.instances['Part-1-1'].edges

edges1 = e1.findAt(((-20.0,5.0,0.0),))

region = a.Set(edges=edges1, name='Set-1')

mdb.models['Model-1'].DisplacementBC(name='BC-1', createStepName='Step-1', 

  region=region, u1=0.0, u2=0.0, ur3=UNSET, amplitude=UNSET, fixed=OFF, 

  distributionType=UNIFORM, fieldName='', localCsys=None)

mdb.models['Model-1'].boundaryConditions['BC-1'].move('Step-1', 'Initial')

#######選擇兩條邊施加約束

edges1 = e1.findAt(((-20.0,5.0,0.0),),((-20.0,-5.0,0.0),))

region = a.Set(edges=edges1, name='Set-1')

mdb.models['Model-1'].DisplacementBC(name='BC-1', createStepName='Step-1', 

  region=region, u1=0.0, u2=0.0, ur3=UNSET, amplitude=UNSET, fixed=OFF, 

  distributionType=UNIFORM, fieldName='', localCsys=None)

mdb.models['Model-1'].boundaryConditions['BC-1'].move('Step-1', 'Initial')

#######選擇一條弧線施加約束

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)

edges1 = e1.findAt(((cood_x,cood_y,0.0),))

region = a.Set(edges=edges1, name='Set-1')

mdb.models['Model-1'].DisplacementBC(name='BC-1', createStepName='Step-1', 

  region=region, u1=0.0, u2=0.0, ur3=UNSET, amplitude=UNSET, fixed=OFF, 

  distributionType=UNIFORM, fieldName='', localCsys=None)

mdb.models['Model-1'].boundaryConditions['BC-1'].move('Step-1', 'Initial')

#######選擇圓的四條弧線施加約束

edges1 = e1.findAt(((cood_x,cood_y,0.0),),((-cood_x,cood_y,0.0),),((-cood_x,-cood_y,0.0),),((cood_x,-cood_y,0.0),))

region = a.Set(edges=edges1, name='Set-1')

mdb.models['Model-1'].DisplacementBC(name='BC-1', createStepName='Step-1', 

  region=region, u1=0.0, u2=0.0, ur3=UNSET, amplitude=UNSET, fixed=OFF, 

  distributionType=UNIFORM, fieldName='', localCsys=None)

mdb.models['Model-1'].boundaryConditions['BC-1'].move('Step-1', 'Initial')

--------------------------------------------------------------------------------

-----------------------------------查找面---------------------------------------

示例:

a = mdb.models['Model-1'].rootAssembly

s1 = a.instances['Part-1-1'].faces

side1Faces1 = s1.getSequenceFromMask(mask=('[#20 ]', ), )

region = a.Surface(side1Faces=side1Faces1, name='Surf-1')

mdb.models['Model-1'].Pressure(name='Load-1', createStepName='Step-1', 

  region=region, distributionType=UNIFORM, field='', magnitude=10.0, 

  amplitude=UNSET)

######選擇一個面加載

a = mdb.models['Model-1'].rootAssembly

s1 = a.instances['Part-1-1'].faces

side1Faces1 = s1.findAt(((0.0,0.0,200.0),))

region = a.Surface(side1Faces=side1Faces1, name='Surf-1')

mdb.models['Model-1'].Pressure(name='Load-1', createStepName='Step-1', 

  region=region, distributionType=UNIFORM, field='', magnitude=10.0, 

  amplitude=UNSET)

######選擇兩個個面加載

a = mdb.models['Model-1'].rootAssembly

s1 = a.instances['Part-1-1'].faces

side1Faces1 = s1.findAt(((0.0,0.0,200.0),),((0.0,5.0,100.0),))

region = a.Surface(side1Faces=side1Faces1, name='Surf-1')

mdb.models['Model-1'].Pressure(name='Load-1', createStepName='Step-1', 

  region=region, distributionType=UNIFORM, field='', magnitude=10.0, 

  amplitude=UNSET)

######選擇一個面施加約束

a = mdb.models['Model-1'].rootAssembly

f1 = a.instances['Part-1-1'].faces

faces1 = f1.findAt(((0.0,0.0,0.0),))

region = a.Set(faces=faces1, name='Set-1')

mdb.models['Model-1'].DisplacementBC(name='BC-1', createStepName='Step-1', 

  region=region, u1=0.0, u2=0.0, u3=UNSET, ur1=UNSET, ur2=UNSET, ur3=UNSET, 

  amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, fieldName='', 

  localCsys=None)

mdb.models['Model-1'].boundaryConditions['BC-1'].move('Step-1', 'Initial')

######選擇兩個面施加約束

a = mdb.models['Model-1'].rootAssembly

f1 = a.instances['Part-1-1'].faces

faces1 = f1.findAt(((0.0,0.0,200.0),),((0.0,5.0,100.0),))

region = a.Set(faces=faces1, name='Set-1')

mdb.models['Model-1'].DisplacementBC(name='BC-1', createStepName='Step-1', 

  region=region, u1=0.0, u2=0.0, u3=UNSET, ur1=UNSET, ur2=UNSET, ur3=UNSET, 

  amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, fieldName='', 

  localCsys=None)

mdb.models['Model-1'].boundaryConditions['BC-1'].move('Step-1', 'Initial')

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

23
2
11