;—UG에서 전환한 2D 레이어 관리하기————————————-
(defun c:wq (/ selx i1 e1 e2 sel5d selnew
elis1 elis2 elis3 elis4 elis5 elis6 elis7
selall ssla a21 cenp1 crad1 al1 stpt
endpt lenght os
)
(if (null ai_angtos)(load “ai_utils”))
(alert
“n UG에서 DRAWING된 도면을 Auto CAD환경으로 변환합니다.
n Green –> Layer 0
n RED –> Layer 2
n Yellow –> Layer 3
n Blue –> Layer 5
n 기타 –> Layer 4
“
)
(command “undo” “group”)
(setq cmd (getvar “cmdecho”))
(setvar “cmdecho” 0)
(setq os (getvar “osmode”))
(setvar “osmode” 0)
(setq ssla (tblsearch “layer” “2”))
(if (= ssla nil)
(command “layer” “m” “1” “c” “red” “” “l” “center2” “” “”)
(setq ssla nil)
)
(setq ssla (tblsearch “layer” “3”))
(if (= ssla nil)
(command “layer” “m” “aa” “c” “8” “” “l” “hidden” “” “”)
(setq ssla nil)
)
(setq ssla (tblsearch “layer” “4”))
(if (= ssla nil)
(command “layer” “m” “4” “c” “4” “” “l” “continuous” “” “”)
(setq ssla nil)
)
(setq ssla (tblsearch “layer” “0L”))
(if (= ssla nil)
(command “layer” “m” “5” “c” “5” “” “l” “continuous” “” “”)
)
(setvar “layer” “0”)
;;; Layer 변환 시작 ;;;
(setq selall (ssget “X”))
(setq i1 0 e1 nil)
(setq e1 (sslength selall))
(while (/= i1 e1)
(setq e2 (entget (ssname selall i1)))
(cond ((or (= (cdr (assoc 62 e2)) 3) (= (cdr (assoc 62 e2)) 72))
(setq elis5 (subst (cons 8 “0”) (assoc 8 e2) e2))
(setq
elis6
(subst (cons 6 “bylayer”) (assoc 6 elis5) elis5)
)
(setq elis7 (subst (cons 62 256) (assoc 62 elis6) elis6))
(entmod elis7)
)
((or (= (cdr (assoc 62 e2)) 2) (= (cdr (assoc 62 e2)) 53))
(setq elis5 (subst (cons 8 “3”) (assoc 8 e2) e2))
(setq elis6 (subst (cons 6 “bylayer”) (assoc 6 elis5) elis5))
(setq elis7 (subst (cons 62 256) (assoc 62 elis6) elis6))
(entmod elis7)
)
((or (= (cdr (assoc 62 e2)) 22) (= (cdr (assoc 62 e2)) 213))
(setq elis5 (subst (cons 8 “2”) (assoc 8 e2) e2))
(setq elis6 (subst (cons 6 “bylayer”) (assoc 6 elis5) elis5))
(setq elis7 (subst (cons 62 256) (assoc 62 elis6) elis6))
(entmod elis7)
)
((or (= (cdr (assoc 62 e2)) 5) (= (cdr (assoc 62 e2)) 163))
(setq elis5 (subst (cons 8 “0L”) (assoc 8 e2) e2))
(setq
elis6
(subst (cons 6 “bylayer”) (assoc 6 elis5) elis5)
)
(setq elis7 (subst (cons 62 256) (assoc 62 elis6) elis6))
(entmod elis7)
)
((= (cdr (assoc 62 e2)) nil)
)
(t
(setq elis5 (subst (cons 8 “4”) (assoc 8 e2) e2))
(setq
elis6
(subst (cons 6 “bylayer”) (assoc 6 elis5) elis5)
)
(setq elis7 (subst (cons 62 256) (assoc 62 elis6) elis6))
(entmod elis7)
)
)
(setq i1 (+ 1 i1))
)
(setq selall nil)
;;; Layer 변환 끝 ;;;
;;; Cir2e이나 Arc의 진행 방향성 통일 시작 ;;;
(setq selx (ssget “X” (list (cons 210 (list 0.0 0.0 -1.0)))))
(if (/= selx nil)
(progn
(setq i1 0 e1 nil)
(setq e1 (sslength selx))
(while (/= i1 e1)
(setq e2 (entget (ssname selx i1)))
(if (or (= (cdr (assoc 0 e2)) “ARC”)
(= (cdr (assoc 0 e2)) “CIR2E”)
)
(progn
(setq aa (cdr (assoc 10 e2)))
(setq aa1 (car aa))
(setq aa1_1 (* aa1 -1))
(setq aa0 (subst aa1_1 aa1 aa))
(setq sel5d1 (assoc 10 e2))
(setq selnew1 (cons 10 aa0))
(setq elis1 (subst selnew1 sel5d1 e2))
(setq aaa (cdr (assoc 210 elis1)))
(setq aaa1 (caddr aaa))
(setq aaa1_1 (* aaa1 -1))
(setq aaa0 (subst 1.0 aaa1 aaa))
(setq sel5d (assoc 210 elis1))
(setq selnew (cons 210 aaa0))
(setq elis2 (subst selnew sel5d elis1))
(entmod elis2)
(if (= (cdr (assoc 0 e2)) “ARC”)
(progn
(setq po1 (cdr (assoc 50 elis2)))
(setq po1 (- pi po1))
(setq po2 (cdr (assoc 51 elis2)))
(setq po2 (- pi po2))
(setq
elis3 (subst (cons 50 po2) (assoc 50 elis2) elis2)
)
(setq
elis4 (subst (cons 51 po1) (assoc 51 elis3) elis3)
)
(entmod elis4)
) ;progn
) ;if
)
)
(setq i1 (+ 1 i1))
)
)
)
(setq selx nil)
;;; Cir2e이나 Arc의 진행 방향성 통일 끝 ;;;
;;; UG 오류 ARC를 Cir2e로 변환 시작 ;;;
(setq selall (ssget “X”))
(setq i1 0 e1 nil)
(setq e1 (sslength selall))
(while (/= i1 e1)
(setq e2 (entget (ssname selall i1)))
(if (= (cdr (assoc 0 e2)) “ARC”)
(if (= (ai_angtos (abs (cdr (assoc 50 e2))))
(ai_angtos (abs (cdr (assoc 51 e2))))
)
(progn (setq a21 (cdr (assoc 8 e2))
cenp1 (cdr (assoc 10 e2))
crad1 (cdr (assoc 40 e2))
)
(entdel (ssname selall i1))
(command “layer” “s” a21 “” “cir2e” cenp1 crad1)
(setq al1 nil)
)
)
)
(setq i1 (+ 1 i1))
)
(setq selall nil)
;;; UG 오류 ARC를 Cir2e로 변환 끝 ;;;
;;; 0.01이하 Object 삭제 시작 ;;;
(setq selall (ssget “X”))
(setq i1 0 e1 nil)
(setq e1 (sslength selall))
(while (/= i1 e1)
(setq e2 (entget (ssname selall i1)))
;;;cir2e
(if (or (= (cdr (assoc 0 e2)) “CIR2E”)
(= (cdr (assoc 0 e2)) “ARC”)
)
(progn
(setq crad1 nil
crad1 (cdr (assoc 40 e2))
)
(if (<= crad1 0.01)
(entdel (ssname selall i1))
)
)
)
;;;line
(if (= (cdr (assoc 0 e2)) “LINE”)
(progn
(setq stpt nil
endpt nil
stpt (cdr (assoc 10 e2))
endpt (cdr (assoc 11 e2))
lenght (distance stpt endpt)
)
(if (<= lenght 0.01)
(entdel (ssname selall i1))
)
)
)
(setq i1 (+ 1 i1))
)
;;; 0.01이하 Object 삭제 끝 ;;;
(command “zoom” “e”)
(command “purge” “a” “” “n”)
(setvar “OSMODE” os)
(command “undo” “e”)
(setvar “cmdecho” cmd)
(princ)
)