明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: dragoon33333

[提问] 已解决:AB两列数据,A列是类型,B列是数量,如何归类并对每类求和。

[复制链接]
 楼主| 发表于 2016-10-2 11:46:25 | 显示全部楼层
437271963 发表于 2016-10-2 11:16
写了一个,在命令行显示数据统计:

多谢,代码功能很强大。我这需求不用这么复杂。
发表于 2016-10-2 11:57:47 | 显示全部楼层
本帖最后由 437271963 于 2016-10-2 12:01 编辑
dragoon33333 发表于 2016-10-2 11:46
多谢,代码功能很强大。我这需求不用这么复杂。

这个是样例,里面根据坐标排序功能可以参考。每两个水平文字一组进行分类。
发表于 2016-10-2 14:47:24 | 显示全部楼层
试用以下程序:
  1. (defun c:flqh()
  2.   (command "_undo" "be")

  3.   (defun tqsjzb(Xssa Xn / i n Xtymb)
  4.        (setq i 0   n (sslength Xssa)  Xtymb ni)
  5.        (repeat n
  6.             (setq ent (ssname Xssa i)
  7.                   dxf (entget ent)
  8.             )
  9.             (if (= Xn 0)
  10.                 (setq Xtymb (cons (list (cdr (assoc 1 dxf)) (cdr (assoc 10 dxf))) Xtymb))
  11.                 (setq Xtymb (cons (list (cdr (assoc 1 dxf)) (cdr (assoc 10 dxf)) ent) Xtymb))
  12.             )
  13.             (setq i (1+ i))
  14.        )
  15.       
  16.        (setq Xtymb (vl-sort Xtymb '(lambda(e1 e2)
  17.                                           (setq pt1 (cadr e1)
  18.                                                 pt2 (cadr e2)
  19.                                           )
  20.                                           (if (equal (cadr pt1) (cadr pt2) 2.0)
  21.                                               (< (car pt1) (car pt2))
  22.                                               (> (cadr pt1) (cadr pt2))
  23.                                           )
  24.                                       )
  25.                       )
  26.        )
  27.   )
  28.   
  29.   (if (progn
  30.           (princ "\n请选取要统计的数据:")
  31.           (setq ssa (ssget '((0 . "*text") (1 . "#*#"))))
  32.       )
  33.       (if (progn
  34.              (princ "\n请选取更新的数据:")
  35.              (setq ssb (ssget '((0 . "*text") (1 . "#*#壁厚管材,#*#"))))

  36.          )
  37.           (progn
  38.               (setq tymba (tqsjzb ssa 0))
  39.               (setq tymbb (tqsjzb ssb 1))
  40.                     
  41.               (setq sjb nil)
  42.               (while tymba
  43.                    (setq sjb (cons (list (car (car tymba)) (car (cadr tymba))) sjb))
  44.                    (setq tymba (cdr (cdr tymba)))
  45.               )
  46.               (setq qhjg 'nil)
  47.               (foreach zb sjb
  48.                    (if (setq cxjg (assoc (car zb) qhjg))
  49.                        (setq qhjg (subst (list (car zb) (+  (cadr cxjg) (read (cadr zb)))) cxjg qhjg))
  50.                        (setq qhjg (cons (list (car zb) (read (cadr zb))) qhjg))
  51.                    )
  52.               )
  53.               (setq qhjg (vl-sort qhjg '(lambda(x1 x2)(< (car x1) (car x2)))))
  54.               (setq Newsjb nil)
  55.               (while tymbb
  56.                    (setq Newsjb (cons (list (car (car tymbb)) (last (cadr tymbb))) Newsjb))
  57.                    (setq tymbb (cdr (cdr tymbb)))
  58.               )
  59.               (foreach zb qhjg
  60.                    (If (setq cxjg (assoc (strcat (car zb) "壁厚管材" ) Newsjb))
  61.                        (progn
  62.                             (setq ent (last cxjg)
  63.                                   dxf (entget ent)
  64.                                   dxf (subst (cons 1 (rtos (cadr zb))) (assoc 1 dxf) dxf)
  65.                             )
  66.                             (entmod dxf)
  67.                        )
  68.                    )
  69.               )
  70.          )
  71.       )
  72.   )

  73.   (command "_undo" "e")
  74.   (princ)
  75. )
 楼主| 发表于 2016-10-2 15:30:26 | 显示全部楼层
yshf 发表于 2016-10-2 14:47
试用以下程序:

多谢大神,代码思路非常好。我嵌套了四五层最终也弄出来了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-20 06:27 , Processed in 0.140155 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表