원래 저 오토캐드에서 사용하던 리습인데 갑자기 활성화코드가 만료되서
부득이하게 브릭스캐드구매하여 사용하고있습니다.
여러가지 리습이 필요하지만 우선적으로 급한 리습이기에 고캐드에 문의드립니다.
(defun c:bb( / ss pt01 OSM nbl_name nbl_hex nbl_hex2 acDoc)
(defun *error*(msg)(princ))
(vl-load-com)
(prompt (strcat “BasepointBlockn색상 변경이 가능한 블록으로 변환할 객체 선택…”))
;;SUB함수 -출처: 아키모아-
(defun GET_MinXYList(minxy_list / nx ny)
(setq nx (apply ‘min (mapcar ‘car minxy_list))
ny (apply ‘min (mapcar ‘cadr minxy_list)))
(list nx ny)
)
(defun GET_MinXY(ss / i en MinPt)
(setq i 0 minxy_list ‘())
(repeat (sslength ss)
(setq en (ssname ss i)
i (1+ i))
(vla-GetBoundingBox (vlax-ename->vla-object en) ‘MinPt ‘MaxPt)
(vla-put-color (vlax-ename->vla-object en) 0)
(setq MinPt (vlax-safearray->list MinPt))
(setq minxy_list (append (list (list (car minpt) (cadr minpt))) minxy_list)))
)
(defun Dec2Hex (num / str r)
(setq str “”)
(while (progn
(setq r (rem num 16.))
(cond
((< r 10) (setq str (strcat (itoa (fix r)) str)))
((< r 16) (setq str (strcat (chr (+ (fix r) 55)) str))))
(> (setq num (fix (/ num 16.))) 0))) str
)
(setq ss (ssget))
(if (= ss nil)(nil))
(setq pt01 (GET_MinXYList (GET_MinXY ss)))
(setq acDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-startundomark acDoc)
(setvar “cmdecho” 0)
(setq OSM (getvar “osmode”))
(setq nbl_name nil)
(while (= nbl_name nil)
(setq nbl_hex (substr (Dec2Hex (atof (rtos (getvar “cputicks”) 2 0))) 4 7))
(if (> (atof (setq nbl_hex2 (substr (rtos (getvar “cputicks”) 2 0) 6 1))) 7)(setq nbl_hex2 (rtos (- (atof nbl_hex2) 8))))
(setq nbl_name (strcat “A$C” nbl_hex2 nbl_hex))
(if (or (assoc 2 (tblsearch “block” nbl_name)) (/= (strlen nbl_name) 11))(setq nbl_name nil))
)
(setvar “osmode” 0)
(command “-block” nbl_name pt01 ss “”)
(command “-insert” nbl_name pt01 “1” “1” “0”)
(setvar “osmode” OSM)
(setvar “cmdecho” 1)
(prompt (strcat (rtos (sslength ss)) “개의 객체가 블록으로 변환 되었습니다.”))
(vla-endundomark acDoc)
(princ)
)
고수님들 수정좀 해주세요~
아참 그리고 VV로 사용하던 리습도있는데
치수선,중심선,문자 한꺼번에 지우는 리습이있었는데 혹시 그것도 가능하다면 부탁좀드리곘습니다!ㅠㅠ