当前位置:服务支持 >  软件文章 >  Abaqus利用FindAt函数根据坐标查找点、线、面方法

Abaqus利用FindAt函数根据坐标查找点、线、面方法

阅读数 6
点赞 0
article_banner

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


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空