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