我在某处发现了这个,例如用户从Excel或Word复制文本。用户调用PSTSP命令&文本被粘贴为单个文本项。为了使文本大写,我稍微修改了一下:
- (defun c:PSTSP (/ _GetClipBoardText ent_last last_ent pt str)
- (vl-load-com)
- (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
- )
- (if (not (setq ent_last (entlast)))
- (progn
- (entmake '(
- (0 . "POINT")
- (100 . "AcDbEntity")
- (100 . "AcDbPoint")
- (10 . (0.0 0.0 0.0))
- )
- )
- (setq ent_last (entlast)
- last_ent ent_last
- )
- )
- )
- (if (and (setq str (_GETCLIPBOARDTEXT))
- (setq pt (getpoint "\nSpecify text start point: "))
- )
- (progn
- (setq str (strcase str))
- (entmake (list
- '(0 . "MTEXT")
- '(100 . "AcDbEntity")
- '(100 . "AcDbMText")
- (cons 10 pt)
- (cons 1 str)
- )
- )
-
- (command "_.explode" "_L")
- )
- )
- (if last_ent
- (entdel last_ent)
- )
- (princ)
- )
|