#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
from math import *
from abaqus import *
from abaqusConstants import *
from caeModules import *
from driverUtils import executeOnCaeStartup
executeOnCaeStartup()
viewportName = session.currentViewportName
modelNameDE=session.viewports[viewportName].displayedObject.modelName
field = ( ('model名称:',modelNameDE),
('set1名:','railSpring'),
('set2名:','banSpring'),
('两点间的距离:','7'),
('弹簧x方向刚度:','179.39'),('弹簧x方向阻尼:','0.0393'),
('弹簧y方向刚度:','831.2244'),('弹簧y方向阻尼:','0.2020'),
('弹簧z方向刚度:','179.39'),('弹簧z方向阻尼:','0.0393')
)
modelname,\
SetName1,\
SetName2,\
LENGTH,\
SpringstiffnessX,DashpotCoefficientX,\
SpringstiffnessY,DashpotCoefficientY,\
SpringstiffnessZ,DashpotCoefficientZ = \
getInputs(field,dialogTitle='创建点对点弹簧')
LENGTH = float(LENGTH)
SpringstiffnessX = float(SpringstiffnessX)
DashpotCoefficientX = float(DashpotCoefficientX)
SpringstiffnessY = float(SpringstiffnessY)
DashpotCoefficientY = float(DashpotCoefficientY)
SpringstiffnessZ = float(SpringstiffnessZ)
DashpotCoefficientZ = float(DashpotCoefficientZ)
a = mdb.models[modelname].rootAssembly
def partNodes(SetName):
n = a.sets[SetName].nodes
list1 = []
for i in range(int(len(n))):
list1.append((n[i].coordinates[0],n[i].coordinates[1],n[i].coordinates[2]))
return list1
def coonectNodes(list1,list2):
coonectNodes = []
len1 = int(len(list1))
len2 = int(len(list2))
for i in range(len1):
for j in range(len2):
if pow(((list1[i][0]-list2[j][0])**2+(list1[i][1]-list2[j][1])**2+(list1[i][2]-list2[j][2])**2),0.5)<float(LENGTH):
coonectNodes.append((i,j))
break
else:
continue
return coonectNodes
def switchNodes(coonectNodes,SetName1,SetName2):
regionpair = []
for i in range(int(len(coonectNodes))):
nodes1 = a.sets[SetName1].nodes
nodes2 = a.sets[SetName2].nodes
node1 = nodes1[coonectNodes[i][0]:coonectNodes[i][0]+1]
node2 = nodes2[coonectNodes[i][1]:coonectNodes[i][1]+1]
regionpair0 = regionToolset.Region(nodes=node1)
regionpair1 = regionToolset.Region(nodes=node2)
regionpair.append((regionpair0,regionpair1))
return regionpair
def creatSpring(regionpair, SetName1,SetName2):
mdb.models[modelname].rootAssembly.engineeringFeatures.TwoPointSpringDashpot(
name = SetName1+'-to-'+SetName2+'-x', regionPairs = regionpair, axis=FIXED_DOF, dof1=1,
dof2=1, orientation=None, springBehavior=ON, springStiffness=SpringstiffnessX,
dashpotBehavior=ON, dashpotCoefficient=DashpotCoefficientX)
mdb.models[modelname].rootAssembly.engineeringFeatures.TwoPointSpringDashpot(
name = SetName1+'-to-'+SetName2+'-y', regionPairs = regionpair, axis=FIXED_DOF, dof1=2,
dof2=2, orientation=None, springBehavior=ON, springStiffness=SpringstiffnessY,
dashpotBehavior=ON, dashpotCoefficient=DashpotCoefficientY)
mdb.models[modelname].rootAssembly.engineeringFeatures.TwoPointSpringDashpot(
name = SetName1+'-to-'+SetName2+'-z', regionPairs = regionpair, axis=FIXED_DOF, dof1=3,
dof2=3, orientation=None, springBehavior=ON, springStiffness=SpringstiffnessZ,
dashpotBehavior=ON, dashpotCoefficient=DashpotCoefficientZ)
list1 = partNodes(SetName1)
list2 = partNodes(SetName2)
cNodes = coonectNodes(list1, list2)
regionpair = switchNodes(cNodes,SetName1,SetName2)
creatSpring(regionpair,SetName1,SetName2)
print('done')
abaqus用装配体节点集批量添加弹簧脚本
如果有以下错误
... #匹配节点
... def coonectNodes(list1,list2):
def coonectNodes(list1,list2):
^
SyntaxError: invalid syntax
中间可能有没有显示出来的符号或者格式、缩进之类的有问题
把这两三行删掉重写手打一遍,并把附近的注释以及空行删掉试一试能不能行,重新改动之后注意正确缩进
注释:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
from math import *
from abaqus import *
from abaqusConstants import *
from caeModules import *
from driverUtils import executeOnCaeStartup
executeOnCaeStartup()
#自动找到当前model名称
viewportName = session.currentViewportName
modelNameDE=session.viewports[viewportName].displayedObject.modelName
#输入函数
#前半为提示,后半为默认参数
field = ( ('model名称:',modelNameDE),
('set1名:',''),
('set2名:',''),
('两点间的距离:','5'),
('弹簧x方向刚度:','179.39'),('弹簧x方向阻尼:','0.0393'),
('弹簧y方向刚度:','831.2244'),('弹簧y方向阻尼:','0.2020'),
('弹簧z方向刚度:','179.39'),('弹簧z方向阻尼:','0.0393')
)
#getInputs函数接受的参数与上面一一对应
modelname,\
SetName1,\
SetName2,\
LENGTH,\
SpringstiffnessX,DashpotCoefficientX,\
SpringstiffnessY,DashpotCoefficientY,\
SpringstiffnessZ,DashpotCoefficientZ = \
getInputs(field,dialogTitle='创建点对点弹簧')
#转换数据类型
LENGTH = float(LENGTH)
SpringstiffnessX = float(SpringstiffnessX)
DashpotCoefficientX = float(DashpotCoefficientX)
SpringstiffnessY = float(SpringstiffnessY)
DashpotCoefficientY = float(DashpotCoefficientY)
SpringstiffnessZ = float(SpringstiffnessZ)
DashpotCoefficientZ = float(DashpotCoefficientZ)
#找到装配体
a = mdb.models[modelname].rootAssembly
#提取节点,加快节点匹配速度
def partNodes(SetName):
n = a.sets[SetName].nodes
list1 = []
#提取set所有点的坐标0—X,1—Y,2—Z,放入list1
for i in range(int(len(n))):
list1.append((n[i].coordinates[0],n[i].coordinates[1],n[i].coordinates[2]))
return list1
#匹配节点
def coonectNodes(list1,list2):
#利用循环寻找符合条件的节点对,将坐标的序号成对存入coonectNodes
coonectNodes = []
len1 = int(len(list1))
len2 = int(len(list2))
for i in range(len1):
#较小的集位于循环内部
for j in range(len2):
if pow(((list1[i][0]-list2[j][0])**2+(list1[i][1]-list2[j][1])**2+(list1[i][2]-list2[j][2])**2),0.5)<float(LENGTH):
coonectNodes.append((i,j))
break
else:
continue
return coonectNodes
#转化节点
def switchNodes(coonectNodes,SetName1,SetName2):
regionpair = []
for i in range(int(len(coonectNodes))):
nodes1 = a.sets[SetName1].nodes
nodes2 = a.sets[SetName2].nodes
#通过坐标序号在集当中找到坐标并放入node,由于转换节点类型参数需要序列,故截取列表,列表截取后任为序列类型
node1 = nodes1[coonectNodes[i][0]:coonectNodes[i][0]+1]
node2 = nodes2[coonectNodes[i][1]:coonectNodes[i][1]+1]
#转换网格节点类型转换为建立弹簧所需要的point节点类型,nodes=的参数为序列sequence类型
regionpair0 = regionToolset.Region(nodes=node1)
regionpair1 = regionToolset.Region(nodes=node2)
#将转化后的坐标成对放入regionpair
regionpair.append((regionpair0,regionpair1))
return regionpair
#建立弹簧,regionpair为坐标对,name1,name2为弹簧命名参数
def creatSpring(regionpair, SetName1,SetName2):
#建立TwoPointSpringDashpot弹簧
#x方向弹簧
mdb.models[modelname].rootAssembly.engineeringFeatures.TwoPointSpringDashpot(
name = SetName1+'-to-'+SetName2+'-x', regionPairs = regionpair, axis=FIXED_DOF, dof1=1,
dof2=1, orientation=None, springBehavior=ON, springStiffness=SpringstiffnessX,
dashpotBehavior=ON, dashpotCoefficient=DashpotCoefficientX)
#y方向弹簧
mdb.models[modelname].rootAssembly.engineeringFeatures.TwoPointSpringDashpot(
name = SetName1+'-to-'+SetName2+'-y', regionPairs = regionpair, axis=FIXED_DOF, dof1=2,
dof2=2, orientation=None, springBehavior=ON, springStiffness=SpringstiffnessY,
dashpotBehavior=ON, dashpotCoefficient=DashpotCoefficientY)
#z方向弹簧
mdb.models[modelname].rootAssembly.engineeringFeatures.TwoPointSpringDashpot(
name = SetName1+'-to-'+SetName2+'-z', regionPairs = regionpair, axis=FIXED_DOF, dof1=3,
dof2=3, orientation=None, springBehavior=ON, springStiffness=SpringstiffnessZ,
dashpotBehavior=ON, dashpotCoefficient=DashpotCoefficientZ)
#主函数
#提取节点
list1 = partNodes(SetName1)
list2 = partNodes(SetName2)
#匹配节点
cNodes = coonectNodes(list1, list2)
#转化节点
regionpair = switchNodes(cNodes,SetName1,SetName2)
#建立弹簧
creatSpring(regionpair,SetName1,SetName2)
print('done')