Abaqus 利用FindAt函数根据坐标查找点,线,面

介绍

通过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:

# 一定要注意findAt后面" ( "和" , "的位置
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),))

region1 = a1.Set(vertices=verts1, name='Set-2')

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

    region=region1, 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),))

region1 = a1.Set(vertices=verts1, name='Set-2')

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

    region=region1, 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),))

region1 = a1.Set(vertices=verts1, name='Set-2')

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

    region=region1, 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),))

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

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

    region=region1, 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 ]', ), )

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

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

    region=region1, 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')
  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值