Плоские объекты (такие как дуги, окружности, 2D-полилинии (LWPOLYLINEs
), ссылки на блоки (INSERTs
) и другие) определяются относительно Системы координат объектов (OCS) рассчитывается для плоскости, в которой они находятся.
Эта система координат имеет то же происхождение, что и Всемирная система координат (WCS), но векторы осей X и Y рассчитываются с использованием алгоритма произвольной оси для данного вектора выдавливания или нормали к плоскости, в которой находится плоский объект.
Я вижу, что ваш текущий код генерирует круги в координатах точки вставки всех ссылок на блоки (INSERTs
), находящихсяна слое WASH BASINS
.
Координаты точки вставки каждой ссылки на блок выражаются относительно OCS , рассчитанного с использованием вектора экструзии (группа DXF 210
), связанного с ссылкой на блок.
Координаты центральной точки круга также выражаются относительно OCS круга, и поэтому, чтобы соответствовать положению ссылки на блок, вам необходимо предоставить метод add_circle
для экструзионное вектор опорного блока , так что и точка вставки координат и координаты центра выражаются относительно той же системе координат * +1027 *
таким образом, код должен стать:.
def encircle_entity(e):
if e.dxftype()=='INSERT':
circleCenter = e.dxf.insert
msp.add_circle(circleCenter, 10, dxfattribs={'layer': 'MyCircles', 'extrusion': e.dxf.extrusion})
print("Circle entity added")