Uma rotina que altera o dxf duma entidade:
(defun remake-ent (ent dx val / tmp new entl)
(if (setq ent (ename-of ent))
(progn
(setq entl (entget ent ‘(“*”))
val (if (listp dx) val (list val))
dx (if (listp dx) dx (list dx)))
(repeat (max (length dx) (length val))
(setq tmp (assoc (car dx) entl)
new (cons (car dx) (car val))
entl (if tmp
(subst new tmp entl)
(append entl (list new)))
dx (if (= 1 (length dx)) dx (cdr dx))
val (if (= 1 (length val)) val (cdr val)))
(if (= -3 (car new))
(mapcar ‘regapp (mapcar ‘car (cdr new)))))
(entmod entl)
(entupd ent)
(cdr (assoc 5 entl)))))
na verdade, ela altera DXFs em lotes também, não necessáriamente uma de cada vez… exemplo: (remake-ent ename_linha ‘(10 11) ‘((10.2 3.0) (45.2 2.4)))
esta rotina eu fiz quando estava aprendendo a programar em visual lisp, hoje estou usando pouco ela… estou preferindo usar VL em vez de entmod e entupd… mas em alguns casos, esta rotina é muito mais prática