明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6900|回复: 20

明细表汇总中零件数量统计

  [复制链接]
发表于 2011-11-2 17:15:32 | 显示全部楼层 |阅读模式
本帖最后由 xianaihua 于 2011-11-2 17:17 编辑

在机械设计中,将大量的图纸的明细表各属性统计成数据文件(txt、mdb、xls)后,各零部件数量、重量的统计,特别是数量的统计,是很麻烦的事。本人通过摸索,用递归的方法解决了这一问题。

统计方法:先找出该零件代号在父装配中的数量,再找出父装配在更上一级父装配中数量。。。,以此类推,直到查询到最顶级装配,最后,将这些数量相乘,便得出该零部件的总数量。

首先将提取的明细表数据构建一个列表(在本例中,本人只列出了三个)
;;;bomlst:是通过一些方法获得的零部件明细表列表(具体方法在此不作讨论)
;;;其中每行的第一列为零部件代号;
;;;          第二列为零部件所属装配代号;
;;;          第三列为零部件在所属装配中的数量;
(setq bomlst '(
        ("sub-assembly1-1" "assembly" "2")
        ("sub-assembly1-2" "assembly" "3")
        ("sub-assembly1-3" "assembly" "1")
        ("pat1-1" "assembly" "3")
        ("pat1-2" "assembly" "2")
        ("pat1-3" "assembly" "5")
        ("sub-assembly2-1" "sub-assembly1-1" "2")
        ("sub-assembly2-2" "sub-assembly1-1" "2")
        ("sub-assembly2-3" "sub-assembly1-1" "4")
        ("pat2-1" "sub-assembly1-1" "3")
        ("pat2-2" "sub-assembly1-2" "4")
        ("pat1-3" "sub-assembly1-1" "2")
        ("pat3-1" "sub-assembly1-3" "2")
        ("pat3-2" "sub-assembly1-3" "3")
        ("pat2-1" "sub-assembly1-2" "1")
        ("none" "sub-assembly2-2" "3")
        ("none" "sub-assembly2-1" "3")
       )
)
通过运行程序会得到这样的结果(保存到txt文件中)
("sub-assembly1-1" "assembly" "2" "2")
("sub-assembly1-2" "assembly" "3" "3")
("sub-assembly1-3" "assembly" "1" "1")
("pat1-1" "assembly" "3" "3")
("pat1-2" "assembly" "2" "2")
("pat1-3" "assembly" "5" "5")
("sub-assembly2-1" "sub-assembly1-1" "2" "4")
("sub-assembly2-2" "sub-assembly1-1" "2" "4")
("sub-assembly2-3" "sub-assembly1-1" "4" "8")
("pat2-1" "sub-assembly1-1" "3" "6")
("pat2-2" "sub-assembly1-2" "4" "12")
("pat1-3" "sub-assembly1-1" "2" "4")
("pat3-1" "sub-assembly1-3" "2" "2")
("pat3-2" "sub-assembly1-3" "3" "3")
("pat2-1" "sub-assembly1-2" "1" "3")
("none" "sub-assembly2-2" "3" "12")
("none" "sub-assembly2-1" "3" "12")
其中第四项为统计的每个零部件的重数量。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

好程序,赞一个  发表于 2011-11-2 20:04

评分

参与人数 1明经币 +1 收起 理由
革天明 + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-5-16 11:42:01 | 显示全部楼层
大佬,弄个动态图看看效果
回复 支持 1 反对 0

使用道具 举报

发表于 2022-4-15 22:37:06 | 显示全部楼层

学习了  好好研究下
发表于 2018-2-24 22:37:53 | 显示全部楼层
学习了  好好研究下
发表于 2011-11-2 21:41:48 | 显示全部楼层
对这类表处理感兴趣,顶一下,没有明经币下不了
发表于 2011-12-12 11:26:06 | 显示全部楼层
你到东东 支持中
发表于 2011-12-18 10:37:50 | 显示全部楼层
不错的例子
 楼主| 发表于 2011-12-18 12:50:33 | 显示全部楼层
请教了俄罗斯高手:ElpanovEvgeniy 后源程序大大简化,速度极快
  1. (defun SumPartCounts (bom_lst / f)
  2.   (defun f (a bom_lst)
  3.     (if a
  4.       (* (atoi (caddr a)) (f (assoc (cadr a) bom_lst) bom_lst))
  5.       1
  6.     ) ;_ 结束if
  7.   ) ;_ 结束defun
  8.   (mapcar (function (lambda (a) (itoa (f a bom_lst))))
  9.           bom_lst
  10.   ) ;_ 结束mapcar
  11. ) ;_ 结束defun
(setq bomlst '(
        ("sub-assembly1-1" "assembly" "2")
        ("sub-assembly1-2" "assembly" "3")
        ("sub-assembly1-3" "assembly" "1")
        ("pat1-1" "assembly" "3")
        ("pat1-2" "assembly" "2")
        ("pat1-3" "assembly" "5")
        ("sub-assembly2-1" "sub-assembly1-1" "2")
        ("sub-assembly2-2" "sub-assembly1-1" "2")
        ("sub-assembly2-3" "sub-assembly1-1" "4")
        ("pat2-1" "sub-assembly1-1" "3")
        ("pat2-2" "sub-assembly1-2" "4")
        ("pat1-3" "sub-assembly1-1" "2")
        ("pat3-1" "sub-assembly1-3" "2")
        ("pat3-2" "sub-assembly1-3" "3")
        ("pat2-1" "sub-assembly1-2" "1")
        ("none" "sub-assembly2-2" "3")
        ("none" "sub-assembly2-1" "3")
       )
) ;_ 结束setq

(SumPartCounts bomlst);=>("2" "3" "1" "3" "2" "5" "4" "4" "8" "6" "12" "4" "2" "3" "3" "12" "12")


发表于 2012-3-3 09:04:52 | 显示全部楼层
收藏了,等有了明经币再下
发表于 2012-3-3 11:54:18 | 显示全部楼层
最近忙了点
收藏了,
等有了空了再下
发表于 2013-1-26 15:46:35 | 显示全部楼层
留个脚板印吧,还看不懂
发表于 2013-3-14 12:41:52 | 显示全部楼层
留个言,以后再学习吧
发表于 2013-3-24 16:58:55 | 显示全部楼层
学习了  好好研究下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 19:00 , Processed in 0.214068 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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