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