gf输入步长,像你的要求就要输入-300 然后用gg命令,选择你要减掉的数字就可以了 这个命令是我常用的命令,程序没有经过整理,不过还能用 (defun c:gf() (setq bc (getint "\n 请输入步长:")) )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;子程序 (中间有横杠,取后面的数字更改) (defun ddjq() (setq shuzi (substr wenzi (+ 2 gang))) (setq shishu (atoi shuzi)) ;把数字改为实数 (setq qianzhui (substr wenzi 1 (+ 1 gang))) (if (= lll "<") (progn (setq b (+ shishu bc nn)) ; (setq c (itoa b)) ; (setq d (strcat qianzhui c ">")) ; (setq e (cons 1 d)) ; (setq ddd (subst e wenzizu ddd)) ; (entmod ddd) ; (princ) ; ) ;end progn ; (progn (setq b (+ shishu bc nn)) ; (setq c (itoa b)) ; (setq d (strcat qianzhui c)) ; (setq e (cons 1 d)) ; (setq ddd (subst e wenzizu ddd)) ; (entmod ddd) ; (princ) ; ) ;end progn ; ) ;end if ) ;end defun
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun c:gg() (prompt "\n 设置步长命令为:gf,初始步长为1") (if (= bc nil) (setq bc 1) ) (setq a (ssget)) (setq len (sslength a)) ;取得对象的个数 (setq n 0) (setq nn 0) (command "undo" "begin") (repeat len (setq ent (ssname a n)) ;取得实体的名称 (setq ddd (entget ent)) ;得到实体的联合列表 (setq djq (cdr (assoc 0 ddd))) (if (or (= djq "MTEXT") (= djq "TEXT")) (dkdk) ) ;end if (setq n (+ 1 n)) ) ;end repeat (setq nn (+ nn bc)) (command "undo" "end") ) ;;;子程序
(defun dkdk() (setq wenzizu (assoc 1 ddd)) ;取出字的内容(群码为1) (setq wenzi (cdr wenzizu)) ;文字 (setq gang (vl-string-search "-" wenzi)) (setq wenzilen (strlen wenzi)) (setq fanyihou (vl-string-translate "1234567890" "##########" wenzi)) ;翻译字符 (setq weizhi (vl-string-search "#" fanyihou)) ;找出#的位置 (setq qianzhui (substr wenzi 1 weizhi)) ;取出前缀 (setq shuzi (substr wenzi (+ weizhi 1))) ;取出字符串形式的数字 (setq shishu (atoi shuzi)) ;把数字改为实数 (setq lll (substr wenzi 1 1)) ;判断第一个字符是什么 (if (= gang nil) (progn (cond
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ((= lll "<") ; (progn ; (setq b (+ shishu bc nn)) ; (setq c (itoa b)) ; (setq d (strcat qianzhui c ">")) ; (setq e (cons 1 d)) ; (setq ddd (subst e wenzizu ddd)) ; (entmod ddd) ; (princ) ; ) ;end progn ; ) ;end first ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;如果要加判断的话,请选择这里
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (t ; (progn ; (setq b (+ shishu bc nn)) ; (setq c (itoa b)) ; (setq d (strcat qianzhui c)) ; (setq e (cons 1 d)) ; (setq ddd (subst e wenzizu ddd)) ; (entmod ddd) ; (princ) ; ) ;end progn ; ) ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ) ;end cond ) ;end progn (ddjq) ) ;end if
) ;end defun |