恭喜xd的超级大drag新鲜出炉....8-)
为此特发布一个使用了一些drag函数的文字小东东(测试版本,正在改进中),希望对大家有用...

- ;; Copy and edit TEXT object.
- ;; LK , CADWAY 1999.05.25
- ;; fixed object snap and variables list 2000.07.28
- ;; fixed UCS , "lock layer" bug 2001.12.14
- ;; changed for undo , add "Base point" option 2002.01.30
- ;; changed for Xdapi drag , add "Follow" option 2002.08.30
- (defun C:lk-text:CopyEditXdapi ( /
- lk-text:CopyEdit:err
- lk-text:CopyEdit:pro
- bLoop oldvar1 oldvar2 esl en et
- )
- (defun lk-text:CopyEdit:err (sErrMsg)
- (if (/= sErrMsg "Function cancelled")
- (princ (strcat "\nerror : " sErrMsg))
- )
- (setvar "CMDECHO" oldvar1)
- (setvar "OSMODE" oldvar2)
- (setq *error* olderr)
- (princ)
- ); end defun lk-text:CopyEdit:err
-
- (defun lk-text:CopyEdit:pro (en / oldvar2 bpt bLoop bFollow sFollow ss sMsg pt bpt-in)
- (setq oldvar2 (getvar "OSMODE")
- bpt (trans (cdr (assoc 10 (entget en))) en 1)
- bLoop T
- bFollow nil
- )
- (while bLoop
- (if bFollow
- (setq sFollow "not " en (entlast))
- (setq sFollow "")
- )
- (setq ss (ssadd)
- ss (ssadd en)
- sMsg (strcat "\nSpecify the new text position point [Base point/" sFollow "Follow]: "))
- (xdrx_drag_initget 1 "Base Follow")
- (setq pt (xdrx_dragssmove sMsg ss bpt) )
- (cond
- ( (null pt) (setq bLoop nil) )
- ( (= pt "Base")
- (redraw en 3)
- (if (setq bpt-in (getpoint "\nBase point :"))
- (setq bpt bpt-in)
- )
- (redraw en 4)
- )
- ( (= pt "Follow")
- (setq bFollow (not bFollow))
- )
- ( pt
- (setvar "OSMODE" 0)
- (vl-cmdf "_.copy" en "" bpt pt)
- (vl-cmdf "_.ddedit" (entlast) "")
- (setvar "OSMODE" oldvar2)
- (if bFollow (setq bpt pt))
- )
- );end cond
- );end while
- ) ;end defun lk-text:CopyEdit:pro
- ;; main
- (setq olderr *error*
- *error* lk-text:CopyEdit:err
- oldvar1 (getvar "CMDECHO")
- oldvar2 (getvar "OSMODE")
- )
- (setvar "CMDECHO" 0)
- (command "_.undo" "_be")
- (while (setq esl (entsel "\nSelect a TEXT object :"))
- (setq en (car esl)
- et (cdr (assoc 0 (entget en)))
- )
- (if (and (= et "TEXT")
- ;(not (lkax:Layer:ObjectLayerIsLock en))
- )
- (lk-text:CopyEdit:pro en)
- )
- )
- (command "_undo" "_e")
- (setvar "CMDECHO" oldvar1)
- (setvar "OSMODE" oldvar2)
- (setq *error* olderr)
- (princ)
- );end defun C:lk-text:CopyEditXdapi
|