明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 16003|回复: 40

[源码] 块属性提取到excel [已解决]

  [复制链接]
发表于 2014-1-1 15:14 | 显示全部楼层 |阅读模式
本帖最后由 77077 于 2014-2-24 22:09 编辑

求大师们帮个忙,做一个块属性提取到excel的lsp。
要求:1.只提取“地块_控制信息”这个图层上的属性块。2.结果输出到excel
图中蓝色字体为表头,绿色字体为内容,以前一直用“attext”命令来提取,发现不能直接提取到excel,而且效率极慢。


最后多谢大师们了,提供lsp源码,我初学者,不会编写lsp,只略会些修改。

经过搜索,终于找到合适的源码了.感谢Gu_xl大大~块属性输出到csv!
  1. (defun c:tt (/ d r ss n obj atts)
  2.   (while (setq d (tblnext "block" (null d)))
  3.     (setq r (cons (cdr (assoc 2 d)) r))
  4.   )
  5.   (and r
  6.        (setq filename (getfiled "属性输出文件名" "" "csv" 1))
  7.        )
  8.   (if filename
  9.     (progn
  10.       (setq f (open filename "w"))
  11.   (foreach name r
  12.     (setq ss (ssget '((0 . "INSERT"))));选择对象,修改这里.
  13.     (if ss
  14.       (progn
  15. (setq atts (append
  16.      (vlax-invoke (setq obj (vlax-ename->vla-object (ssname ss 0))) 'GetConstantAttributes)
  17.      (vlax-invoke obj 'GetAttributes)
  18.      )
  19.      )
  20.       (princ "序号," f)
  21.       (foreach att atts
  22.         (princ (vla-get-TagString att) f)
  23.         (princ "," f)
  24.         );求出属性列表,写表头
  25.       (princ "\n" f)
  26.       (setq n -1)
  27.       (repeat (sslength ss)
  28.         (setq obj (vlax-ename->vla-object (ssname ss (setq n (1+ n)))))
  29.         (setq atts (append
  30.        (vlax-invoke obj 'GetConstantAttributes)
  31.        (vlax-invoke obj 'GetAttributes)
  32.        )
  33.        )
  34. (princ (1+ n) f) (princ "," f)
  35.         (foreach att atts
  36.           (princ (vla-get-TextString att) f) (princ "," f)
  37.           )
  38.         (princ "\n" f);写出属性值
  39.         )
  40.       )
  41.       )
  42.     )
  43.       (close f)
  44.   )
  45.     )
  46.   )

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-12-12 20:41 | 显示全部楼层
s678z 发表于 2014-1-2 08:17
不需要程序,见http://bbs.mjtd.com/thread-96635-1-1.html,把附件文件按你的块属性名字修改就可使用,见h ...

大神你的帖子权限太高了都不能看
发表于 2018-7-7 23:29 | 显示全部楼层
非常好的程序,但能否合并同类项,最后汇总出数量?
发表于 2020-9-22 00:11 | 显示全部楼层
用EXCLE打开是乱码要怎么做
 楼主| 发表于 2014-1-1 15:17 | 显示全部楼层
这是在cad特性上看到的块属性

本帖子中包含更多资源

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

x
 楼主| 发表于 2014-1-1 15:21 | 显示全部楼层
这是cad文件

本帖子中包含更多资源

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

x
发表于 2014-1-1 19:08 | 显示全部楼层

  1. ;; 需要e派工具箱(XCAD)的支持:http://yunpan.cn/QXQKsW9gAPmpF
  2. (defun c:tt ()
  3.   (if (setq ss (ssget '((0 . "INSERT") (8 . "地块_控制信息") (66 . 1))))
  4.     (progn (setq i -1
  5.                  lst '()
  6.            )
  7.            (while (setq s1 (ssname ss (setq i (1+ i))))
  8.              (setq a (mapcar 'cdr (xyp-Get-Attibutes s1))
  9.                    b '(0 4 1 5 3 2 6 7)
  10.                    lst (cons (mapcar '(lambda (x) (nth x a)) b) lst)
  11.              )
  12.            )
  13.            (setq lst (vl-sort lst '(lambda (x y) (< (car x) (car y))))
  14.                  lst (cons '("地块编号"        "用地代码" "总面积" "容积率" "建筑密度"        "绿地率" "建筑限高" "公共设施") lst))
  15.            (xyp-lst2xls lst)
  16.     )
  17.   )
  18.   (princ)
  19. )
发表于 2014-1-2 08:15 | 显示全部楼层
xyp1964 发表于 2014-1-1 19:08

选择对象:  ; 错误: no function definition: XYP-GET-ATTIBUTES
发表于 2014-1-2 08:17 | 显示全部楼层
不需要程序,见http://bbs.mjtd.com/thread-96635-1-1.html,把附件文件按你的块属性名字修改就可使用,见http://bbs.mjtd.com/thread-95141-1-1.html
发表于 2014-1-2 09:00 | 显示全部楼层
菜卷鱼 发表于 2014-1-2 08:15
选择对象:  ; 错误: no function definition: XYP-GET-ATTIBUTES

  1. (defun xyp-get-Attibutes (ename / obj lst x)
  2.   (setq        obj (vlax-ename->vla-object ename)
  3.         lst '()
  4.   )
  5.   (if (and (= (vla-Get-ObjectName obj) "AcDbBlockReference")
  6.            (= (vla-Get-HasAttributes obj) :vlax-true)
  7.       )
  8.     (mapcar '(lambda (x)
  9.                (setq lst (cons (cons (vla-Get-TagString x) (vla-Get-TextString x))
  10.                                lst
  11.                          )
  12.                )
  13.              )
  14.             (vlax-safearray->list
  15.               (vlax-variant-value (vla-GetAttributes obj))
  16.             )
  17.     )
  18.   )
  19.   (reverse lst)
  20. )
发表于 2014-1-2 09:17 | 显示全部楼层
s678z 发表于 2014-1-2 08:17
不需要程序,见http://bbs.mjtd.com/thread-96635-1-1.html,把附件文件按你的块属性名字修改就可使用,见h ...

代码是要来学习
发表于 2014-1-2 09:39 | 显示全部楼层
xyp1964 发表于 2014-1-2 09:00

可能没办法体验了,我们公司的EXCEL软件是libreoffice4.0,工具箱好像不认识它
 楼主| 发表于 2014-1-2 10:12 | 显示全部楼层
院长的确牛逼,多谢院长。
下次再给院长出个更难的,嘿嘿。

如果这些块都和对应的pl闭合线编成新属性块了呢,属性块中含有上面这几个属性块,不炸散的情况下能提取不?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-28 21:49 , Processed in 0.240310 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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