我正在尝试在 Abaqus 6.13 中使用 python 生成孤立网格。意思是我想指定每个节点的坐标位置,然后另一个函数使用先前创建的节点创建元素。
我已经创建了一个节点列表和元素,但我不知道应该使用什么方法将它们添加到 abaqus 中。
这会创建节点
p = mdb.models[nameModel].parts[namePart]
for z in range (0, z_max+1):
for y in range (0, y_max+1):
for x in range (0, x_max+1):
listNode.append(p.Node(coordinates=(x*x_div, y*y_div, z*z_div)))
这将创建元素
p = mdb.models[nameModel].parts[namePart]
#p.setElementType(ElemType(elemCode=C3D8R,elemLibrary=STANDARD))
for z in range (0, z_max):
for y in range (0, y_max):
for x in range (0, x_max):
listNodeNum=[]
listNodeObj=[]
listNodeNum.append(x+y*(x_max+1)+z*(x_max+1)*(y_max+1))
listNodeNum.append(x+y*(x_max+1)+z*(x_max+1)*(y_max+1)+1)
listNodeNum.append(x+(y+1)*(x_max+1)+z*(x_max+1)*(y_max+1)+1)
listNodeNum.append(x+(y+1)*(x_max+1)+z*(x_max+1)*(y_max+1))
listNodeNum.append(x+y*(x_max+1)+(z+1)*(x_max+1)*(y_max+1))
listNodeNum.append(x+y*(x_max+1)+(z+1)*(x_max+1)*(y_max+1)+1)
listNodeNum.append(x+(y+1)*(x_max+1)+(z+1)*(x_max+1)*(y_max+1)+1)
listNodeNum.append(x+(y+1)*(x_max+1)+(z+1)*(x_max+1)*(y_max+1))
for num in listNodeNum:
listNodeObj.append(listNode[num])
listElem.append(p.Element(nodes=listNodeObj,elemShape=HEX8))
return listElem
没有错误,列表长度是正确的,但我只是看不到 abaqus 中发生的任何事情。
有任何想法吗?我可能错过了一些真正简单的东西。
谢谢,蒂姆
- - -编辑 - - -
通过使用 PartFromMesh 创建一个新零件,解决了之前的问题。
现在的问题是,当我尝试进入加载模块时,网格又消失了。当我尝试单击加载时,错误消息重新出现“装配不包含任何零件实例...,必须实例化零件...”
想法?