블럭안의 모든 치수선 삭제(중첩블럭포함)
페이지 정보
작성자 장헌종 댓글 3건 조회 1,766회 작성일 22-10-19 15:54본문
안녕하세요
지캐드는 무지 감사하게 잘 사용하고 있습니다.
제목의 리습 부탁드려도 될까요?
제작도면을 복붙하면 치수선을 일일이 삭제해야 하는 불편이 있습니다.
아래 리습은 아키모아에서 수정해 주신 것으로
블럭내 모든 레이어를 0으로, 색상은 BYBLOCK로 바꾸는 것인데요.
이것도 아주 잘 사용하고 있습니다.
이것 이용하면 될 것도 같은데..
제 능력으로는 안되네요..
(이 것은 안 봐주셔도 됩니다요
다른 리습은 안그런데 이 리습만 조금 이상한게 하나 있기도 합니다.
도면을 새로 열면 아래 리습이 실행안되고 항상 리습을 통채로 로드를 다시 해야 합니다.
한 파일에 리습 50여개 있을 겁니다.
다른 리습은 도면 새로 여는 것이랑 상관없는데 이것만 이럴 수도 있나요?)
감사합니다.
;************************* 멀티 L0 ****************************
; Written By: Tom Beauford
; Changes all block entities to layer "0" with color, linetype & lineweight ByBlock
; 2016-02-16, Edit by izzarder.com, 블럭 안의 블럭의 겉보기 레이어가 0이 아닌 경우도 변경되도록..
(defun C:L0 (/ SSET intCount ENAM ELST BNAM FLST FIX1)
;;;--------------------------------------------------------------------------;
(defun FIX1 (BNAM / BENAM BONAM)
(if (not (member BNAM FLST))
(progn
(setq
FLST (cons BNAM FLST)
BENAM (tblobjname "block" BNAM)
)
(while (setq BENAM (entnext BENAM))
(if (= (cdr (assoc 0 (entget BENAM))) "INSERT")
(progn
(setq BONAM(vlax-ename->vla-object BENAM))
(vl-catch-all-apply 'vla-put-layer (list BONAM "0"))
(vl-catch-all-apply 'vla-put-color (list BONAM 0))
(fix1 (cdr (assoc 2 (entget BENAM))))
)
(progn
(setq BONAM(vlax-ename->vla-object BENAM))
(vl-catch-all-apply 'vla-put-layer (list BONAM "0"))
(vl-catch-all-apply 'vla-put-color (list BONAM 0))
)
)
)
)
)
)
;;;--------------------------------------------------------------------------;
(setvar 'cmdecho 0)
(if (setq SSET (ssget (list (cons 0 "INSERT"))))
(progn
(vl-cmdf "_.undo" "_BEgin")
(repeat (setq intCount (sslength SSET))
(setq intCount (1- intCount)
ENAM (ssname SSET intCOunt)
ELST (entget ENAM)
BNAM (cdr (assoc 2 ELST))
FLST nil
)
(fix1 BNAM)
)
(vl-cmdf "_.undo" "_End")
(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)
)
)
(setvar 'cmdecho 1)
(princ)
)
지캐드는 무지 감사하게 잘 사용하고 있습니다.
제목의 리습 부탁드려도 될까요?
제작도면을 복붙하면 치수선을 일일이 삭제해야 하는 불편이 있습니다.
아래 리습은 아키모아에서 수정해 주신 것으로
블럭내 모든 레이어를 0으로, 색상은 BYBLOCK로 바꾸는 것인데요.
이것도 아주 잘 사용하고 있습니다.
이것 이용하면 될 것도 같은데..
제 능력으로는 안되네요..
(이 것은 안 봐주셔도 됩니다요
다른 리습은 안그런데 이 리습만 조금 이상한게 하나 있기도 합니다.
도면을 새로 열면 아래 리습이 실행안되고 항상 리습을 통채로 로드를 다시 해야 합니다.
한 파일에 리습 50여개 있을 겁니다.
다른 리습은 도면 새로 여는 것이랑 상관없는데 이것만 이럴 수도 있나요?)
감사합니다.
;************************* 멀티 L0 ****************************
; Written By: Tom Beauford
; Changes all block entities to layer "0" with color, linetype & lineweight ByBlock
; 2016-02-16, Edit by izzarder.com, 블럭 안의 블럭의 겉보기 레이어가 0이 아닌 경우도 변경되도록..
(defun C:L0 (/ SSET intCount ENAM ELST BNAM FLST FIX1)
;;;--------------------------------------------------------------------------;
(defun FIX1 (BNAM / BENAM BONAM)
(if (not (member BNAM FLST))
(progn
(setq
FLST (cons BNAM FLST)
BENAM (tblobjname "block" BNAM)
)
(while (setq BENAM (entnext BENAM))
(if (= (cdr (assoc 0 (entget BENAM))) "INSERT")
(progn
(setq BONAM(vlax-ename->vla-object BENAM))
(vl-catch-all-apply 'vla-put-layer (list BONAM "0"))
(vl-catch-all-apply 'vla-put-color (list BONAM 0))
(fix1 (cdr (assoc 2 (entget BENAM))))
)
(progn
(setq BONAM(vlax-ename->vla-object BENAM))
(vl-catch-all-apply 'vla-put-layer (list BONAM "0"))
(vl-catch-all-apply 'vla-put-color (list BONAM 0))
)
)
)
)
)
)
;;;--------------------------------------------------------------------------;
(setvar 'cmdecho 0)
(if (setq SSET (ssget (list (cons 0 "INSERT"))))
(progn
(vl-cmdf "_.undo" "_BEgin")
(repeat (setq intCount (sslength SSET))
(setq intCount (1- intCount)
ENAM (ssname SSET intCOunt)
ELST (entget ENAM)
BNAM (cdr (assoc 2 ELST))
FLST nil
)
(fix1 BNAM)
)
(vl-cmdf "_.undo" "_End")
(vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)
)
)
(setvar 'cmdecho 1)
(princ)
)
댓글목록
이자더님의 댓글
이자더 작성일
올려 주신 것은 특이점이 없었습니다. 실행이 안된다는 것이 무슨 의미인지 적어 주시면 검토해 드릴게요.
그리고 xicad 내부에 bcc 라는 동일한 기능의 명령어를 사용하시면 될 것 같기도 하고요..
블럭 내의 특정 객체를 지우는 기능은 다음 버전에 추가해 놓겠습니다.
장헌종님의 댓글
장헌종 작성일
xicad가 워낙 좋아서 기능의 극히 일부만 사용하고 있습니다.
bcc가 이미 있는줄 몰랐네요.
실행이 안된다는 것이 무슨 의미인지 적어 주시면 검토해 드릴게요. ← 앞으로는 bcc 사용하겠습니다.
블럭 내의 특정 객체를 지우는 기능은 다음 버전에 추가해 놓겠습니다. ← 감사합니다.
이자더님의 댓글
이자더 작성일v4.63 반영