Единицы против реального мира
У меня есть файл 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, вам просто нужно будет принять произвольное решение о том, что такое единицы измерения; при условии, что на ваших чертежах нет меток размеров, которые указывали бы, какие единицы подразумеваются.