如何在abaqus-python脚本中引用findAt-list/tuple



对于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(…(

最新更新