본문 바로가기
autocad

텍스트 문자열을 ^c 하기

by kmlab 2026. 7. 1.

 

 

선택한 문자의 내용을 클립보드(Clipboard)에 복사하는 리습

도면에 있는 문자를 복사해서, 다른 곳에 Ctrl + V로 붙여 넣는 작업은 불편합니다. 문자를 Ctrl + C를...

blog.naver.com

이걸 기초로 MTEXT를 폭파한 뒤 문자열을 가져온 후 다시 "TXT2MTXT"로 복구시킨 급하게 만든 리습
위 링크가 더 고급지지만... 일단 만들어 봄

(defun c:XX ( / mt p tx en html)
(setq mt (entsel))
(setq p (nth 0 (cdr mt)))
(command "explode" mt)
(setq tx (nentselp p))
(setq tx (cdr (assoc 1 (entget (car tx)))))
(vlax-invoke (vlax-get (vlax-get (setq html (vlax-create-object "htmlfile")) 'ParentWindow) 'ClipBoardData) 'setData "Text" tx)
(vlax-release-object html)
(command "TXT2MTXT" (nentselp p) "")
(princ)
)

 

더 고급진 코드임

;Copy Text To Clipboard
(defun c:CopyText2ClipBoard ( / en tx html)
	(and (setq en (ssget ":S" '((0 . "*TEXT"))))
		(setq en (ssname en 0))
		(setq en (vlax-ename->vla-object en))
		(vlax-property-available-p en 'textstring)
		(setq tx (lm:unformat (vla-get-textstring en) T))
		(vlax-invoke (vlax-get (vlax-get (setq html (vlax-create-object "htmlfile")) 'ParentWindow) 'ClipBoardData) 'setData "Text" tx)
		(vlax-release-object html)
	)
	(princ)
)


;;-------------------=={ UnFormat String }==------------------;;
;;                                                            ;;
;;  Returns a string with all MText formatting codes removed. ;;
;;------------------------------------------------------------;;
;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
;;------------------------------------------------------------;;
;;  Arguments:                                                ;;
;;  str - String to Process                                   ;;
;;  mtx - MText Flag (T if string is for use in MText)        ;;
;;------------------------------------------------------------;;
;;  Returns:  String with formatting codes removed            ;;
;;------------------------------------------------------------;;
(defun LM:UnFormat ( str mtx / _replace rx )

    (defun _replace ( new old str )
        (vlax-put-property rx 'pattern old)
        (vlax-invoke rx 'replace str new)
    )
    (if (setq rx (vlax-get-or-create-object "VBScript.RegExp"))
        (progn
            (setq str
                (vl-catch-all-apply
                    (function
                        (lambda ( )
                            (vlax-put-property rx 'global     actrue)
                            (vlax-put-property rx 'multiline  actrue)
                            (vlax-put-property rx 'ignorecase acfalse) 
                            (foreach pair
                               '(
                                    ("\032"    . "\\\\\\\\")
                                    (" "       . "\\\\P|\\n|\\t")
                                    ("$1"      . "\\\\(\\\\[ACcFfHLlOopQTW])|\\\\[ACcFfHLlOopQTW][^\\\\;]*;|\\\\[ACcFfHLlOopQTW]")
                                    ("$1$2/$3" . "([^\\\\])\\\\S([^;]*)[/#\\^]([^;]*);")
                                    ("$1$2"    . "\\\\(\\\\S)|[\\\\](})|}")
                                    ("$1"      . "[\\\\]({)|{")
                                )
                                (setq str (_replace (car pair) (cdr pair) str))
                            )
                            (if mtx
                                (_replace "\\\\" "\032" (_replace "\\$1$2$3" "(\\\\[ACcFfHLlOoPpQSTW])|({)|(})" str))
                                (_replace "\\"   "\032" str)
                            )
                        )
                    )
                )
            )
            (vlax-release-object rx)
            (if (null (vl-catch-all-error-p str))
                str
            )
        )
    )
)

LEE MAC 은 대단 분 ^^

반응형