更改 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
我在 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