Тема: удаление расширенных данных
Вопрос уже обсуждался, и вроде как удалить расширенные данные можно только вместе с примитивом. Но может все таки кто-то знает способ получше??
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → LISP → удаление расширенных данных
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Вопрос уже обсуждался, и вроде как удалить расширенные данные можно только вместе с примитивом. Но может все таки кто-то знает способ получше??
> serzh
Расширенные данные можно удалить не удаляя примитива.
(defun C:DEL_ALLXDATA ( / en e xe xn) (if (setq en (car (entsel))) (progn (setq e (entget en '("*"))) (setq xe (cdr (assoc -3 e))) (foreach x xe (entmod (append (entget en) (list (list -3 (list (car x)))))) ) )) (princ) )
> Александр Ривилис
да, как все просто. а я поискал на форуме, нашел темы в котоорых написано, что через entmod удалить нельзя и поверил наслово.
Никому блин верить нельзя.
А вот для удаления только своих расширенных данных (чуть переделанная от Fantomas):
(defun REMOVE_XDATA ( / ss) (princ (strcat "\n" "Select annotations to remove GEOL_DH extended data" ": ")); (setq ss (ssget '((-4 . "<OR") (-3 ("KAI13*ANN*")) ;тут еще кое-что было (-4 . "OR>") ) ));setq ss (if (and ss (> (sslength ss) 0)) (progn (setq i 0) (repeat (sslength ss) (DEL_XDATA (ssname ss i) '("KAI13*")) (setq i (1+ i)) );repeat (princ (strcat "\n" "Numbers of cleaned objects" ": " (itoa (sslength ss)))) ) (princ (strcat "\n" ="Nothing selected.")) ) );end of *** REMOVE_XDATA *** ; (defun DEL_XDATA (ent app / entlst tmplst) (setq entlst (entget ent app)) (foreach memb (cdr (assoc -3 entlst)) (setq tmplst (cons -3 (list (cons (car memb) nil))) entlst (subst tmplst (assoc -3 entlst) entlst) entlst (entmod entlst) );setq );foreach );end of *** DEL_XDATA ***
Здравствуйте, может кто-нибудь знает как удалить не все,
а конкретное приложение РД с помощью ActiveX?
Здравствуйте, может кто-нибудь знает как удалить не все,
а конкретное приложение РД с помощью ActiveX?
Посмотри здесь:
http://www.4d-technologies.com/techcenter/index.htm
[FONT=Arial]~'J'~[/FONT]
Посмотри здесь:
http://www.4d-technologies.com/techcenter/index.htm
Нашёл там только с помощью метода entmod.
Цитата
Посмотри здесь:
http://www.4d-technologies.com/techcenter/index.htm
Нашёл там только с помощью метода entmod.
Попробуй так (не проверял - не на чем)
(defun delregapp (apname / app del regapps) (vl-load-com) (setq regapps (vla-get-registeredapplications (vla-get-activedocument (vlax-get-acad-object)))) (if (zerop(vla-get-count regapps)) (exit)) (setq del nil) (vlax-for app regapps (if (eq (strcase (vla-get-name app))(strcase apname)) (progn (if (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-delete (list app)))) (setq del T))))) (if del (alert (strcat "Registered application " "\""apname "\"" " removed"))) (princ) )
Попробуй так (не проверял - не на чем)
Спасибо за участие!
Но vla-delete - не удаляет.
И прошу прощения что не уточнил,
но мне нужно удалить РД у выбранного элемента.
Посмотрите приложение 7 "Очистка расширенных данных" в книге "AutoLISP и Visual LISP в среде AutoCAD"
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → LISP → удаление расширенных данных
Форум работает на PunBB, при поддержке Informer Technologies, Inc