本帖最后由 cabinsummer 于 2012-4-14 15:53 编辑
今天贴一个求最大标号的函数
- (defun max_code (/ ss edata)
- (if (setq ss (ssget "x" '((2 . "DTL-*"))));;;收集块名为DTL-L或DTL-R的属性块
- (progn
- (setq edata (itoa (1+ (apply 'max (mapcar 'read (entlist->dxflist (mapcar 'entnext (ss->entlist ss)) 1))))));;;选择集整体求图元名后求下一个图元(即代号属性),在求组码1的值。再求代号中的最大值
- (repeat (- 3 (strlen edata));;;此处是按公司习惯代码为3位,所以我在前面加0。读者没需求可以不在乎这个重复,程序可以简化progn。
- (setq edata (strcat "0" edata))
- )
- )
- )
- )
此处用了大量的表处理函数,这个是经典中的经典,读者可以好好体会。本函数是参悟CHEN QJ的一些提示得到的,再次还得感谢CHEN QJ及GXL。
|