블럭안의 치수만 지우는 방법입니다.

치수로 캐드의 입장에서는 하나의 블럭이기 때문에.. 이를 처리하는 과정을 잘 숙지하면 리습에 더 빨리 익숙해 질 수 있습니다.


아래 방법은 선택한 영역 안에서만 처리를 하는 방법이고,

;;;-----------------------------------------------------------------------------;
;; 블럭안의 치수만 지우는 두가지 방법
;; 출처:https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/delete-dimensions-inside-blocks/td-p/2840905
;;;-----------------------------------------------------------------------------;
(defun c:Test (/ ss i sn name lst)
  (vl-load-com)
;;;        ------ Tharwat 15. June. 2012 -----      ;;;
;;; codes to delete all dimensions entities in the  ;;;
;;;                selected blocks                  ;;;
   (if (not acdoc)
      (setq acdoc (vla-get-activedocument (vlax-get-acad-object)))
   )
   (if (setq ss (ssget "_:L" '((0 . "INSERT"))))
      (repeat (setq i (sslength ss))
         (setq sn (ssname ss (setq i (1- i))))
         (if (not (member (setq name (cdr (assoc 2 (entget sn)))) lst))
            (progn
               (setq lst (cons name lst))
               (vlax-for each (vla-item (vla-get-blocks acdoc) name)
                  (if (wcmatch (vla-get-objectname each) "AcDb*Dimension")
                  (vla-delete each))
               )
            )
         )
      )
      (princ)
   )
   (if ss (vla-regen acdoc AcAllviewports))
   (princ)
)


이 방법은 도면 전체에 대한 처리 방법입니다.

선택영역을 구분하지 않는다면, 이 방법이 통상적으로 사용되는 방법입니다.

또한 세번째 방법도 존재할 수 있는데.. 이 방법을 주구문으로 하여 내부에 선택영역의 블럭 이름과 비교를 해서 처리는 하는 방법도 있을 수 있습니다.

;;;-----------------------------------------------------------------------------;
(defun c:Test  (/ aDoc)
   (vl-load-com)
   (setq aDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
   (vlax-for blk (vla-get-blocks aDoc)
      (if
         (and
            (eq :vlax-false (vla-get-isXref blk))
            (eq :vlax-false (vla-get-isLayout blk))
            (not (wcmatch (vla-get-name blk) "`*D*"))
         )
         (vlax-for dim blk
            (if (wcmatch (vla-get-ObjectName dim) "AcDb*Dimension")
               (vla-delete dim))
         )
      )
   )
   (vla-regen aDoc acAllViewports)
   (princ)
)


'CAD > Lisp' 카테고리의 다른 글

vla-get-selectionsets, vla-get-activeselectionset 활용법  (0) 2016.05.08
=, eq, equal  (0) 2016.04.02
vl-every, vl-some 함수  (0) 2016.02.20
vla-get-blocks 과 그 내용  (0) 2015.09.09
블럭의 삽입점을 좌표로 받는 네가지 방법  (0) 2015.07.28