- (defun c:ttt (/ is_gr4 n1 n2 n3 obj1 obj2 pause pt1 pt111 pt2 ss1 str1 str2 str3 str5)
- ;;;选择文字
- (setq ss1 (ssget ":E:S" '((0 . "text"))))
- (if ss1
- (progn (setq obj1 (vlax-ename->vla-object (ssname ss1 0))
- ;;;获取文字内容
- str1 (vla-get-textstring obj1)
- ;;;获取文字坐标
- pt1 (vlax-safearray->list (vlax-variant-value (vla-get-insertionpoint obj1)))
- )
- ;;;;获取文字长度
- (setq n1 (strlen str1)
- ;;;获取asc码
- n2 (ascii (substr str1 (- n1 2) 1))
- )
- ;;;--------------------------------------------------------------
- ;;; 判断文字结尾是否为数字或字母
- ;;;--------------------------------------------------------------
- (cond
- ;;;-----------------------------------大写字母----------------------------
- ;;;判断最后一个字符是否为大写字母A~Z
- ((and (> n2 64) (< n2 90))
- (setq n3 (ascii (substr str1 (- n1 2) 1))) ;-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;开始递增复制
- ;-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;;获取字符中的前半部分
- (setq str2 (substr str1 1 (- (strlen str1) 3)))
- ;;;获取字符中的后半部分
- (setq str5 (substr str1 5 2))
- ;;;计算加1,重置参考点,重新创建文字内容
- (setq n3 (+ n3 1))
- (setq str3 (strcat str2 (chr n3) str5))
- (setq obj2 (vlax-vla-object->ename obj1)
- is_gr4 1
- )
- (while (and is_gr4 (> n3 64) (< n3 91))
- (setq pt111 (getvar "LastPoint"))
- (command "_copy" obj2 "" pt1 pause)
- (setq pt2 (getvar "LastPoint"))
- ;;判断最后一点与前一点是否一样
- (if (< (distance pt111 pt2) 0.1)
- (progn
- ;;;设置退出循环
- (setq is_gr4 nil)
- ;;;删除最后生成的文字
- (entdel (entlast))
- )
- (progn
- ;;;提取复制创建的文字
- (setq obj2 (entlast))
- ;;;修改文字内容
- (vla-put-textstring (vlax-ename->vla-object obj2) str3)
- ;;;计算加1,重置参考点,重新创建文字内容
- (setq n3 (+ n3 1)
- pt1 pt2
- str3 (strcat str2 (chr n3) str5)
- )
- )
- )
- )
- )
- ;;;-----------------------------------大写字母----------------------------
- )
- ;;;----------cond
- )
- )
- )
|