对于abaqus,我正在编写一个脚本,该脚本使用来自不同文件的点来创建结构。为了在abaqus中创建一个集合,使用了findAt命令。
db.models['Model-1'].parts['Part-1'].Set(edges=
mdb.models['Model-1'].parts['Part-1'].edges.findAt(tensionList), name='Tension')
张力列表:
tensionList = [([0.75, 1.25, 0.0], ()), ([0.25, 0.75, 0.0], ()), ([0.75, 0.25, 0.0], ()), ([0.5, 2.0, 0.0], ()), ([0.0, 1.5, 0.0], ()), ([0.25, 1.75, 0.0], ()), ([1.0, 1.5, 0.0], ())]
在abaqus中运行此脚本时,确实会发生以下错误:
"类型错误:arg1;参数太多;应为1,得到7">
然而,当从tensionList中删除外括号[]并将其直接放置在脚本中时,脚本确实有效:
mdb.models['Model-1'].parts['Part-1'].Set(edges=
mdb.models['Model-1'].parts['Part-1'].edges.findAt(([0.75, 1.25, 0.0], ()), ([0.25, 0.75, 0.0], ()), ([0.75, 0.25, 0.0], ()), ([0.5, 2.0, 0.0], ()), ([0.0, 1.5, 0.0], ()), ([0.25, 1.75, 0.0], ()), ([1.0, 1.5, 0.0], ())), name='Tension')
(脚本不适用于用外括号[]粘贴脚本中的所有内容,但如果在tensionList中删除外括号并引用示例1中的内容,也会出现相同的错误(
我怎么能在不必复制过去的一切的情况下解决这个问题呢?(这个过程会有很多迭代和很长的列表(
编辑:通过讨论边缘索引的解决方法(仍然感兴趣的是如何使用findAt解决(
index =0
while index < (len(compressiveMembersIndex)+len(tensileMembersIndex)):
mdb.models['Model-1'].parts['Part-1'].Set(edges=
mdb.models['Model-1'].parts['Part-1'].edges[index:index+1],
name=aSetCreating[index])
index +=1
我想在一些地方有一组额外的括号。。。下面的代码以所示的格式对我有效,它将输入作为一个x,y,z。
findAt((x, y, z),)
对您来说,一个可能的解决方案是制作xyz坐标的列表,并使用循环使用findAt引用该列表?
x=[1,2,3]
y=[4,5,6]
z[7,8,9]
edgeslist=[]
numedges=5
for i in xrange(numedges)
edgeslist.append( findAt((x[i], y[i], z[i]),) )
或者,如果你的边位于一条方便的路径上,你可以总是使用findAt来获得一条边,然后使用getEdgesByEdgeAngle(…(