У меня есть файл САПР в формате DXF (rev 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
в своем средстве просмотра, тогда все усложняется.
Ваш начальный "масштабный" размер в вашем средстве просмотра может быть определен из информации заголовка, которую вы показали: 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 spec или любой другой версии. вам нужно знать, что означают эти значения. Если вы перейдете на страницу «Коды групп раздела заголовка» и выполните поиск по запросу «единицы», вы сможете найти список всех типов единиц. Например:
$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, вам просто нужно будет принять произвольное решение о том, какие единицы измерения; при условии, что на ваших чертежах нет меток с размерами, которые указывали бы, какие единицы измерения подразумеваются.
Measure
?
Похожие вопросы
Новые вопросы
scale
Тег масштаба в основном используется для вопросов, связанных с пропорциональным изменением размеров изображений или элементов пользовательского интерфейса. Он также используется для вопросов, связанных с функцией scale () на языке R.