;;; SSMOD changes DXF values of AutoCAD drawing entities ;;; usage: (ssmod dxf-code new-value ;;; ;;; (ssmod (ssget) 8 "NEWLAYER") moves the selected entities to ;;; layeer NEWLAYER ;;; (ssmod (ssget '((0 . "INSERTION"))) 2 "NEWBLOCKREF") changes ;;; the references for selected block insertions to "NEWBLOCKREF" ;;; (ssmod (ssget '((0 . "INSERTION"))) 10 '(0 0 0)) changes ;;; the insertion point for selected block insertions to 0,0,0 (defun ssmod (ss dxf val) (mapent '(lambda (ename) (ssmodent ename dxf val) ) ss ) ) (defun mapent (fun ss / i) (repeat (setq i (sslength ss)) ((lambda (proc args / ss fun i) (apply proc args ) ) fun (list (ssname ss (setq i (1- i)))) ) ) ) (defun ssmodent (ename dxf val / old) (if (setq old (assoc dxf (entget ename))) (entmod (subst (cons dxf val) old (entget ename) ) ) (entmod (cons (cons dxf val) (entget ename))) ) ) (defun ss2el (ss / res) (mapent (function (lambda (en) (setq res (cons en res)))) ss ) res ) (defun newscale (sset xyz /) (mapent (function (lambda (x) (if (= "INSERT" (cdr (assoc 0 (entget x)))) (progn (if (car xyz) (ssmodent x 40 (car xyz)) ) (if (cadr xyz) (ssmodent x 41 (cadr xyz)) ) (if (caddr xyz) (ssmodent x 42 (cddar xyz)) ) (while (= "ATTRIB" (cdr (assoc 0 (entget (setq en (entnext x))))) ) (if (car xyz) (ssmodent en 40 (car xyz)) ) (if (cadr xyz) (ssmodent en 41 (cadr xyz)) ) (if (caddr xyz) (ssmodent en 42 (cddar xyz)) ) ) ) ) ) ) ) ) (defun c:newscale () (if (setq sset (ssget '((0 . "INSERT")))) (progn (if (setq xyz (getpoint "\nSkalierung X,Y(,Z): ")) (newscale sset xyz) ) ) ) (prin1) )