- 积分
- 0
- 注册时间
- 2015-4-22
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 htliu.xjtu 于 2016-2-12 16:18 编辑
小弟以前是ANSYSer,最近开始搞Abaqus,但思维仍然深受ANSYS影响!ANSYS有个select命令非常好用,可以根据坐标范围选择节点,而Abaqus貌似没有这个功能,于是看了几天python,写了一个函数,实现了这个功能,这样就可以实现诸如在某一个区域内施加载荷、约束等功能,希望对大家有用!本人觉得重在交流,不搞那些弯弯绕了,直接上程序!
# 思路:将所有节点的节点号,x,y,z坐标提取出来生成序列,在序列中查找与输入坐标在一定公差范围内相同的节点,记录其节点号并保存
# 本例是网格在部件上,若网格在实例上则需稍作修
from abaqus import *
def selectNodesByCoords(modelName,partName,newSetName,xCoordMin=0,xCoordMax=0,yCoordMin=0,
yCoordMax=0,zCoordMin=0,zCoordMax=0,tol=1e-05):
p = mdb.models[modelName].parts[partName]
allNodes = p.nodes
coords = map(lambda x:[x.label, x.coordinates], allnodes)
nodeset=[]
for c in coords:
if c[1][0]<=(xCoordMax+tol) and c[1][0]>=(xCoordMin-tol) and c[1][1]<=(yCoordMax+tol) and c[1][1]>=(yCoordMin-tol) and c[1][2]<=(zCoordMax+tol) and c[1][2]>=(zCoordMin-tol):
nodeset.append(c[0])
if nodeset!=[]:
selctedNodes=allNodes.sequenceFromLabels(nodeset)
p.Set(nodes=selctedNodes,name=newSetName)
else:
print 'There are no nodes selected!'
return nodeset
|
|