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

ABAQUSCAE结构CAE技术邻杯ANSYS原创案例大赛

Abaqus 利用FindAt函数根据坐标查找点,线,面的评论2条

  • 蓝莓黑加仑
    0
    很不错,比帮助文档的要详细,而且目前看到的有很多案例是给的findAT(基准点),导致模型建完以后一堆无用的基准点,很乱。你的这个通过解包列表或者元组来直接找点定位会更清晰些
  • yuyu
    0
    good!!

Abaqus 利用FindAt函数根据坐标查找点,线,面的相关案例教程

在讲解 findAt() 方法之前,先让我们简单回顾一下Abaqus中需要指定区域(region)的情况吧~ Load命令:使用region参数指定施加荷载的区域 Mesh命令:使用region参数指定单元类型、网格种子的定义区域 Set命令:使用region参数定义节点集、单元集 当我们在CAE中建立模型后,软件会自动为他们进行编号,如节点编号、单元编号、各条边等,如果我们在编写脚本的时候选用模
前言 Python具有以下特点。Python语言是一种动态解释型编程语言,其功能强大,简单易学,支持面向对象编程((object-oriented programming),虽然由于其动态性致使程序解释执行速度比编译语言慢,但是随着Python语言的不断优化以及计算机硬件的迅猛发展,Python语言将会受到越来越多用户的关注。Python具有开源、自由等特征。它的简洁性和易用性使程序的开发过程变得
例如:cell4 = mdb.models['block'].parts['crankcase'].cells[4],要把part模块中编号为4的体赋值给cell4,就需通过路径mdb→models→part→cells(4号体属性),其中'block'、'crankcase'、分别是model和part的名字。 在草图Sketch中画线: s = mdb.models[' block '].Co
from abaqus import * from abaqusConstants import * backwardCompatibility.setValues(includeDeprecated=True,reportDeprecated=False) # Create a model. myModel = mdb.Model(name='Beam') # Create a new view
一款可以上手的实例,讲解整个RSG插件的强大地方,避免重复工作。 如上图所示,圆柱电芯建模和阵列所有尺寸都列出,其中R 圆柱半径、L 圆柱长度、Numx x方向阵列数、Numy y方向阵列数量、DistanceX x方向阵列距离,其它部分为创建材料,分析类型,接触类型,载荷工况,网格划分,提交作业。 另外,还附带DB和plugin文件,写上一个icon进行,p.py文件将三个文件输出pyc加密文件
结构工程师
影响力
粉丝
内容
获赞
收藏
    项目客服
    培训客服
    2 7