本帖最后由 llsheng_73 于 2014-10-24 19:14 编辑
 - (defun C:cirlebyD(/ ss i e enlst fp)
- (setq fp(getfiled"选择输出文件""C:\\""txt"36)i -1)
- (if(setq ss(ssget"X"'((0 . "circle"))));;可以加上图层等其它过滤或者去掉"X"改为手动选择
- (repeat(sslength ss)
- (setq i(1+ i)e(entget(ssname ss i))enlst(cons(list(cdr(assoc 40 e))(cdr(assoc 10 e)))enlst))))
- (setq i"")
- (foreach x(vl-sort(subtotals3 enlst 0 1)'(lambda(x y)(<(car x)(car y))))
- (setq i(strcat i"D"(RTOS(*(CAR X)2)2 2)"\n"))
- (foreach y(cdr x)
- (setq i(strcat i"X"(rtos(car y)2 4)" Y"(rtos(cadr y)2 4)"\n"))));;x y之间分隔符可根据需要自行修改
- (if(> i "")(progn(setq fp(open fp"a"))(write-line i fp)(close fp)));;可根据需要修改文件直接覆盖还是进行追加
- )
自定义通用分类函数subtotals3详见嵌套表分类统计http://bbs.mjtd.com/forum.php?mo ... &fromuid=202795
其实用subtotals2也可以,不过subtotals3更灵活,习惯于使用它而已
如果有必要,可以先对分类的结果进行排序(即对直径排序)
(foreach x(vl-sort(subtotals3 enlst 0 1)'(lambda(x y)(<(car x)(car y))))
|