| 本帖最后由 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))))
 
 
 |