问题扩展 求教地块编号
<p><font face="Verdana">版主果然强悍,我的问题跟他差不多,但是有点区别 如附件所示</font></p><p><font face="Verdana">1) 需要递加的是地块编号 A3-01-01 末尾编号一般不会超过一百 其他为F2-03-42等<br/>2) 块的种类不一样,主要是两种 ,两种块需要统一编号<br/>3) 版主的方法我猜是截取块增强属性编辑器中的第一个值 我那个大块的第一个值是容积率 所以编号</font></p>
<p><font face="Verdana">就编到容积率上面去了,这个有没有什么补救措施 或者我下次再定义块 的时候怎么才能保证我的"增强</font></p>
<p><font face="Verdana">属性编辑器"中的第一个值是地块编号<br/>4) A3-01-26 那个块我多点了两下结果就加到16了,不知道有没有办法避免这种情况</font></p>
<p><font face="Verdana">我知道问题比较复杂,还望热心的ZZXXQQ版主多费心,谢过<br/>QQ:412773370</font></p> <p>刚从 <font face="Verdana"><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=57577&replyID=&skin=0">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=57577&replyID=&skin=0</a> 这个帖子里找到这样有一个文件但是vlx的,版主如果能读到源文件可能会提示思路 运行命令同文件名numadd 辛苦了</font></p>
<p><font face="Verdana">但是它需要单行文本 也不是写入块文件 我那个是已经摆好位置的块 而不是复制出来的文本</font></p>
;属性按选择顺序加1。明经 ZZXXQQ 2009.10.2,2010.6.29
(defun c:add1 ()
(if (setq n (getint "\nInput Start Number 输入起始号 :")) (progn
(while (and (setq s1 (entsel "\nSelect Block with Attrib 选择带属性图块 :"))
(setq ent (entget(setq en (car s1))))
(= (cdr(assoc 0 ent)) "INSERT")
(= (cdr(assoc 66 ent)) 1))
(setq ent1 ent)
(while (= (cdr(assoc 0 (setq ent1 (entget(entnext(cdr(assoc -1 ent1))))))) "ATTRIB")
(if (= (cdr(assoc 2 ent1)) "地块编号") (progn
(setq ttx (cdr(assoc 1 ent1))
ttx (substr ttx 1 (- (strlen ttx) 2)))
(setq txtn (strcat ttx (if (< n 10) "0" "") (itoa n)))
(setq ent1 (subst(cons 1 txtn) (assoc 1 ent1) ent1))
(entmod ent1)
(entmod ent)
))
)
(setq n (1+ n))
)
))
(princ)
)
<p>谢谢ZZXXQQ大人,您的代码我测试过了,是可以实现尾数的递增了,但是只是尾数递增了,前面的数据没有排序, </p>
<p>如图将会出现A3-02-22与A3-01-21混排的情况,望稍加改进,企盼回复,谢过</p> <div id="textstyle_10" style="FONT-SIZE: 12pt; OVERFLOW: hidden; WORD-BREAK: break-all; TEXT-INDENT: 0px; WORD-WRAP: break-word">第一次回复,我也只求看帖 </div> <div id="textstyle_3" style="FONT-SIZE: 12pt; OVERFLOW: hidden; WORD-BREAK: break-all; TEXT-INDENT: 0px; WORD-WRAP: break-word"><strong><font face="Verdana" color="#da2549">谢谢ZZXXQQ兄弟,很有用。谢谢!</font></strong> </div> 第一次回复,我也只求看帖