明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2448|回复: 5

[函数] 如何获取图块名列表?

  [复制链接]
发表于 2015-1-14 21:47 | 显示全部楼层 |阅读模式
1明经币
如何获取图块名列表?
一个dwg文件中可能存在有多个图块,但这些图块不一定已插入在图档中,如何得到所有的图块名列表,而不是仅仅得到已插入图档的图块名列表?
已插入的图块名列表,可以通过全选 ,再通过组码来遍历得到,但是未插入的图块名列表如何得到?

最佳答案

查看完整内容

(tblsearch table-name symbol [setnext])
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-1-14 21:47 | 显示全部楼层
(tblsearch table-name symbol [setnext])

回复

使用道具 举报

发表于 2015-1-14 23:41 | 显示全部楼层
Andyhon 发表于 2015-1-14 22:29
(tblsearch table-name symbol [setnext])

长老 晓之以情 动之以理. 给方法.
支持~~~
回复

使用道具 举报

发表于 2015-1-15 08:08 | 显示全部楼层
  1. (defun c:lstlay ()
  2. (while (setq laylst (tblnext "LAYER" (not laylst)))
  3.   (write-line (cdr(assoc 2 laylst))
  4. )
  5. (princ)
  6. )
回复

使用道具 举报

 楼主| 发表于 2015-1-15 08:26 | 显示全部楼层
;;获取所有的图块名
  (defun getblklist (/ TblList BlkList)
    (setq TblList (tblnext "block" 't))
    (while TblList
      (setq BlkList (cons (cdr (assoc 2 TblList)) BlkList)) ;if
      (setq TblList (tblnext "block"))
    )                                        ;while
    BlkList
  )

以上程序由LTools 提供,非常好用,同时也谢谢各位朋友的回答。
回复

使用道具 举报

发表于 2015-1-15 08:48 | 显示全部楼层
另版本参考

  1. ;;; http://forums.autodesk.com/t5/Visual-LISP-AutoLISP-and-General/scan-blocks-and-nested-blocks/td-p/3014594/page/2
  2. (defun c:ScanBlocks (/ foo efName name def)
  3.   (vl-load-com)
  4.   (defun foo (pref blk)
  5.     (vlax-for o blk
  6.       (if
  7.         (and
  8.           (= (vla-get-ObjectName o) "AcDbBlockReference")
  9.           (setq name   (vla-get-Name o)
  10.                 efName (vlax-get
  11.                          o
  12.                          (if (vlax-property-available-p o 'EffectiveName)
  13.                            'EffectiveName
  14.                            'Name
  15.                          )
  16.                        )
  17.           )
  18.           (setq def (vla-item *blocks* efName))
  19.           (= (vla-get-IsXref def) :vlax-false)
  20.         )
  21.          (progn
  22.            (princ
  23.              (strcat
  24.                "\n"
  25.                pref
  26.                """
  27.                name
  28.                """
  29.                (if (/= name efName)
  30.                  (strcat "(" efName ")")
  31.                  ""
  32.                )
  33.              )
  34.            )
  35.            (foo (strcat "  " pref) def)
  36.          )
  37.          ""
  38.       )
  39.     )
  40.   )
  41.   (or *acad* (setq *acad* (vlax-get-acad-object)))
  42.   (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*)))
  43.   (or *blocks* (setq *blocks* (vla-get-Blocks *acdoc*)))
  44.   (vlax-for b *blocks*
  45.     (if (and (= (vla-get-IsXref b) :vlax-false)
  46.              (= (vla-get-IsLayout b) :vlax-false)
  47.         )
  48.       (progn
  49.         (princ (strcat "\n\n_"" (vla-get-Name b) """))
  50.         (foo "  |_" b)
  51.       )
  52.     )
  53.   )
  54.   (textscr)
  55.   (princ)
  56. )

评分

参与人数 1明经币 +1 收起 理由
革天明 + 1 谢谢指导!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 13:34 , Processed in 0.704890 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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