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

Nenhum comentário:

Postar um comentário