И почему я не люблю расширенные данные?

На днях на работе всплыл вопрос - что такое расширенные данные, как с ними работать, что это дает и чем это грозит.

Вроде бы все просто - 16 кб данных, дербанятся на все приложения, можно загонять разные типы данных... Ну что я рассказываю - достаточно запустить ExpressTools, команда (если не ошибаюсь) "Attach Data" (или _xdata) и дальше просто внимательно смотреть на командную строку. Именно этот вариант развития событий и разберу.

И вот именно тут - если ооочень внимательно смотреть! - вылезает очень интересный момент.

Одна из опций предлагает вариант внесения слоя (Layer).

Отлично! Создаем слои с именем, к примеру, "1234", цвет 1 (два и более слоев создавать смысла особого нет). Теперь создаем отрезок на слое "0", на который собственно и "навешиваем" РД:

Теперь выполним

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, задаем новое имя - и все равно не удалить. До тех пор, пока не будет удален либо примитив, либо РД с него.

Таким (или подобным) образом можно создать "неудаляемые" слои в документе, - что сильно может осложнить жизнь кому угодно. Добавим сюда неудержимую фантазию программистов - и концы можно будет искать очень долго ;)



Поделитесь своим мнением


Я не робот.