Abaqus Python 'Getclosest' command

本小妞迷上赌 提交于 2019-12-24 05:54:48

问题


I'm using the getclosest command to find a vertex.

ForceVertex1 = hatInstance.vertices.getClosest(coordinates=((x,y,z,))

This is a dictionary object with Key 0 and two values (hatInstance.vertices[1] and the coordinates of the vertex) The specific output:

{0: (mdb.models['EXP-100'].rootAssembly.instances['hatInstance-100'].vertices[1], (62.5242172081597, 101.192447407436, 325.0))}

Whenever I try to create a set, the vertex isn't accepted

mainAssembly.Set(vertices=ForceVertex1[0][0],name='LoadSet1')

I also tried a different way:

tolerance = 1.0e-3

        vertex = []
        for vertex in hatInstance.vertices:
           x = vertex.pointOn[0][0]
           print x
           y = vertex.pointOn[0][1]
           print y
           z = vertex.pointOn[0][2]
           print z
           break
           if (abs(x-xTarget)) < tolerance and abs(y-yTarget) < tolerance and abs(z-zTarget) < tolerance):
             vertex.append(hatInstance.vertices[vertex.index:vertex.index+1])

xTarget etc being my coordinates, despite this I still don't get a vertex object


回答1:


For those struggeling with this, I solved it.

Don't use the getClosest command as it returns a dictionary object despite the manual recommending this. I couldn't convert this dictionary object, specifically a key and a value within to a standalone object (vertex)

Instead use Instance.vertices.getByBoundingSphere(center=,radius=) The center is basically a tuple of the coordinates and the radius is the tolerance. This returns an array of vertices




回答2:


If you want the geometrical object you just have to access the dictionary. One way to do it is:

ForceVertex1 = hatInstance.vertices.getClosest(coordinates=((x,y,z,))[0][0]

This will return the vertices object only, which you can assign to a set or whatever.



来源:https://stackoverflow.com/questions/39030382/abaqus-python-getclosest-command

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!