예전에 만들어 놓은 콤마 넣기 빼기만 따로 꺼냈습니다.
KMSTART.lsp
;;; ;=============copy string================= (defun c:tc (/ txt1 msg txt_lst) (setq txt1 (cdr (assoc 1 (entget (car (entsel "\n>>> Select Source Text: ")))))) (setq msg (strcat "\n >>Select Target Text: [" (print txt1) "]:")) (setq txt_lst (entget (car (
kmlab.tistory.com
(defun KM:IC ( txt_lst / str); Insert Comma
(setq str (cdr (assoc 1 txt_lst)))
(setq DecimalLength (strlen str))
(setq DecimalPoint (vl-string-search "." str))
(if (= DecimalPoint nil)
(setq DecimalPoint DecimalLength)
);if
(setq FirstCommaLocation (rem DecimalPoint 3))
(setq CountComma (/ (- DecimalPoint 1) 3))
(if (= FirstCommaLocation 0)
(setq FirstCommaLocation 3)
);if
(setq n 0)
;(setq NumberComma "")
(setq NumberComma (substr str 1 FirstCommaLocation))
(repeat CountComma
(setq SplitNumber(substr str (+ 1 FirstCommaLocation (* 3 n)) 3))
(setq NumberComma (strcat NumberComma "," SplitNumber))
(setq n (+ 1 n))
);repeat
(setq NumberComma (strcat NumberComma (substr str (+ 1 DecimalPoint))))
(setq DxfNumberComma (cons 1 NumberComma))
(entmod (subst DxfNumberComma (assoc 1 txt_lst) txt_lst))
(princ)
);defun
(defun KM:RC ( txt_lst / str); Remove Comma
(setq str (cdr (assoc 1 txt_lst)))
(setq NumberCommaRem str)
(repeat (strlen str)
(setq NumberCommaRem (vl-string-subst "" "," NumberCommaRem))
);
(setq DxfNumberCommaRem (cons 1 NumberCommaRem))
(entmod (subst DxfNumberCommaRem (assoc 1 txt_lst) txt_lst))
(princ)
);defun
(defun c:,,()
(setq txt_lst (KM:GETSTR))
(setq str (cdr (assoc 1 txt_lst)))
(if (= nil (vl-string-search "," str))
(KM:IC txt_lst)
(KM:RC txt_lst)
);if
);defun
',,' 명령만으로 콤마가 있다면 빼주고, 없다면 천단위마다 넣어 줌. 히히
만든 이유는 연산할 때 콤마가 있으면 에러 납니다.
연산할 땐 뺐다가 연산이 완료된 후, 보기 좋게 천단위로 콤마를 넣을 수 있습니다.
문제점. 숫자든 문자든 무조건 실행함.
반응형
'autocad' 카테고리의 다른 글
블럭삽입 오토스크립트 (0) | 2025.01.13 |
---|---|
Duplicate block in acad (0) | 2025.01.13 |
Pdf 출력 후 문자 주위로 상자 보이는 문제 (0) | 2025.01.10 |
간단하게 리스트 내 요소들을 연산 (0) | 2024.12.19 |
문자 연결하기 (0) | 2024.12.18 |