Изменение допуска функции findAt () - PullRequest
0 голосов
/ 10 мая 2019

Я использую функцию findAt() в Abaqus, но довольно часто он не находит элемент, даже при том, что эталонное местоположение довольно близко.Это связано с тем, что по умолчанию для поиска объектов используется допуск 1e-6.

(https://abaqus -docs.mit.edu / 2017 / английский язык / SIMACAECMDRefMap / simacmd-c-intaclregions.htm )

Я хотел бы расслабиться / изменитьэто терпимость.Кто-нибудь знает, возможно ли это?

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

1 Ответ

2 голосов
/ 10 мая 2019

Если вы хотите найти лица с большим допуском, используйте 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
...