Единицы против реального мира

У меня есть файл CAD DXF (версия 10) с несколькими 2D-чертежами, и я использую ридер. До сих пор я все успешно загружал и растеризовал с помощью ImageMagick.

Но дело в том, что я вручную установил масштаб для координат, чтобы это имело смысл для меня. Как узнать, каков был исходный размер компонентов и какой блок был использован для рисования? Есть ли какая-то конкретная группа, на которую я должен посмотреть?

Мой заголовок выглядит так:

  0
SECTION
  2
HEADER
  9
$ACADVER
  1
AC1006
  9
$EXTMIN
 10
-14.610075
 20
-14.723197
  9
$EXTMAX
 10
14.556421
 20
15.530217
  9
$LTSCALE
 40
0.000394
  9
$PDMODE
 70
    35
  9
$PDSIZE
 40
0.000315
  0
ENDSEC

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

Я хочу знать единицы измерения, потому что я хочу иметь возможность точно изменить чертеж, так как он будет нанесен, например, переместить точку на 2 дюйма.

1 ответ

Решение

При реализации программы просмотра для файла dxf вам на самом деле не нужно ничего знать о единицах. Если, конечно, вы собираетесь реализовать Measure функция в вашем средстве просмотра, тогда это становится более сложным.

Ваш начальный размер 'zoom' в вашей программе просмотра может быть определен из информации заголовка, которую вы показали: EXTMIN а также EXTMAX 2 ключевых элемента информации, которые вам нужны. В вашем примере минимальная координата use3d в файле dxf составляет -14.610075,-14.723197, а максимальная используемая координата - 14.556421,15.530217. Это дает вам общий размер рисунка 29.166496(ширина) x 30.253414.

Для простого зрителя вы можете просто предположить, что единицы измерения в файле DXF равны единицам в вашем средстве просмотра (пикселях или точках или чем-либо, что вы используете).

Тогда базовый размер рисунка в вашем средстве просмотра будет 29.166496x30.253414, и вы можете увеличить его (увеличить), чтобы он заполнил любую область отображения, которая у вас есть.

РЕДАКТИРОВАТЬ

Файлы DXF ни в коем случае не являются "безразмерными", поэтому в случае, когда вам абсолютно необходимо знать единицы измерения, вам необходимо прочитать $INSUNITS значение кода группы, и чтобы перепроверить его, вы также можете прочитать $MEASUREMENT значение кода группы.

Спецификация R2000 dxf или любая другая версия содержат всю необходимую вам информацию о значении этих значений. Если вы перейдете на страницу "Коды групп сечений HEADER" и выполните поиск по "единицам", вы сможете найти список всех типов единиц. Например:

$INSUNITS
 70
     4

указывает, что файл dxf использует метрические единицы, в частности миллиметры, в качестве базовой единицы. Таким образом, любое размерное или координатное значение, сохраненное в файле dxf, будет в миллиметрах.

Чертежи по умолчанию для блоков AutoCAD DesignCenter: 0 = без единиц измерения; 1 = дюймы; 2 = ноги; 3 = мили; 4 = миллиметры; 5 = сантиметры; 6 = Метры; 7 = километры; 8 = микродюймы; 9 = милс; 10 = ярды; 11 = ангстремы; 12 = Нм; 13 = микрон; 14 = дециметры; 15 = декаметры; 16 = гектометры; 17 = Гигаметр; 18 = астрономические единицы; 19 = световых лет; 20 = парсек

РЕДАКТИРОВАТЬ

Я только что заметил, что вы используете очень старый формат DXF (R10). Если я правильно помню, единицы не были введены в спецификации DXF до R12. До этого фактический размер объектов рисования не менялся в зависимости от предполагаемых единиц. Только метки на размерах отличались от имперских до метрических единиц.

Если вы настроены на использование старого формата R10, вам просто нужно будет принять произвольное решение о том, что такое единицы измерения; при условии, что на ваших чертежах нет меток размеров, которые указывали бы, какие единицы подразумеваются.

Другие вопросы по тегам