乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 99|回复: 1

[编程交流] 从块生成bom表列表

[复制链接]

20

主题

81

帖子

61

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 16:36:33 | 显示全部楼层 |阅读模式
编辑:
看了这个
起初我不想去excel,但看了之后。。。。这让我改变了主意。
 
 
 
我正在做一个自动化bom表的项目。
我在网上搜索了一下,发现:
用于制作属性表的c#程序:
http://through-the-interface.typepad.com/through_the_interface/2007/06/creating_a_tabl.html
不知道如何运行
用于创建属性表的lisp。
http://forums.cadalyst.com/showthread.php?t=6430
效果很好,但遗漏了一些非常重要的东西。请参见此图:
173633mn1rgkkvl9v1kgg0.jpg
 
我用了eattext
这一功能强大的autocad功能与其他功能强大的autocad功能一样,只适用于90%的用户,但缺少以下功能:
没有气球数字添加,可以做到相当容易的手。
当块位于模型空间中时,不能在图纸空间中使用。这总是。。。
解决方法是使用chspace,但规模是错误的。AAAAA RGH
 
总之,对我来说最好的方法是更新lisp。
或者有人已经这样做了,想要分享或帮助?
我认为合并相同的块名将是最困难的,所以如果有人知道如何做到这一点?
从第二个链接到lisp表的属性:
  1. (Defun c:attable (/ at>att at>item at>set atable cnt cw ena nc nr pt rh)
  2.    (vl-load-com)
  3.    ;; GET_ATTS BY BILL KRAMER
  4.    (defun get_ATTS (EN / EL ATTS)
  5. (setq EL (entget EN))
  6. (setq ENA (cdr (assoc 2 EL))) ; wiz
  7. (if (and (= (cdr (assoc 0 EL)) "INSERT")
  8.          (= (cdr (assoc 66 EL)) 1)
  9.     ) ;_ end and
  10.     (progn
  11.         (setq EN (entnext EN)
  12.               EL (entget EN)
  13.         ) ;_ end setq
  14.         (while (= (cdr (assoc 0 EL)) "ATTRIB")
  15.             (setq ATTS (cons (list
  16.                                  (vla-get-ObjectID
  17.                                      (vlax-ename->vla-object EN)
  18.                                  ) ; wiz
  19.                                  (cdr
  20.                                      (assoc 2 EL)
  21.                                  ) ;_ end_cdr
  22.                                  (cdr (assoc 1 EL))
  23.                              ) ;_ end_list
  24.                              ATTS
  25.                        ) ;_ end_cons
  26.                   EN   (entnext EN)
  27.                   EL   (entget EN)
  28.             ) ;_ end setq
  29.         ) ;_ end while
  30.         (list ena (reverse ATTS)) ; wiz
  31.     ) ;_ end progn
  32. ) ;_ end if
  33.    ) ;_ end_defun
  34.    (if        (setq at>set (ssget '((0 . "INSERT"))))
  35. (progn
  36.     (setq at>att
  37.              (mapcar 'get_atts
  38.                      (vl-remove-if
  39.                          'listp
  40.                          (mapcar 'cadr (ssnamex at>set))
  41.                      ) ;_ end_vl-remove-if
  42.              ) ;_ end_mapcar
  43.     ) ;_ end_setq
  44.     (setq PT (getpoint "\nTable insertion point: ")
  45.           RH (* 2.0 (getvar "TEXTSIZE"))
  46.           CW (* 20.0 (getvar "TEXTSIZE"))
  47.           NR (+ 2 (length at>att))
  48.           NC (1+ (length (cadar at>att)))
  49.     ) ;_ end_setq
  50.     (setq
  51.         aTable (vla-addtable
  52.                    (vla-get-modelspace
  53.                        (vla-get-activedocument
  54.                            (vlax-get-acad-object)
  55.                        ) ;_ end_vla-get-activedocument
  56.                    ) ;_ end_vla-get-modelspace
  57.                    (vlax-3d-point PT)
  58.                    NR
  59.                    NC
  60.                    RH
  61.                    CW
  62.                ) ;_ end_vla-addtable
  63.     ) ;_ end_setq
  64.     (vla-setcellvalue aTable 0 0 "B.O.M.")
  65.     (vla-setcellvalue aTable 1 0 "Block Name")
  66.     (vla-setcellvalue aTable 1 1 "Attributes")
  67.     (vla-MergeCells aTable 1 1 1 (length (cadar at>att)))
  68.     (setq CNT 2) ;_ end_setq
  69.     (foreach Item at>att
  70.         (vla-setcellvalue aTable CNT 0 (car Item))
  71.         (setq at>item 1)
  72.         (while (<= at>item (length (cadar at>att)))
  73.             (vl-catch-all-apply
  74.                 '(lambda ()
  75.                      (vla-settext
  76.                          aTable
  77.                          CNT
  78.                          at>item
  79.                          (strcat
  80.                              "%<\\AcObjProp Object(%<\\_ObjId "
  81.                              (itoa (car (nth (1- at>item) (cadr Item))))
  82.                              ">%).TextString>%"
  83.                          ) ;_ end_strcat
  84.                      ) ;_ end_vla-setcellvalue
  85.                  ) ;_ end_lambda
  86.             ) ;_ end_vl-catch-all-apply
  87.             (setq at>item (1+ at>item))
  88.         ) ;_ end_while
  89.         (setq CNT (1+ CNT))
  90.         ;;ready next row
  91.     ) ;_ end_foreach
  92. ) ;_ end_progn
  93.    ) ;_ end_if
  94.    (princ)
  95. ) ;_ end_Defun

编辑用于计算块的mac代码,并合并相同的块:
http://www.cadtutor.net/forum/showthread.php?51370-块列表&突出显示=列表+块
现在让Franken一起构建2
回复

使用道具 举报

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:48:12 | 显示全部楼层
Hjx,我有同样的要求!有谁能帮帮我们吗!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 08:41 , Processed in 0.546382 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表