python语言abaqus子程序报错,如何修改

from random import *
from math import *
class Point3d:
def __init__(self):
self.x=uniform(-0.005,0.005)
self.y=uniform(-0.005,0.005)
self.z=uniform(0.005,0.02)
def __str__(self):
return '(%8g,%8g,%8g)' % (self.x,self.y,self.z)
def distance(self,B):
return sqrt((self.x-B.x)**2+(self.y-B.y)**2+(self.z-B.z)**2)
A=[Point3d()]
for i in range(1,31):
flag=True
while(flag):
B=Point3d()
ge2=True
for j in range(0,i):
if B.distance(A[j])<0.003:
j=i
ge2=False
if ge2:
A.append(B)
flag=False
for i in range(0,30):
rep1=str(i+1)
rep2='Ball-'
reps=rep2+rep1
mdb.models['Model-1'].rootAssembly.Instance(dependent=ON, name=str(reps), part=mdb.models['Model-1'].parts['Ball'])
mdb.models['Model-1'].rootAssembly.translate(instanceList=(str(reps), ), vector=A[i])

报错TypeError: vector; found 'instance', expecting a recognized type filling string dict

中间似乎少了段代码。

没有用过这个mdb的方法。不过提示很明白。你自己造了一个数据结构A,但是这个结构不是字典。它需要是一个按指定类型存贮的字典。你查看一下translate的源代码,追进去,看一眼就知道那个字典的结构。然后略改一改就应该 可以了。追问

谢谢您的回答,确实有一段代码我没有发上来,我是python小白,因为学习需要编了这么一段代码,相当于abaqus软件(有限元)二次开发,主要是想实现将建好的模型mdb.models['Model-1'].rootAssembly.移动到随机产生的三维坐标点上。对上面这段代码我是这样理解的:将产生的点存到数组A中,然后把数组中第i个坐标值赋值给vector。其他代码有点多我私信给您看下。十分感谢。

温馨提示:答案为网友推荐,仅供参考