更改 findAt() 函数的公差

Changing the tolerance of findAt() function

我在 Abaqus 中使用 findAt() 函数,但它经常找不到元素,即使参考位置非常接近。这是因为它用于查找对象的容差默认为 1e-6

(https://abaqus-docs.mit.edu/2017/English/SIMACAECMDRefMap/simacmd-c-intaclregions.htm)

我愿意relax/change这个宽容。有人知道这是否可能吗?

mdb.models['Model-1'].parts['x'].Set(faces=/mdb.models['Model1'].parts['x'].faces.findAt(.....

如果您想通过更大的公差查找人脸,您应该使用 getByBoundingBox。在那里你可以用你的公差指定范围。例如

point = (x,y,z) # your coordinates
tol = 1e-5 # your tolerance
faces = mdb.models['Model1'].parts['x'].faces.getByBoundingBox(xMin = point[0]-tol, xMax = point[0]+tol,yMin = point[1]-tol, yMax = point[1]+tol,zMin = point[2]-tol, zMax = point[2]+tol,) # faces on the coordinates within your tolerance

此外,您可以通过创建一个函数来推进此操作,以便您可以在坐标列表上应用与 findAt 方法中相同的过程。

编辑:

甚至更好 getByBoundingSphere。在这种情况下更容易:

point = (x,y,z) # your coordinates
tol = 1e-5 # your tolerance
faces = mdb.models['Model1'].parts['x'].faces.getByBoundingSphere(center = point, radius=tol) # faces on the coordinates within your tolerance

编辑2: 忘记上面的。使用 getClosest。在那里您可以指定坐标列表和公差,因此行为就像 findAt 只是具有自定义公差。

point = (x,y,z) # your coordinates
point2 = (x2,y2,z2) # your coordinates
tol = 1e-5 # your tolerance
faces = mdb.models['Model1'].parts['x'].faces.getClosest(coordinates =(point,point2), searchTolerance=tol) # faces on the coordinates within your tolerance