;; XiCAD 에 사용된 보조 함수 중 선택 세트의 DXF 코드 내용을 변경하는 보조함수 ;; 사용방식 : (xi:SubUpd 객체 DXF코드 변경할내용) ;; 사례1 : 원의 반경을 500 으로 변경 ;; (xi:SubUpd (car (entsel"\n>> 원 선택: ")) 40 500) ;; 사례2 : 문자 내용을 "가나다라" 로 변경 ;; (xi:SubUpd (car (entsel"\n>> 문자 선택: ")) 1 "가나다라") ;; 사례3 : 선의 시작 점을 (0 0 0) 으로 변경 ;; (xi:SubUpd (car (entsel"\n>> 시작점을 변경할 선을 선택: ")) 10 '(0 0 0)) ;; ssget 도 사용가능 ;; (xi:SubUpd (ssget) 62 1) ;; izzarder.com ;; xi:getDXF (xi:getDXF code ename) (defun xi:getDXF (code ename / ent lst a) (if (= (type code) 'LIST) (progn (setq ent (entget ename) lst '() ) (foreach a code (setq lst (cons (list a (cdr (assoc a ent))) lst)) ) (reverse lst) ) (if (= code -3) (cdr (assoc code (entget ename '("*")))) (cdr (assoc code (entget ename))) ) ) ) (defun xi:SubUpd (ename code val / ent x y i s1) (cond ((= (type ename) 'ENAME) (setq ent (entget ename)) (if (and (= (type code) 'LIST) (= (type val) 'LIST)) (mapcar '(lambda (x y) (xi:SubUpd ename x y)) code val) (progn (if (= (xi:getdxf code ename) nil) (entmod (append ent (list (cons code val)))) (entmod (subst (cons code val) (assoc code ent) ent)) ) (entupd ename) ) ) ) ((= (type ename) 'PICKSET) (setq i -1) (while (setq s1 (ssname ename (setq i (1+ i)))) (xi:SubUpd s1 code val) ) ) ((= (type ename) 'LIST) (foreach s1 ename (xi:SubUpd s1 code val)) ) ) ename ) (princ)
'Lisp & Tips > Lisp' 카테고리의 다른 글
vla-get-blocks 과 그 내용 (0) | 2015.09.09 |
---|---|
블럭의 삽입점을 좌표로 받는 네가지 방법 (0) | 2015.07.28 |
오토캐드 배경색 변경 (1) | 2015.02.18 |
mapcar 의 활용예 - 문자남기고 삭제 (0) | 2015.02.12 |
치수관련 변수 목록 (0) | 2015.01.03 |