找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 645|回复: 4

[编程申请:关于块属性的编程!

[复制链接]
发表于 2004-6-9 15:50:13 | 显示全部楼层 |阅读模式

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

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

×
在下通常将常见的设备都制作成块,绘图时插入即可,非常方便。
    制作的块一般有四个附加属性,即Tag1~Tag4对应值分别是设备名称、规格型号、使用位置、备注(使用要求、厂家等描述)。
    希望编程将四个Tag对应的四个Value值提取出来,然后导入Excel。
请大侠们帮忙,小弟不胜感激!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-6-10 04:18:18 | 显示全部楼层
提取属性请参考:
(defun GetAttributes (blk / lst)
  (vl-load-com)
  (if (safearray-value
        (setq lst (vlax-variant-value
                    (vla-getattributes (vlax-ename->vla-object blk))
                  )
        )
      )
    (mapcar '(lambda (x) (list (vla-get-tagstring x)
                               (vla-get-textstring x)
                               (vlax-vla-object->ename x)
                         )
             )
             (vlax-safearray->list lst)
    )
  )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-6-11 10:02:40 | 显示全部楼层
有请黄金长老帮忙啦!!! :)



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

使用道具 举报

发表于 2004-7-5 19:39:22 | 显示全部楼层
本身不是有属性提取的且可以导入电子表格的吗?为什么还要做程序呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-7-5 20:19:37 | 显示全部楼层
由于你没有提供块名,所以程序要求手动输入
先打开Excel再运行
Sub Test()
On Error Resume Next

    Dim ss As AcadSelectionSet
    Dim ft(1) As Integer, fd(1)
    Dim i As AcadBlockReference
    Dim objExcel As Object
    Dim pSheet As Object
    Dim pRange As Object
    Dim pNum As Integer

    Set objExcel = GetObject(, "Excel.Application")
    If Err Then MsgBox "请先打开Excel!": Exit Sub
    Set pSheet = objExcel.ActiveSheet
   
    ft(0) = 0: fd(0) = "Insert"
    ft(1) = 2: fd(1) = ThisDrawing.Utility.GetString(True, vbCr & "请输入块名:")
    ThisDrawing.SelectionSets("*TlsTest*").Delete
    Set ss = ThisDrawing.SelectionSets.Add("*TlsTest*")
    ss.Select acSelectionSetAll, , , ft, fd

    Set pRange = pSheet.Range("A1"): pRange.Value = "设备名称"
    Set pRange = pSheet.Range("B1"): pRange.Value = "规格型号"
    Set pRange = pSheet.Range("C1"): pRange.Value = "使用位置"
    Set pRange = pSheet.Range("D1"): pRange.Value = "备注"

    pNum = 2
   
    For Each i In ss
   
        a = i.GetAttributes
        Set pRange = pSheet.Range("A" & pNum): pRange.Value = a(0).TextString
        Set pRange = pSheet.Range("B" & pNum): pRange.Value = a(1).TextString
        Set pRange = pSheet.Range("C" & pNum): pRange.Value = a(2).TextString
        Set pRange = pSheet.Range("D" & pNum): pRange.Value = a(3).TextString
        pNum = pNum + 1
    Next i

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-21 07:22 , Processed in 0.331602 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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