对于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中运行此脚本时,会发生以下错误:
“ TypeError:arg1;参数太多;期望1,得到7”
但是,当从张力列表中删除外括号[]并将其直接放置在脚本中时,脚本确实可以工作:
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
答案 0 :(得分: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(...)