И почему я не люблю расширенные данные?
На днях на работе всплыл вопрос - что такое расширенные данные, как с ними работать, что это дает и чем это грозит.
Вроде бы все просто - 16 кб данных, дербанятся на все приложения, можно загонять разные типы данных... Ну что я рассказываю - достаточно запустить ExpressTools, команда (если не ошибаюсь) "Attach Data" (или _xdata) и дальше просто внимательно смотреть на командную строку. Именно этот вариант развития событий и разберу.
И вот именно тут - если ооочень внимательно смотреть! - вылезает очень интересный момент.
Одна из опций предлагает вариант внесения слоя (Layer).
Отлично! Создаем слои с именем, к примеру, "1234", цвет 1 (два и более слоев создавать смысла особого нет). Теперь создаем отрезок на слое "0", на который собственно и "навешиваем" РД:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Command: XDATA Select object: Enter application name: app001 APP001 new application. Enter an option [3Real/DIR/DISP/DIST/Hand/Int/LAyer/LOng/Pos/Real/SCale/STr/eXit] <eXit>: _la Enter layer name: 1234 Invalid layer name - layer must exist. Enter an option [3Real/DIR/DISP/DIST/Hand/Int/LAyer/LOng/Pos/Real/SCale/STr/eXit] <eXit>: |
Теперь выполним
1 | _$ (entget (car (entsel)) '("*")) |
И получим на выходе нечто типа
1 2 3 4 5 6 7 8 9 10 11 | '((0 . "LINE") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbLine") (10 1442.71 1202.91 0.0) (11 4220.17 2501.87 0.0) (210 0.0 0.0 1.0) (-3 ("APP001" (1002 . "{") (1003 . "1234") (1002 . "}"))) ) |
Ок, отлично! Копируем этот отрезок в буфер обмена, создаем новый документ, и тут же вставляем из буфера отрезок. Вуаля! В новом документе появляется новый слой "1234" (ничего не напоминает?), который удалить невозможно. Ну, по крайней мере, штатными средствами
Попробуем переименовать? Да не вопрос: _.rename, задаем новое имя - и все равно не удалить. До тех пор, пока не будет удален либо примитив, либо РД с него.
Таким (или подобным) образом можно создать "неудаляемые" слои в документе, - что сильно может осложнить жизнь кому угодно. Добавим сюда неудержимую фантазию программистов - и концы можно будет искать очень долго