明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1029|回复: 8

[提问] 块属性导出excel后怎么修改导出的excel表头?

[复制链接]
发表于 2022-11-13 10:12:45 | 显示全部楼层 |阅读模式
5明经币
这是属性块导出属性值、块、XY坐标到exce打开(csv格式)的插件, 还差个块名称、坐标表头没补充。  技术太水,研究了下不得要领,望高人指点。








(defun c:N88 (/ atts d f filename n obj r ss) ;(/ d r ss n obj atts)
(setq atts nil)
  (while (setq d (tblnext "block" (null d)))
    (setq r (cons (cdr (assoc 2 d)) r))
  )
(setq dizhi "C:/Users/Administrator/Desktop/校验888.csv")
  (and r
                (setq filename (getfiled "属性输出文件名" dizhi "csv" 32))
  )
  (if filename
    (progn
      (setq f (open filename "w"))
      (setq ss (ssget "X" '((0 . "INSERT")(2 . "电缆统计1,G-DZPJT1,本册新电缆,本册新电缆1,他册新电缆,保存时间")))) ;选择对像,修改这里
                        ;(foreach name r
                        ;(foreach (sslength ss) r
                        ;(setq ss (ssget '((0 . "INSERT"))));选择对像,修改这里.
      (if ss
        (progn
          (setq
            atts (append
                   (vlax-invoke
                     (setq obj (vlax-ename->vla-object (ssname ss 0)))
                     'GetConstantAttributes
                   )
                   (vlax-invoke obj 'GetAttributes)
                 )
          )
          (princ "序号," f)
          (foreach att atts
            (princ (vla-get-TagString att) f)
            (princ "," f)
          )                             ;求出属性列表,写表头
          (princ "\n" f)
          (setq n -1)
          (repeat (sslength ss)
            (setq
              obj (vlax-ename->vla-object (ssname ss (setq n (1+ n))))
            )
            (setq atts (append
                         (vlax-invoke obj 'GetConstantAttributes)
                         (vlax-invoke obj 'GetAttributes)
                                                                                                 (LIST(LIST
                                                                                                                                (Vlax-Get obj 'InsertionPoint )
                                                                                                                                (Vlax-Get obj 'Name )
                                                                                                                        ))
                       )
            )
            (princ (1+ n) f)
            (princ "," f)
            ;(foreach att (reverse atts)  ;;;同一列前后颠倒
            (foreach att atts
                                                        (IF(listp ATT)
                                                                (progn
                                                                        (princ (CADR ATT) f)
                                                                        (princ "," f)
                                                                        (princ (car(CAR ATT)) f)
                                                                        (princ "," f)
                                                                        (princ (cadr(CAR ATT)) f)
                                                                )
                                                                (princ (vla-get-TextString att) f)
                                                        )
              (princ "," f)
            )
            (princ "\n" f)              ;写出属性值
          )
                                        (close f)

        )
      )
    )
    ;(close f)
  )


(vlax-invoke
(vlax-get-or-create-object "Wscript.Shell")
'RUN
dizhi );打开文件代码


)


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

最佳答案

查看完整内容

这么执着干嘛呀,凑合能用就行了呗!!! (defun c:NM (/ atts d dizhi f filename n obj r ss) ;(/ d r ss n obj atts) (setq atts nil) (while (setq d (tblnext "block" (null d))) (setq r (cons (cdr (assoc 2 d)) r)) ) (setq dizhi "C:/Users/Administrator/Desktop/校验888.csv") (and r (setq filename (getfiled "属性输出文件名" dizhi "csv" 32)) ) (if filename (p ...
发表于 2022-11-13 10:12:46 | 显示全部楼层
这么执着干嘛呀,凑合能用就行了呗!!!








(defun c:NM (/ atts d dizhi f filename n obj r ss) ;(/ d r ss n obj atts)
        (setq atts nil)
  (while (setq d (tblnext "block" (null d)))
    (setq r (cons (cdr (assoc 2 d)) r))
  )
        (setq dizhi "C:/Users/Administrator/Desktop/校验888.csv")
  (and r
                (setq filename (getfiled "属性输出文件名" dizhi "csv" 32))
  )
  (if filename
    (progn
      (setq f (open filename "w"))
                        (foreach name (list "电缆统计1" "G-DZPJT1" "本册新电缆" "本册新电缆1" "他册新电缆" "保存时间")  ;选择对像,修改这里
                                (setq ss (ssget "X" (list '(0 . "INSERT")(cons 2 name))))
                                ;(foreach name r
                                ;(foreach (sslength ss) r
                                ;(setq ss (ssget '((0 . "INSERT"))));选择对像,修改这里.
                                (if ss
                                        (progn
                                                (setq
                                                        atts (append
                                                                                 (vlax-invoke
                                                                                         (setq obj (vlax-ename->vla-object (ssname ss 0)))
                                                                                         'GetConstantAttributes
                                                                                 )
                                                                                 (vlax-invoke obj 'GetAttributes)
                                                                         )
                                                )
                                                (princ "序号," f)
                                                (foreach att (append (mapcar 'vla-get-TagString atts)(list "块名" "x坐标" "y坐标"))
                                                        (princ att f)
                                                        (princ "," f)
                                                )                             ;求出属性列表,写表头
                                                (princ "\n" f)
                                                (setq n -1)
                                                (repeat (sslength ss)
                                                        (setq
                                                                obj (vlax-ename->vla-object (ssname ss (setq n (1+ n))))
                                                        )
                                                        (setq atts (append
                                                                                                         (vlax-invoke obj 'GetConstantAttributes)
                                                                                                         (vlax-invoke obj 'GetAttributes)
                                                                                                         (LIST(LIST
                                                                                                                                        (Vlax-Get obj 'InsertionPoint )
                                                                                                                                        (Vlax-Get obj 'Name )
                                                                                                                                ))
                                                                                                 )
                                                        )
                                                        (princ (1+ n) f)
                                                        (princ "," f)
                                                        ;(foreach att (reverse atts)  ;;;同一列前后颠倒
                                                        (foreach att atts
                                                                (IF(listp ATT)
                                                                        (progn
                                                                                (princ (CADR ATT) f)
                                                                                (princ "," f)
                                                                                (princ (car(CAR ATT)) f)
                                                                                (princ "," f)
                                                                                (princ (cadr(CAR ATT)) f)
                                                                        )
                                                                        (princ (vla-get-TextString att) f)
                                                                )
                                                                (princ "," f)
                                                        )
                                                        (princ "\n" f)              ;写出属性值
                                                )
                                        )
        )
      )
                        (close f)
    )
    ;(close f)
  )
        (vlax-invoke
                (vlax-get-or-create-object "Wscript.Shell")
                'RUN
                dizhi );打开文件代码
        (princ)
)
回复

使用道具 举报

 楼主| 发表于 2022-11-13 10:18:24 | 显示全部楼层
本帖最后由 q2284555 于 2022-11-13 10:20 编辑

效果如图所示

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2022-11-13 14:01:43 | 显示全部楼层
;图块名称及坐标没啥意义


本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2022-11-13 17:37:11 | 显示全部楼层
xyp1964 发表于 2022-11-13 14:01
;图块名称及坐标没啥意义

我是导出到excel里作为数据源,在excel里查找分析数据使用的。
回复

使用道具 举报

 楼主| 发表于 2022-11-13 20:26:37 | 显示全部楼层
xj6019 发表于 2022-11-13 10:12
这么执着干嘛呀,凑合能用就行了呗!!!

能用了,感谢!!·~
回复

使用道具 举报

发表于 2022-11-14 20:36:39 | 显示全部楼层
xyp1964 发表于 2022-11-13 14:01
;图块名称及坐标没啥意义

牛人。楼主和我是同道中人啊,做电气二次设计。
回复

使用道具 举报

发表于 2022-11-14 20:51:29 | 显示全部楼层
xyp1964 发表于 2022-11-13 14:01
;图块名称及坐标没啥意义

院长,请问您展示的这个有源码吗?我觉得您这个很实用。
回复

使用道具 举报

 楼主| 发表于 2022-11-15 06:46:04 来自手机 | 显示全部楼层
有一个梦想 发表于 2022-11-14 20:51
院长,请问您展示的这个有源码吗?我觉得您这个很实用。

其实以上CAD自带的数据提取功能都能实现。但需要经常提取的话,有插件还是能省点设置的功夫的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 02:17 , Processed in 0.197575 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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