Точка вставки блока не соответствует ширине и высоте изображения

(все цифры не реальные размеры)

У меня есть изображение в autocad, ширина которого: 8000 мм, а высота: 8000 мм, когда я вставляю блок в середину изображения вместо X и Y блока (4000,4000), они что-то вроде (560,560). Даже когда я перемещаю блок, X и Y остаются прежними. Я не имею понятия почему?!

Я провел небольшое исследование и увидел, что некоторые люди говорят, что иногда блоки имеют другую систему координат, чем само изображение.

Можете ли вы сказать мне, как я могу понять это, чтобы я мог получить X и Y для блока (4000,4000)?

С уважением, Димитар Георгиев


person chikito1990    schedule 30.04.2014    source источник


Ответы (1)


Координаты X и Y (или начало координат) вашего объекта BLOCK не имеют ничего общего с тем, где находится BLOCK на вашем чертеже.

Когда вы вставляете BLOCK в рисунок, вы на самом деле делаете несколько вещей.

Во-первых, AutoCAD создает запись в TABLE, которая используется для хранения BLOCK_RECORD объектов. Созданный BLOCK_RECORD будет иметь дескриптор, который ссылается на геометрию только что вставленного BLOCK.

Затем этот дескриптор используется в разделе BLOCKS. Этот раздел содержит объекты BLOCK, которые определяют геометрию, содержащуюся в самом BLOCK. Одна из первых записей в объекте BLOCK представляет собой набор координат X и Y, представляющих базовую точку BLOCK.

Они не совпадают с координатами того места, где BLOCK фактически вставлен на чертеже. Эти координаты действуют как опорная точка для всей геометрии, содержащейся в объекте BLOCK. Каждая координата для каждой части геометрии в BLOCK отсчитывается от базовой точки BLOCK. Вы можете думать обо всех координатах геометрии в объекте BLOCK как о дельта-координатах, потому что они измеряют расстояние от базовой точки BLOCK, а не от начала чертежа.

Последнее, что делает AutoCAD, когда вы вставляете BLOCK, — это создает объект INSERT в разделе ENTITIES. Это короткий объект, который содержит имя вставляемого BLOCK, а также координаты, где BLOCK будет расположен на чертеже. Эти координаты управляют положением BLOCK на чертеже.

person Stewbob    schedule 01.05.2014
comment
Спасибо за ответ. Я использую Kabeja Library для чтения объектов BLOCK в Java. Я читаю точно ENTITIES из типа INSERT, и координаты все те же. Я снова буду отлаживать код, но я на 100% уверен, что читаю их именно так. Возможно проблема в Kabeja Library. Есть ли другие бесплатные DXF Libraries, которые лучше, чем Kabeja, или хотя бы с дополнительной документацией. Потому что для библиотеки Kabeja их нет? - person chikito1990; 02.05.2014
comment
У меня нет никакого опыта с Kabeja. Мы запускаем собственный считыватель dxf внутри компании, но он находится в .NET. Я считаю, что есть хорошая библиотека C++ под названием dxflib. - person Stewbob; 02.05.2014