raobinhsh 发表于 2006-11-11 21:33:00

批量序号自动加1

<FONT face=宋体 size=2>一个图形文件中,某个图层有W1,W2,,,,,,W500,,,,,W1000,,,等(也可能为M1,M2,,,,M500,,,,,,M1000,,,),要求输入一个命令,选择一个编号(例如W401)。则要求W401以后其他编号的数字部分自动加1,即W402改成W403,W403改成W404,,,,,,W702改成W703</FONT><BR>

sailorcwx 发表于 2006-11-12 14:51:00

<P>几个问题<BR>1.这些编号只改同一图层的?<BR>2.是否考虑中间有横杠的情况,比如W1-4,如果考虑,那么增加的是横杠前面的数字还是横杠后面的数字,比如是改成W1-5还是W2-4还是W2-5呢?</P>

raobinhsh 发表于 2006-11-12 15:55:00

只改同一图层的,考虑中间有横杠的情况

sailorcwx 发表于 2006-11-12 20:34:00

本帖最后由 作者 于 2006-11-12 21:06:35 编辑 <br /><br /> <P>OK</P>

sailorcwx 发表于 2006-11-12 22:22:00

<P>试试</P>
<P>;;序号递增程序 V1.0 by sailorcwx (2006.11)<BR>(defun c:numadd ( / YH_ENTDATA YH_ENTLAYER YH_ENTLIST YH_INDEX YH_POSITION YH_REPEATTIMES YH_SNUM0 YH_SNUM01 YH_SNUM02 YH_SNUM1 YH_SNUM11 YH_SNUM12 YH_SNUMDATA YH_SSGETFILTER)<BR>&nbsp; (while<BR>&nbsp;&nbsp;&nbsp; (setq YH_entdata (entget (car (entsel "\n选择一个参考编号:")))<BR>&nbsp;&nbsp; YH_entlayer (assoc 8 YH_entdata)<BR>&nbsp;&nbsp; YH_snum0 (cdr (assoc 1 YH_entdata))<BR>&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; (princ "OK")<BR>&nbsp;&nbsp;&nbsp; (if (vl-string-search "-" YH_snum0) (setq YH_position (vl-string-search "-" YH_snum0)) (setq YH_position 0))<BR>&nbsp;&nbsp;&nbsp; (setq YH_snum01 (substr YH_snum0 1 (+ 1 YH_position))<BR>&nbsp;&nbsp; YH_snum02 (atoi (substr YH_snum0 (+ 2 YH_position)))<BR>&nbsp;&nbsp; YH_ssgetfilter (list YH_entlayer (cons 1 (strcat YH_snum01 "*")))<BR>&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; (setq YH_entlist (ssget YH_ssgetfilter)<BR>&nbsp;&nbsp; YH_index 0<BR>&nbsp;&nbsp; YH_repeattimes (sslength YH_entlist)<BR>&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; (repeat YH_repeattimes<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq YH_snumdata (entget (ssname YH_entlist YH_index))<BR>&nbsp;&nbsp;&nbsp;&nbsp; YH_snum1 (cdr (assoc 1 YH_snumdata))<BR>&nbsp;&nbsp;&nbsp;&nbsp; YH_snum11 (substr YH_snum1 1 (+ 1 YH_position))<BR>&nbsp;&nbsp;&nbsp;&nbsp; YH_snum12 (substr YH_snum1 (+ 2 YH_position))<BR>&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (and (not (vl-string-search "-" YH_snum12)) (&gt; (setq YH_snum12 (atoi YH_snum12)) YH_snum02))<BR>&nbsp;(progn<BR>&nbsp;&nbsp; (setq YH_snum12 (itoa (+ 1 YH_snum12))<BR>&nbsp;&nbsp;YH_snum1 (strcat YH_snum11 YH_snum12)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YH_snumdata (subst (cons 1 YH_snum1) (assoc 1 YH_snumdata) YH_snumdata)<BR>&nbsp;&nbsp;)<BR>&nbsp;&nbsp; (entmod YH_snumdata)<BR>&nbsp;&nbsp; )<BR>&nbsp;)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq YH_index (1+ YH_index))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp; (princ)<BR>&nbsp; )</P>

hxg84515 发表于 2007-4-5 15:37:00

<p>多谢</p>

hxg84515 发表于 2007-7-2 22:43:00

如果我一开始有200个001,001,001……,但现在想改下,从A050,A051,A052开始往下.而且先选择哪个数就先修哪个数,与实际放的顺序无关。谢谢

天龙八部 发表于 2007-8-14 16:50:00

<p>这个不是CAD里面有批量图层的命令吗?难道还要编程啊!不过即使编写也不需要那么复杂的,千万别把简单的事情给复杂化了,这样不好,批量改图层不过是遍历图层,然后将序号增加一位</p><p>sub sfdsfdf()</p><p>dim pppplayer as acadlayer</p><p>for each pppplayer in thisdrawing.layers</p><p>&nbsp; pppplayer.name=pppplayer.name+"此处为所添加的东西"</p><p>&nbsp; pppplayer.update</p><p>next&nbsp; pppplayer</p><p></p><p>end sub</p>

flfcegu168 发表于 2008-2-23 18:53:00

不知道 怎么用那个参考编号输入没反映也不知道怎么输入

teykmcqh 发表于 2008-4-30 10:48:00

谢谢啦,我正需要一个可以批量上数字序列的程序,譬如添加阵列图纸的页码。不过还不知道怎么用呢,呵呵
页: [1] 2
查看完整版本: 批量序号自动加1