Кому интересно чуть-чуть утренней нудности, добро пожаловать…
Проснувшись с утра и налив чашечку кофе, заглянул на свой любимый forum.nanocad.ru и обнаружил мольбу о помощи — мол, nanoCAD не отображает чертеж из AutoCAD. Точнее отображает, но не всё: «кто уже боролся с подобным явлением, подскажите рецепт»… Подозревая, в чем дело, отставил кофе в сторону и загрузил *.dwg-чертеж для исследования.
Итак, дан *.dwg-чертеж неизвестного происхождения, который плохо отображается в nanoCAD (можно взять на форуме: forum.nanocad.ru/index.php?app=core&module=attach§ion=attach&attach_id=5451). Надо выяснить, почему не все отображается и что с этим делать…
Первым делом загружаю nanoCAD Plus 6.0, нажимаю Открыть и поднимаю чертеж. Грузится быстро, отображается явно не всё (рис. 1).
Пытаюсь взглянуть на чертеж сбоку (команда View → Стандартные виды → Спереди): бах — поле чертежа превращается в белый экран, курсор на нем не отображается. Все понятно: выбило видеоподсистему у nanoCAD. Возвращаюсь в вид сверху (команда View → Стандартные виды → Сверху). Закрываю документ.
Ради интереса смотрим в AutoCAD 2015. Загружаем: вроде показывает больше. Смотрим сбоку: программа отображает вертикальную полосу, координаты в строке состояния не воспроизводятся. Но если панорамировать, то можно выхватить координаты в строке состояния (рис. 2) — на минуточку: там -1.284e+81 (то есть единица с 81 нулем)!
Закрываю документ — все ясно. Диагноз: в файле z-координаты разбросаны случайным образом по огромному диапазону. AutoCAD такие файлы как-то отображает (все ли?), nanoCAD честно показывает только разумные координаты, намекая на проблемность документа.
*.dwg-документ явно испорчен, пользователь обычно в таких случаях говорит: «А что я? Я ничего — просто открыл». Виновных, конечно, не найти, остается исправлять…
В nanoCAD Plus 6.0 мы ввели команду ПРОВГЕОМ, которая позволяет обнулить координаты: заходим в Файл → Утилиты → Проверка геометрии, выбираем опцию Проверка z-координаты, затем — Исправлять ошибки → Да с допуском по умолчанию (1e+20), затем Enter… Что происходит?
Программа проходит по всем объектам и, если у них z-координата выбивается из указанного диапазона, переносит объект целиком вверх или вниз на выбившуюся z-координату. Это приводит к тому, что геометрия объекта не меняется, но сам объект возвращается «из космоса на землю». Даже после такой простейшей операции данные в чертеже тут же проявляются. Кроме того, появляется возможность взглянуть на чертеж сбоку — вот и визуализация проблемного *.dwg (рис. 3).
Еще красиво посмотреть на это в 3D (рис. 4).
Теперь объекты разбросаны по z-высоте «всего лишь» в диапазоне плюс-минус 1e+20 (то есть единица с 20 нулями). Понятно, что на таком файле не работают ни привязки, ни обрезка, ни поиск контура для штриховки, причем ни в AutoCAD, ни в nanoCAD — нигде. Что ж, повторяю операцию ПРОВГЕОМ сначала с допуском в 1000, потом в 100, затем в 10, и, наконец, в 0 — и вуаля, чертеж исправлен полностью (рис. 5). (forum.nanocad.ru/index.php?app=core&module=attach§ion=attach&attach_id=5455).
Умные люди скажут, что в AutoCAD есть похожая команда FLATTEN (из Express Tools). Да, конечно, есть, но… FLATTEN меняет геометрию чертежа, делая проекцию геометрии на нулевую плоскость — этим она и опасна. Например, если в документе были 3D-объекты (к примеру, линия, один конец которой лежит на высоте 100, а второй — на 3000), FLATTEN полностью разрушит 3D-представление модели (то есть опустит концы точек на нулевую плоскость), а ПРОВГЕОМ перенесет в нулевую плоскость только те объекты, которые выходят за указанный диапазон! На примере с линией — у нее один конец будет лежать на нуле, а второй — на 2900. Таким образом, чертеж с 3D-данными не будет разрушен. Есть разница, и ее нужно понимать.
Кроме того, я прошелся по *.dwg-документу утилитой Проверка документа (AUDIT) — очень часто она исправляет ошибки базы данных. И еще можно воспользоваться инструментом Очистка документа (PURGE): в текущем документе куча неиспользуемых слоев, типов линий, блоков и прочего. Но все это уже на усмотрение пользователя.
Ну вот… кофе таки остыл…