找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2861|回复: 12

[求助] 帮忙看看这个提取属性块的程序!

[复制链接]

已领礼包: 127个

财富等级: 日进斗金

发表于 2014-10-23 20:25:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
(defun c:tt (/ d r ss n obj atts)
  (while (setq d (tblnext "block" (null d)))
    (setq r (cons (cdr (assoc 2 d)) r))
  )
  (and r
       (setq filename (getfiled "属性输出文件名" "" "csv" 1))
       )
  (if filename
    (progn
      (setq f (open filename "w"))
  (foreach name r
   (setq ss (ssget "X" '((0 . "INSERT"))));选择对象,修改这里.
    ;(ssget ss(SSGET "X" '((0 . "INSERT") (8 . "目录")(66 . 1)) ))  ;怎么全选目录这个属性块
    (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)
       )
       )
(princ (1+ n) f) (princ "," f)
        (foreach att atts
          (princ (vla-get-TextString att) f) (princ "," f)
          )
        (princ "\n" f);写出属性值
        )
      )
      )
    )
      (close f)
  )
    )
  )
有几个问题:
1:现在提取的数据会重复3次!
2:能否只提取 目录 这个属性块的值,我改了无法实现
3:能不能实现批量提取一个文件夹的数据!

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-10-24 00:10:20 | 显示全部楼层
;(ssget ss(SSGET "X" '((0 . "INSERT") (8 . "目录")(66 . 1)) ))  ;怎么全选目录这个属性块


祖玛8是层名啊。 而且属性是子实体,你提取不到的,你得先得到属性实体,再判断是否你需要的。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2014-10-24 11:42:22 来自手机 | 显示全部楼层
我的层名改成目录好像也不行。

点评

直接是SSGET不了的。  详情 回复 发表于 2014-10-24 13:12
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-10-24 13:12:40 | 显示全部楼层
spp_wall 发表于 2014-10-24 11:42
我的层名改成目录好像也不行。

直接是SSGET不了的。

点评

那有啥办法么!!!!  详情 回复 发表于 2014-10-24 14:44
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-10-24 13:55:04 来自手机 | 显示全部楼层
用vla只能一次都提出来再用tag判断
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2014-10-24 14:44:01 | 显示全部楼层
newer 发表于 2014-10-24 13:12
直接是SSGET不了的。

那有啥办法么!!!!

点评

选完INSERT后,自己去找他下面的属性,判断啊。  详情 回复 发表于 2014-10-24 14:47
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-10-24 14:47:23 | 显示全部楼层
spp_wall 发表于 2014-10-24 14:44
那有啥办法么!!!!

选完INSERT后,自己去找他下面的属性,判断啊。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10513个

财富等级: 富甲天下

发表于 2014-10-24 20:14:43 | 显示全部楼层
  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 (setq filename (getfiled "属性输出文件名" "" "csv" 1)))
  6.   (if filename (progn
  7.    (setq f (open filename "w"))
  8.    (foreach name r
  9.     (setq ss (ssget "X" (list '(0 . "INSERT")(cons 2 name)'(8 . "目录")'(66 . 1))))
  10. ;    (setq ss (ssget "X" '((0 . "INSERT"))));选择对象,修改这里.
  11.     (if ss (progn
  12.      (setq atts (append
  13.        (vlax-invoke (setq obj (vlax-ename->vla-object (ssname ss 0))) 'GetConstantAttributes)
  14.        (vlax-invoke obj 'GetAttributes)
  15.       )
  16.      )
  17.      (princ "序号," f)
  18.      (foreach att atts
  19.       (princ (vla-get-tagstring att) f)
  20.       (princ "," f)
  21.       );求出属性列表,写表头
  22.       (princ "\n" f)
  23.       (setq n -1)
  24.       (repeat (sslength ss)
  25.        (setq obj (vlax-ename->vla-object (ssname ss (setq n (1+ n)))))
  26.        (setq atts (append
  27.          (vlax-invoke obj 'GetConstantAttributes)
  28.          (vlax-invoke obj 'GetAttributes)
  29.         )
  30.        )
  31.        (princ (1+ n) f) (princ "," f)
  32.        (foreach att atts  (princ (vla-get-textstring att) f) (princ "," f))
  33.        (princ "\n" f);写出属性值
  34.      )
  35.     ))
  36.    )
  37.    (close f)
  38.   ))
  39.   (princ)
  40. )

点评

好像只能对打开的图有效,能选择文件夹批量处理 一个文件夹得图纸么!  详情 回复 发表于 2014-10-24 22:34
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2014-10-24 22:34:13 | 显示全部楼层

好像只能对打开的图有效,能选择文件夹批量处理 一个文件夹得图纸么!

点评

需要使用 ObjectDBX  详情 回复 发表于 2014-10-25 20:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-10-25 20:04:54 | 显示全部楼层
spp_wall 发表于 2014-10-24 22:34
好像只能对打开的图有效,能选择文件夹批量处理 一个文件夹得图纸么!

需要使用 ObjectDBX

点评

本人功力不够 !!!  详情 回复 发表于 2014-10-25 22:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2014-10-25 22:19:16 | 显示全部楼层

本人功力不够 !!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 117个

财富等级: 日进斗金

发表于 2014-10-29 13:21:39 | 显示全部楼层
溜达溜达!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2024-2-27 14:01:40 | 显示全部楼层
学习学习!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-25 15:56 , Processed in 0.482258 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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