Тема: Как удалить/редактировать AutoCAD-Proxy-Entity при отсутствии Object Enabler?

Окольные пути есть: в настройках отключить загрузку приложений, затем создать новый чертеж, открыть dwg c Proxy-объектами, выбрать все и скопировать в новый чертеж, сохранить и закрыть. Вернуть старые настройки AutoCAD
Но хотелось бы цивилизованным способом Proxy-объекты переместить/удалить/разбить, заменить текст, т.е. универсальный Enabler под AutoCAD 2005-2006!

Re: Как удалить/редактировать AutoCAD-Proxy-Entity при отсутствии Object Enabler?

Попробуй так:

;|=============================================================================
*    Универсальная функция разбития proxy-объектов.
*    Параметры вызова:
*    нет
*    Примеры вызова:
(_kpblc-block-explode-proxy)
=============================================================================|;
(defun _kpblc-block-explode-proxy (/ selset item layer_list)
  (vl-load-com)
  (setq selset (ssget "_X" '((0 . "ACAD_PROXY_ENTITY"))))
  (vlax-for item
            (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
    (if (= (vla-get-lock item) :vlax-true)
      (setq layer_list (append layer_list '(item)))
      ) ;_ end of if
    ) ;_ end of vlax-for
  (while (and selset
              (> (sslength selset) 0)
              ) ;_ end of and
    (setq item (ssname selset 0))
    (ssdel item selset)
    (vla-explode (vlax-ename->vla-object item))
    ) ;_ end of while
  (foreach item layer_list
    (vla-put-lock item :vlax-true)
    ) ;_ end of foreach
  ) ;_ end of defun
;|=============================================================================
*    Сервисная функция для вызова из ком.строки
=============================================================================|;
(defun c:xproxy (/ adoc)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (_kpblc-block-explode-proxy)
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  ) ;_ end of defun

Re: Как удалить/редактировать AutoCAD-Proxy-Entity при отсутствии Object Enabler?

Тьфу ты, несколько строк потерял. Вот так будет лучше:

;|=============================================================================
*    Универсальная функция разбития proxy-объектов.
*    Параметры вызова:
*  нет
*    Примеры вызова:
(_kpblc-block-explode-proxy)
=============================================================================|;
(defun _kpblc-block-explode-proxy (/ selset item layer_list)
  (vl-load-com)
  (setq selset (ssget "_X" '((0 . "ACAD_PROXY_ENTITY"))))
  (vlax-for item
            (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))
    (if (= (vla-get-lock item) :vlax-true)
      (progn
        (setq layer_list (append layer_list '(item)))
        (vla-put-lock item :vlax-false)
        ) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of vlax-for
  (while (and selset
              (> (sslength selset) 0)
              ) ;_ end of and
    (setq item (ssname selset 0))
    (ssdel item selset)
    (vla-explode (vlax-ename->vla-object item))
    ) ;_ end of while
  (foreach item layer_list
    (vla-put-lock item :vlax-true)
    ) ;_ end of foreach
  ) ;_ end of defun
;|=============================================================================
*    Сервисная функция для вызова из ком.строки
=============================================================================|;
(defun c:xproxy (/ adoc)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (_kpblc-block-explode-proxy)
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  ) ;_ end of defun