;;*************************************************************************************
;;;block 이름을 이용해서 Drillring 하기
;;;;*************************************************************************************
(defun dtr (a) (* pi (/ a 180.0)))
(defun c:sdr(/ os gap orth ts dsc fit px ss sn en k x2 p1 p2 x2f asc tg tx ntext num pt1 pt2 p3
pt3 pt4 c1 c2 mt1 mt2 dt1 dt2 dt3 e1 e2 e3)
;->*error* start
(defun *error* (msg)(princ "error: ")(princ msg)
(setvar "osmode" os) (setvar "dimtad" fit) (setvar "orthomode" orth)
(princ))
;-<*error* end
(setq os (getvar "osmode")
gap (getvar "dimgap")
orth (getvar "orthomode")
ts (getvar "dimtxt")
dsc (getvar "dimscale")
fit (getvar "dimtad"))
(if (= nil (tblsearch "layer" "center"))
(command "layer" "m" "center" "c" "1" "" "l" "center" "" ""))
(setvar "osmode" 4)
(prompt "단면을 그릴 블럭을 선택하세요")
(setq ss (ssget ":s" (list (cons 0 "insert"))))
(setq sn (ssname ss 0))
(setq en (entget sn))
(setq k 1 ntext "")
(setq x2 (cdr (assoc 2 en)))
(setvar "osmode" 32)
(setq p1 (getpoint "\nStart Point"))
(setvar "osmode" 128)
(setq p2 (getpoint p1 "\nend Point"))
(setq ang (angle p1 p2))
(setvar "orthomode" orth)
(setq x2f (strcase (substr x2 1 1)))
(setq asc (ascii x2f))
;;--------------------------------------------- "d" 일때.. 숫자 뽑아내기
(cond (or (= asc 68) (= asc 87)
(repeat (strlen x2)
(setq tg (substr x2 k 1))
(setq tx (ascii tg))
(if (and (>= tx 48) (<= tx 57)) (setq ntext (strcat ntext tg)))
(setq k (1+ k))
);repeat
)
);cond
;;---------------------------------------해당숫자가 있을때만 실행
(if (/= ntext nil)
(progn
(setq num (atof ntext))
(setq pt1 (polar p1 (+ ang (dtr 90)) (/ num 2)))
(setq pt2 (polar p2 (+ ang (dtr 90)) (/ num 2)))
(setq mt1 (polar p1 (- ang (dtr 90)) (/ num 2)))
(setq mt2 (polar p2 (- ang (dtr 90)) (/ num 2)))
(setq c1 (polar p1 (+ ang (dtr 180)) 2))
(setq c2 (polar p2 ang 2))
(setq dt1 (polar p1 (+ ang (dtr 180)) 7))
(setvar "osmode" 0)
(setvar "dimdec" 1)
(command "line" pt1 pt2 "")
(setq e1 (entlast))
(command "line" mt1 mt2 "")
(setq e2 (entlast))
(command "line" c1 c2 "")
(command "chprop" "l" "" "la" "center" "")
(command "dimlinear" mt1 pt1 dt1)
);progn
(princ "-> 블록이름에 숫자가 없습니다.")
);if
;;-----------------------------------------------
(setvar "osmode" os)
(setvar "dimtad" fit)
(princ)
);;end defun
;;도움주신 여러분들 감사합니다..
;;단품도 뽑을때 가끔 쓰는건데.. 한번 만들어 봤습니다..
카페 게시글
검색이 허용된 게시물입니다.
■ Block . Scale
[Ez-Tech]
블럭 평면 (드릴이나 와이어컷팅) 홀 단면 그리기 리습입니다.
다음검색
첫댓글 소중한자료 고맙습니다.^^ 스샷도 올려주세요
감사합니다~ 수고하셨습니다