remake-ent

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

Deixe um comentário

Carrinho de compras
Rolar para cima