이곳에서 질문하여
얻은 리습들을 가지고 작성하고 있습니다.
;;;;;
(defun _SetClipBoardText ( text / htmlfile result )
(setq result
(vlax-invoke
(vlax-get
(vlax-get (setq htmlfile (vlax-create-object “htmlfile”)) ‘ParentWindow)
‘ClipBoardData
)
‘SetData “Text” text)
)
(vlax-release-object htmlfile)
text
)
;;;;;
얻은 리습들을 가지고 작성하고 있습니다.
;;;;;
(defun _SetClipBoardText ( text / htmlfile result )
(setq result
(vlax-invoke
(vlax-get
(vlax-get (setq htmlfile (vlax-create-object “htmlfile”)) ‘ParentWindow)
‘ClipBoardData
)
‘SetData “Text” text)
)
(vlax-release-object htmlfile)
text
)
;;;;;
(defun _GetClipBoardText( / htmlfile result )
(setq result
(vlax-invoke
(vlax-get
(vlax-get (setq htmlfile (vlax-create-object “htmlfile”)) ‘ParentWindow)
‘ClipBoardData
)
‘GetData “Text”)
)
(vlax-release-object htmlfile)
result
)
;;;(GetStringByPoint (getpoint))
;;포인트 스트링 가져오기
(defun GetStringByPoint (pt / obs minp maxp)
(vl-load-com)
(if (ssget “x” ‘((0 . “TEXT”)))
(progn
(vlax-for ob (vla-get-ActiveSelectionSet (vlax-get (vlax-get-acad-object) ‘activedocument))
(setq obs (cons ob obs))
)
(vl-some
‘(lambda (ob)
(if (not (vl-catch-all-error-p (vl-catch-all-apply ‘vla-getboundingbox (list ob ‘minp ‘maxp))))
(progn
(setq
minp (vlax-safearray->list minp)
maxp (vlax-safearray->list maxp)
)
(if (vl-every ‘<= (list (car minp) (cadr minp)) pt (list (car maxp) (cadr maxp)))
(vlax-get ob ‘textstring)
)
)
)
)
obs
)
)
)
)
지금 여기서 받은 위 리습들을 사용해서
;선택한 텍스트 클립보드로
(DEFUN C:GG ()
(vl-load-com)
(setvar “cmdecho” 0)
(command “osmode” 0)
(setq p1 (getpoint “n포인트로 선택 :”))
(setq p2 (polar p1 (angtof “4.8”) 540.47))
(_SetClipBoardText (GetStringByPoint p2))
(command “osmode” 113)
)
이렇게 쓰고 있습니다.
굳이 포인트로 쓰는 이유는 지정한 포인트로부터 떨어진 위치에
텍스트가 있어서 이오니 텍스트 선택시
entsel 은 피합니다.
여기서 질문점은
위내용과 반대로 지정한 포인트에서 얻어낸 텍스트 객체에
클립보드에 있는 내용을 붙여넣으려면 어떻게 수정해야하나요?
(setq result
(vlax-invoke
(vlax-get
(vlax-get (setq htmlfile (vlax-create-object “htmlfile”)) ‘ParentWindow)
‘ClipBoardData
)
‘GetData “Text”)
)
(vlax-release-object htmlfile)
result
)
;;;(GetStringByPoint (getpoint))
;;포인트 스트링 가져오기
(defun GetStringByPoint (pt / obs minp maxp)
(vl-load-com)
(if (ssget “x” ‘((0 . “TEXT”)))
(progn
(vlax-for ob (vla-get-ActiveSelectionSet (vlax-get (vlax-get-acad-object) ‘activedocument))
(setq obs (cons ob obs))
)
(vl-some
‘(lambda (ob)
(if (not (vl-catch-all-error-p (vl-catch-all-apply ‘vla-getboundingbox (list ob ‘minp ‘maxp))))
(progn
(setq
minp (vlax-safearray->list minp)
maxp (vlax-safearray->list maxp)
)
(if (vl-every ‘<= (list (car minp) (cadr minp)) pt (list (car maxp) (cadr maxp)))
(vlax-get ob ‘textstring)
)
)
)
)
obs
)
)
)
)
지금 여기서 받은 위 리습들을 사용해서
;선택한 텍스트 클립보드로
(DEFUN C:GG ()
(vl-load-com)
(setvar “cmdecho” 0)
(command “osmode” 0)
(setq p1 (getpoint “n포인트로 선택 :”))
(setq p2 (polar p1 (angtof “4.8”) 540.47))
(_SetClipBoardText (GetStringByPoint p2))
(command “osmode” 113)
)
이렇게 쓰고 있습니다.
굳이 포인트로 쓰는 이유는 지정한 포인트로부터 떨어진 위치에
텍스트가 있어서 이오니 텍스트 선택시
entsel 은 피합니다.
여기서 질문점은
위내용과 반대로 지정한 포인트에서 얻어낸 텍스트 객체에
클립보드에 있는 내용을 붙여넣으려면 어떻게 수정해야하나요?
먼저 위에 셋 클립보드로 텍스트를 클립보드에 저장하시고 겟 클립보드로 가져와서.gif)
겟텍스트바이포인트로 얻은 텍스트에 엔트모드 시키시면 되겠네요
겟텍스트바이포인트만 셋텍스트 바이 포인트로 약간 손댔습니다
피’씨’ 라니 ㅠ…
감사합니다.
(vlax-put ob ‘textstring txt) 하나만 바꾸면 되는거였군요.
-다른 언어 버릇때문에 (vlax-set ob ‘textstring txt) 인줄 알았어요.