말풍선 리습입니다. 첨부와 같이 수정될까요?
컨텐츠 정보
- 472 조회
- 13 댓글
- 0 추천
- 0 비추천
- 목록
본문
또한번 요청하고 싶은 리습이 있어서 올려봅니다.
하기는 고캐드 검색하다가 언제나 도움 주시는 수야12님이 올려주신 말풍선 리습니다.
첨부의 링크와 같이 수정할수 있을지 백방 찾아 봤는데 찾을수가 없어서 이렇게 도움의 손길을 뻗어봅니다.
첨부 링크 확인 부탁합니다.
https://blog.naver.com/flashame/222347893244
원하는 내용은 링크부의 오른쪽의 결과치를 얻고 싶습니다.
1) 위의숫자 1~4는 기존 리습과 같이 증가하는 숫자
2) 아래의 숫자 000은 항상동일하게 문제 없습니다.(경우에 따라 수정해서 사용합니다.)
3) 문자 색상은 흰색으로 원합니다.
4) 현재 UCS / WORLD 에서만 정상 작동하는데 ORIGIN 상태에서도 작동했으면 하는 희망이 있습니다.
하기는 리습니다.
(defun c:cvv(/ *error* _Donut _Line _Circle _Text _Text_Style v1 ov sc dr sp ep cp txh r2 txst)(vl-load-com)
;->*error* start ————————————————————
(defun *error* (msg)(princ "nerror:")(princ msg)
(mapcar 'setvar vL ov)
(princ) )
;-<*error* end ————————————————————–
;;;————————————-
;;; SUB function
;;;————————————-
(defun _Donut (sp r / i w p)
(setq i 0.1)
(setq w (* (- r i) 0.5)
p (+ (* i 0.5) (* w 0.5)))
(entmake (list (cons 0 "POLYLINE")
(cons 62 1)
(cons 66 1)
(cons 10 sp)
(cons 70 1)
(cons 40 w)
(cons 41 w)))
(entmake (list (cons 0 "VERTEX")
(cons 10 (list (- (car sp) p) (cadr sp) (caddr sp)))
(cons 40 w)
(cons 41 w)
(cons 42 1)))
(entmake (list (cons 0 "VERTEX")
(cons 10 (list (+ (car sp) p) (cadr sp) (caddr sp)))
(cons 40 w)
(cons 41 w)
(cons 42 1)))
(entmake (list (cons 0 "SEQEND"))))
(defun _Text_Style ()
(entmake
(list
'(0 . "STYLE")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbTextStyleTableRecord")
(cons 2 "LYS") ;;Style name
'(70 . 0) ;;Standard flag values (bit-coded values)
(cons 40 0) ;;text height
'(41 . 1.0) ;;width factor
'(50 . 0.0) ;;oblique angle
'(71 . 0) ;;text generation "0″ normal text
'(42 . 0) ;;last height used
'(3 . "romans.shx") ;;font file name
'(4 . "whgtxt.shx") ;;bigfont
)
)
)
(defun _Line (p1 p2)
(entmake (list (cons 0 "LINE")
(cons 10 p1)
(cons 11 p2)
(cons 62 1))
)
)
(defun _Text (pt tx txh)
(entmakex (list
(cons 0 "TEXT")
(cons 10 pt)
(cons 40 txh)
(cons 1 tx)
(cons 7 "LYS")
(cons 62 3)
(cons 72 1)
(cons 73 2)
(cons 11 pt)
)
)
)
(defun _Circle (cen rad)
(entmakex (list (cons 0 "CIRCLE")
(cons 10 cen)
(cons 40 rad )
(cons 62 1) )
)
)
:—————————————-
;; MAIN function
;—————————————
(setq vL '("osmode" "cmdecho" "orthomode"))
(setq ov (mapcar 'getvar vL))
(mapcar 'setvar vL '(0 0 0))
(if(null (tblsearch "style" "LYS"))
(_Text_Style )
)
(setq sc(getvar 'dimscale))
(setq sc(+ sc 2)) ; 딤스케일1일때 기본 문자 크기는 10mm 입니다 .
(setq dr (* 1.5 sc)txh (* 4 sc)r2( * txh 1.35)) ;<= dr 도넛의크기 txh 문자의크기 r2 원의크기입니다.
(setq sp(getpoint "nStart point:"))
(setq ep(getpoint sp "n End point:"))
(setq cp(polar ep (angle sp ep) r2))
(or tx (setq tx 1))
(setq tx
(cond
((getint(strcat "n Number <"(vl-princ-to-string tx)">:")))
(tx)
)
)
(_Donut sp dr)
(_Line sp ep)
(_Circle cp r2)
(_Text cp(itoa tx) txh)
(setq tx(1+ tx))
(mapcar 'setvar v1 ov)
(princ)
)
(princ "n :: 풍선기호 작성 [CV] ::")(princ)
관련자료
CATS_Developer님의 댓글
AutoCAD2013 이후 버전 사용하시면
자유천지님의 댓글
(setq dr (* 1.5 sc)txh (* 4 sc)r2( * txh 1.35)) ;<= dr 도넛의크기 txh 문자의크기 r2 원의크기입니다. (setq dr (* 1.5 sc)txh (* 2 sc)r2( * txh 1.35)) ;<= txh 문자의크기를 반으로 줄이시고 (_Donut sp dr) (_Line sp ep) (_Circle cp r2) (_Text cp(itoa tx) txh) 구문을 (_Donut sp dr) (_Line sp ep) (_Line (polar cp 0 r2) (polar cp pi r2)) ;;중간 수평선 추가 (_Circle cp r2) ;;(_Text cp(itoa tx) txh) 삭제 (_Text (polar cp (* 0.5 pi) txh) (itoa tx) txh) ;; 추가 –> 적색부분 txh가 원 중심에서 글자 간격 (_Text (polar cp (* 1.5 pi) txh) "000″ txh) ;; 추가 –> 적색부분 txh가 원 중심에서 글자 간격
CATS_Developer님의 댓글
네. 저는 리습은 만들줄 몰라서 다른 방법으로 도움을 드리고자 했었습니다 ㅎㅎ
자유천지님의 댓글
(defun _Text (pt tx txh col wid) ;; 변경 (entmakex (list (cons 0 "TEXT") (cons 10 pt) (cons 40 txh) (cons 41 wid) ;;추가 (cons 1 tx) (cons 7 "LYS") (cons 62 col) ;; 변경 (cons 72 1) (cons 73 2) (cons 11 pt) ) ) )
그리고 (_Text (polar cp (* 0.5 pi) txh) (itoa tx) txh 7 0.7) ;; 추가 7-> 흰색, 0.7 -> width factor (_Text (polar cp (* 1.5 pi) txh) "000″ txh 7 0.7) ;; 추가
자유천지님의 댓글
질문이 꼬리를 무는군요.. 답글다는 사람들이 제일 싫어하는게 꼬리를 무는 질문입니다. 답글다는 머슴도 아니고 계속 답글 달아줄 의무는 더더욱 없습니다. 질문의 의도를 확실히 한번에 끝내도록 하는게 좋습니다. 마지막 질문도 가능하지만 더욱 알고리즘이 복잡해집니다. 배우고자 하시기에 답글을 달아준거 뿐입니다. 무니미니님은 꼬리를 무는 질문을 하시는분으로 인식되어서 어느누구도 답글을 달려고 나서는 사람들이 적어질것입니다. 저 또한 업무를 해결해주기위한 답글이 아니었으므로 앞으로 질문은 사양합니다.