어쩌다 같은 도면들이 겹쳐져 버렸습니다.
일일이 다 겹쳐진 갯수만큼 선을 지울 수도 없구…
혹시나 하며 이렇게 도움을 청합니다.
아마두 copy를 제자리에다 한거 같은데….흑흑
방법이 있을까요?
공유
비밀번호를 잊으셨나요? 비밀번호를 재설정하려면 이메일 주소를 입력해주세요.
해당 질문을 신고하는 이유를 간단히 입력해주세요.
해당 답변을 신고하는 이유를 간단히 입력해주세요.
해당 유저를 신고하는 이유를 간단히 입력해주세요.
copy를 하고 난 후 바로 erase명령으로 select object에서 p(previous-방금전 선택한 개체)를 하면 이중으로 덮어씌어진 위의 것이 지워질 겁니다. 하지만 copy후 다른 명령으로 다른개체를
선택한 후라면 소용없습니다.
[CTRL]키를 누른상태로 겹쳐진 선을 계속 선택하게 되면, 차례대로 순환이
되면서 선택이 됩니다.
____________________________
Command: ERASE
Select objects: <Cycle on> ←[CTRL]키를 누른 상태로 계속 선택..
<Cycle off>1 found
Select objects:
____________________________
만일 작업이 많이 진행되지 않았다면 undo를 하시는 것도….. 하지만 어떤 방법이 더빠른지는 님이 선택하시길..
으따~ 어딘가에 중복선 지워주는 리습이 떠돌아 댕기는걸 내 봤소….
리습을 찾아서 이용하는게 정신건강에 좋을듯….
조언 감사합니다…
아래와 같은 리습을 찾았습니다.(아마 빌린인생님께서 올리신)
실행은 되는데 그것은 PLINE과 BLOCK과 TEXT의 중복된거를 지우는것만 되구
그냥 선들은 안지워지는데 어쩌야 할까요?
좀전에 어떤님께서 올려주신 방법은 선이 한두개가 아니라 불가능하구
리습으로밖에 안될꺼 같으데…
부탁드립니다…
—————————————————
;;C:PX 한점으로 몰린 두점 PLINE지우기 !!
;;C:PD 중복된 VERTEX 를 가진 Pline 지우기 !!
;;C:BD 한점에서 중복된 BLOCK,TEXT 지우기 !!
;;C:TD 한점에서 중복된 BLOCK,TEXT 지우기 !!
;;C:Xdel 전부다 돌리기
(defun c:xdel()
(c:pd)
(c:bd)
)
(defun c:pd(/ a i al tt ke xy xy_list w_list k j)
(command "cmdecho" 0)
(command "undo" "g")
(setq a (ssget '((0 . "LWPOLYLINE"))))
(if (null a)
(setq a (ssget "x" '((0 . "LWPOLYLINE"))))
)
(if (null a) (exit))
(setq al (sslength a)
i 0
j 0
tt 0
)
(princ "n총처리 pline :: ")(princ al)(princ " 중 중복된 POLYLINE을 지웁니다.n")
(while (> al i)
(setq en (ssname a i)
ent (entget en)
la (cdr (assoc 8 ent))
i (1+ i)
j (1+ j)
w_list nil
)
(foreach k ent
(if (= 10 (car k)) (setq w_list (append w_list (list (cdr k)))))
)
(setq w_list (append w_list (list la)))
(if (member w_list xy_list)
(setq tt (1+ tt)
a (ssdel en a)
al (1- al)
en (entdel en)
i (1- i)
)
(setq xy_list (append xy_list (list w_list)))
)
(princ "현처리 pline :: ")(princ j) (princ "r")
)
(princ "n")
(princ "지워진 pline :: ")(princ tt) (princ "n")
(command "undo" "e")
(princ)
)
(defun c:px( / a i al tt ke j k k1 en ent xy_end xy)
(command "undo" "g")
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setq a (ssget "x" '((0 . "lwpolyline"))))
(if (null a) (exit))
(setq al (sslength a)
i 0
j 0
k1 0
tt 0
)
(princ "n총처리 pline :: ")(princ al)(princ " 중 2개의 중복된 VERTEX를 가진 LINE을 지웁니다.n")
(while (> al i)
(setq en (ssname a i)
ent (entget en)
j (1+ j)
xy (cdr (assoc 10 ent))
k1 0
)
(foreach k ent
(if (= 10 (car k)) (setq xy_end (cdr k) k1 (1+ k1)))
)
(if (and (<= k1 2) (equal xy xy_end))
(setq tt (1+ tt)
a (ssdel en a)
al (1- al)
en (entdel en)
)
(setq i (1+ i))
)
(princ "현처리 pline :: ")(princ j) (princ "r")
)
(princ "n")
(princ "지워진 pline :: ")(princ tt) (princ "n")
(command "undo" "e")
(princ)
)
(defun c:BD( / en ent xy ang i al tt ke j xy_list k w_list)
(command "undo" "g")
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setq a (ssget "x" '((0 . "INSERT,TEXT"))))
(if (null a) (exit))
(setq al (sslength a)
i 0
j 0
tt 0
)
(princ "n총처리 Block,Text :: ")(princ al)(princ " 중 중복된 BLOCK을 지웁니다.n")
(while (> al i)
(setq en (ssname a i)
ent (entget en)
j (1+ j)
xy (cdr (assoc 10 ent))
name (cdr (assoc 2 ent))
w_list (list xy name)
)
(if (member w_list xy_list)
(setq tt (1+ tt)
a (ssdel en a)
al (1- al)
en (entdel en)
)
(setq xy_list (append xy_list (list w_list)) i (1+ i))
)
(princ "현처리 Block,Text :: ")(princ j) (princ "r")
)
(princ "n")
(princ "지워진 Block,Text :: ")(princ tt) (princ "n")
(command "undo" "e")
(princ)
)
(defun c:td( / en ent a b bl bn i al tt ke j w_list )
(command "undo" "g")
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setq a (ssget "x" '((0 . "text")(1 . ""))))
(if a (command "erase" a ""))
(setq a (ssget "x" '((0 . "TEXT"))))
(if (null a) (exit))
(setq al (sslength a)
i 0
j 0
tt 0
ke (ssadd)
)
(setvar "cecolor" "bylayer")
(setvar "celtype" "bylayer")
(princ "n총처리 Text :: ")(princ al)(princ "n")
(while (> al i)
(setq en (ssname a i)
ent (entget en)
i (1+ i)
xy (cdr (assoc 10 ent))
handle (cdr (assoc 5 ent))
layer (cdr (assoc 8 ent))
ang (cdr (assoc 50 ent))
size (cdr (assoc 40 ent))
text (cdr (assoc 1 ent))
xy0 (caadr (textbox ent))
xy1 (polar xy ang xy0)
xy2 (polar xy1 (+ (/ pi 2) ang) size)
xy3 (polar xy (+ (/ pi 2) ang) size)
xyc (polar xy (angle xy xy2) (/ (distance xy xy2) 2))
)
(command "zoom" "c" xyc (* xy0 2))
(setq b (ssget "cp" (list xy xy1 xy2 xy3 xy) (list (cons 1 text)(cons 8 layer))))
(if b (progn
(setq bl (sslength b)
j 0)
(while (> bl j)
(setq bn (ssname b j)
bent (entget bn)
bhand (cdr (assoc 5 bent))
j (1+ j)
)
(if (/= bhand handle)
(setq tt (1+ tt)
j (1+ j)
a (ssdel bn a)
bn (entdel bn)
al (1- al)
)
)
)
))
(princ "현처리 Text :: ")(princ i)(princ "r")
)
(command "zoom" "e")
(princ "n")
(princ "지워진 Text :: ")(princ tt) (princ "n")
(command "undo" "e")
(princ)
)
(defun c:SD()
(setvar "cmdecho" 0)
(command "undo" "g")
(setq ss (ssget "x" '((0 . "TEXT"))))
(if (null ss) (exit))
(setq ssl (sslength ss)
i 0
k 0)
(princ "n 총처리 Text :: ")(princ ssl)(princ "n")
(while (> ssl i)
(setq en (ssname ss i)
ent (entget en)
tv1 (cdr (assoc 1 ent))
tv tv1
i (1+ i)
)
(if (/= tv1 "")(progn
(setq tl 1)
(while (= (substr tv tl 1) " ")
(setq tv (substr tv 2))
)
(if (= tv "") (entdel en))
(if (/= tv tv1)
(setq ent (subst (cons 1 tv) (assoc 1 ent) ent)
ent (entmod ent)
k (1+ k))
)
(setq tv tv1)
(setq tl (strlen tv))
(while (= (substr tv tl) " ")
(setq tv (substr tv 1 (1- tl)))
(setq tl (1- tl))
)
(if (= tv "") (entdel en))
(if (/= tv tv1)
(setq ent (subst (cons 1 tv) (assoc 1 ent) ent)
ent (entmod ent)
k (1+ k)
)
)
)
(progn
(setq k (1+ k))
(entdel en)
))
(princ "r 현처리 Text :: ")(princ i) (princ " 중:")(princ k)(princ "수정 ")
)
(command "undo" "e")
(princ)
)
(princ "C:PX 한점으로 몰린 두점 PLINE지우기 !!n")
(princ "C:TD 한점에서 중복된 BLOCK,TEXT 지우기 !!n")
(princ "C:BD 한점에서 중복된 BLOCK,TEXT 지우기 !!n")
(princ "C:PD 중복된 vertext를 가진 PLINE지우기 !!n")
(princ "C:SD TEXT 중 뒤부분 Space를 지우기!!n")
(princ "C:Xdel BD PD 둘 돌리기 !!n")(princ)
(setq a (ssget ‘((0 . “LWPOLYLINE”)))) 이렇게 되어있는두곳을 (setq a (ssget ‘((0 . “LWPOLYLINE,line,circle,arc”))) 이렇게 바꿔보세요.
정말 고맙습니다….선들이 지워졌네요….근데 단지 있어야 할 몇몇 선들이 같이 사라지네요…아무튼, 정말 감사해요…
line하면 큰일 나지 않나요?