我有一个,但是只能是单个的文字,不能复制很多个 因为只是自己用,没有整理过,很乱 (defun c:gf() (setq bc (getint "\n 请输入步长:")) ) (defun c:saa() (prompt "\n 设置步长命令为:gf,初始步长为1") (prompt "\n 请选择不需要更改的实体:") (if (= bc nil) (setq bc 1) ) (setq ddjjqq (ssget)) (setq entt (entsel "\n 请选择一个文字:")) (setq ent (car entt)) ;(setq pt1 (cadr entt)) (redraw ent 3) (setq dxf (entget ent)) ;联合列表 (setq wenzizu (assoc 1 dxf)) ;点对列表 (setq wenzi (cdr wenzizu)) ;文字
(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 pt1 (getpoint "\n 请选择一个点:")) (setq pt2 (getpoint pt1 "\n 请选择第二点:")) (setq n 0)
(while pt2 (setq lll (substr wenzi 1 1)) ;判断第一个字符是什么 ;(setq llll (substr wenzi 4 1)) ;判断第四个字符是什么 (cond ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ( (= lll "<") ; (progn ; (setq b (+ shishu bc n)) ; (setq c (itoa b)) ; ; (setq d (strcat qianzhui c ">")) ; ; (setq e (cons 1 d)) ; (command "copy" ddjjqq "" pt1 pt2) (command "copy" ent "" pt1 pt2) (setq ent1 (entget (entlast))) ; ;此处为一个判断 (setq txtzh1 (assoc 1 ent1)) ; (setq ent1 (subst e txtzh1 ent1)) ; (entmod ent1) ; (princ) ; ) ;end progn ; ) ;end first ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;如果要加判断的话,请选择这里
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (t ; (progn ; (setq b (+ shishu bc n)) ; (setq c (itoa b)) ; (setq d (strcat qianzhui c)) ; (setq e (cons 1 d)) ; (command "copy" ddjjqq "" pt1 pt2) (command "copy" ent "" pt1 pt2) ; ;此处为第二个判断 (setq ent1 (entget (entlast))) ; (setq txtzh1 (assoc 1 ent1)) ; (setq ent1 (subst e txtzh1 ent1)) ; (entmod ent1) ; (princ) ; ) ; ) ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ) ;end cond
(setq n (+ bc n)) (setq pt2 (getpoint pt1 "\n 请选择第二点:")) ;pt1决定有没有显示线
) ;end while ) ;end defun ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; 以下为输入单个字的命令 ;;;;;;;;;;;;;;;; (defun c:sa()
(prompt "\n 设置步长命令为:gf,初始步长为1") (if (= bc nil) (setq bc 1) ) (setq enty (entsel "\n 请选择一个文字:")) (setq ent (car enty)) ;(setq pt1 (cadr enty)) (redraw ent 3) (setq dxf (entget ent)) ;联合列表 (setq wenzizu (assoc 1 dxf)) ;点对列表 (setq wenzi (cdr wenzizu)) ;文字 (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 pt1 (getpoint "\n 请选择一个点:")) (setq pt2 (getpoint pt1 "\n 请选择第二点:")) (setq n 0)
(while pt2 (setq lll (substr wenzi 1 1)) ;判断第一个字符是什么 ;(setq llll (substr wenzi 4 1)) ;判断第四个字符是什么 (cond ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ( (= lll "<") ; (progn ; (setq b (+ shishu bc n)) ; (setq c (itoa b)) ; ; (setq d (strcat qianzhui c ">")) ; ; (setq e (cons 1 d)) ; (command "copy" ent "" pt1 pt2) ; (setq ent1 (entget (entlast))) ; ;此处为一个判断 (setq txtzh1 (assoc 1 ent1)) ; (setq ent1 (subst e txtzh1 ent1)) ; (entmod ent1) ; (princ) ; ) ;end progn ; ) ;end first ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;如果要加判断的话,请选择这里
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (t ; (progn ; (setq b (+ shishu bc n)) ; (setq c (itoa b)) ; (setq d (strcat qianzhui c)) ; (setq e (cons 1 d)) ; (command "copy" ent "" pt1 pt2) ; ;此处为第二个判断 (setq ent1 (entget (entlast))) ; (setq txtzh1 (assoc 1 ent1)) ; (setq ent1 (subst e txtzh1 ent1)) ; (entmod ent1) ; (princ) ; ) ; ) ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ) ;end cond
(setq n (+ bc n)) (setq pt2 (getpoint pt1 "\n 请选择第二点:")) ;pt1决定有没有显示线
) ;end while (princ) ) ;end defun |