Тема: Удаление/восстановление примитивов

В "дремучем" LISP'е есть функция

(entdel <ename>)

Первый ее вызов удаляет примитив ename, повторный - восстанавливает его.
А как быть с использованием ActiveX? Функции

(vla-delete <vlaObject>)
(vla-erase <vlaObject>)

удаляют оъект, но повторный их вызов возвращает

; ошибка: Ошибка Automation. Объект был стерт

или в английском оригинале

; error: Automation Error. Object was erased

Как восстановить только что удаленный объект?

Re: Удаление/восстановление примитивов

Вижу пока только один способ
1.Есть vla объект

(setq vla-obj(vlax-ename->vla-object(car(entsel)))

2.Запоминаем его имя как примитива

(setq obj (vlax-vla-object->ename vla-obj))

3.Стираем объектным методом

(vla-delete vla-obj)

4.Восстанавливаем примитив через дремучий лисп

(entdel obj)

Причем получение имени примитива через
vlax-vla-object->ename
после стирания выдает ошибку.

Re: Удаление/восстановление примитивов

Пример возможного использования

(defun erase-recover()
  (setq nbr (vl-remove-if 'listp
          (mapcar 'cadr
              (ssnamex (ssget)
                   )
              )
          )
    nbr (mapcar '(lambda(x)
               (list
             (vlax-ename->vla-object x) x)
               )
            nbr)
    )
  (mapcar '(lambda(x)
         (vla-delete (car x))
         )
         nbr)
  (vl-cmdf "regenall")
  (vl-cmdf "rtzoom");это для наглядности изменений
  (mapcar '(lambda(x)
         (entdel (cadr x))
         )
         nbr)
  )

Re: Удаление/восстановление примитивов

Причем получение имени примитива через
vlax-vla-object->ename после стирания выдает ошибку.

Это точно...
______________
Удачи.