找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1808|回复: 21

[求助] [求助]:什么函数可以得到全部块的块名?

[复制链接]
发表于 2003-5-12 10:54:20 | 显示全部楼层 |阅读模式

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

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

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

已领礼包: 40个

财富等级: 招财进宝

发表于 2003-5-12 11:03:42 | 显示全部楼层

Re: [求助]:什么函数可以得到全部块的块名?

最初由 jianqiang21c 发布
[B]什么函数可以得到全部块的块名? [/B]


ACAD里面没有没有一个现成的LISP函数,你可以自己用tblnext 遍历块表,得到他们,参考下下面的代码:

  1. <normalfont>
  2. (setq tf t nl nil)
  3. (while (setq e (tblnext "block" tf))
  4.    (setq na (cdr (assoc 2 e))
  5.          tf nil
  6.    )
  7.    (setq nl (cons na nl))
  8. )
  9. (setq nl (reverse nl))
  10. </normalfont>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-12 11:43:19 | 显示全部楼层

Re: [求助]:什么函数可以得到全部块的块名?

最初由 jianqiang21c 发布
[B]什么函数可以得到全部块的块名? [/B]

  1.   [FONT=courier new]
  2. (setq out nil)
  3. (vlax-for blk (vla-get-blocks
  4.                 (vla-get-ActiveDocument (vlax-get-acad-object))
  5.               )
  6.   (setq out (cons (vla-get-name blk) out))
  7. )
  8. (if out
  9.   (reverse out)
  10.   out
  11. )
  12.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-5-12 14:58:09 | 显示全部楼层
高~~~,严重谢谢LIJIAO,不过图块列表中好象没这么多吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-12 15:48:14 | 显示全部楼层
在Vlisp中__模型空间与图纸空间视为图块的一种
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-12 16:23:06 | 显示全部楼层
最初由 jianqiang21c 发布
[B]高~~~,严重谢谢LIJIAO,不过图块列表中好象没这么多吧 [/B]

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

使用道具 举报

 楼主| 发表于 2003-5-12 17:26:33 | 显示全部楼层
就像这个一样(command ".block" "?" "")只要已经定义的块
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-5-12 20:21:20 | 显示全部楼层
只要过滤掉“*D”(标注)、“*X”(填充)及“*U”(自定义无名块)打头的块名即可。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2003-5-12 20:52:05 | 显示全部楼层
接newer程序

  1. (setq bll nil)
  2. (mapcar
  3.   '(lambda (x)
  4.      (if (not (wcmatch x "`*[XUD]*"))
  5.        (setq bll (cons x bll))
  6.      )
  7.    )
  8.   nl
  9. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-5-12 21:09:01 | 显示全部楼层

  1. </normalfont>
  2. (defun Insrt (Ent Lis)
  3. (cond
  4.   ((null Lis) (list Ent))
  5.   ((< Ent (car Lis)) (cons Ent Lis))
  6.   (T (cons (car Lis) (Insrt Ent (cdr Lis))))
  7. )
  8. )
  9. (defun today ()
  10.   (setq td (getvar "date"))
  11.   (setq time (* 86400.0 (- td (setq j (fix td)))))
  12.   (setq j (- j 1721119.0))
  13.   (setq y (fix (/ (1- (* 4 j)) 146097.0)))
  14.   (setq j (- (* j 4.0) 1.0 (* 146097.0 y)))
  15.   (setq d (fix (/ j 4.0)))
  16.   (setq j (fix (/ (+ (* 4.0 d) 3.0) 1461.0)))
  17.   (setq d (- (+ (* 4.0 d) 3.0) (* 1461.0 j)))
  18.   (setq d (fix (/ (+ d 4.0) 4.0)))
  19.   (setq m (fix (/ (- (* 5.0 d) 3) 153.0)))
  20.   (setq d (- (* 5.0 d) 3.0 (* 153.0 m)))
  21.   (setq d (fix (/ (+ d 5.0) 5.0)))
  22.   (setq y (+ (* 100.0 y) j))
  23.   (if (< m 10.0)
  24.   (setq m (+ m 3))
  25.    (progn  
  26.    (setq m (- m 9))
  27.    (setq y (1+ y))
  28.    )
  29.   )
  30. (setq datestr (strcat "\nToday's Date: "(itoa(fix m)) "/" (itoa(fix d)) "/" (itoa(fix y))))
  31. (princ)
  32. )      
  33. (defun myerror (s)                    ; If an error (such as CTRL-C) occurs
  34.                                       ; while this command is active...
  35.   (if (/= s "Function cancelled")
  36.     (princ (strcat "\nError: " s))
  37.   )
  38.   (setvar "cmdecho" ocmd)             ; Restore saved modes
  39.   (setvar "blipmode" oblp)
  40.   (setq *error* olderr)               ; Restore old *error* handler
  41.   (princ)
  42. )

  43. (defun layer ( / c d f ln lt ly n x)
  44.   (princ (strcat "\nPrinting to file: " fname "..."))
  45.   (princ "\nLayer Name\tStatus\tOn/Off\tLock\tColor\tLinetype\n" dfile)
  46.   (setq x (tblnext "layer" T))
  47.   (setq lalist nil)
  48.   (while x
  49.     (setq
  50.           ly (cdr (assoc 2 x))          ; layer name
  51.           ln (cdr (assoc 6 x))          ; linetype name
  52.           c  (cdr (assoc 62 x))         ; color number
  53.           f  (cdr (assoc 70 x))         ; "frozen" flag
  54.           lt (tblsearch "ltype" ln)     ; linetype table entry
  55.     )

  56.    (if (= (logand f 1) 1) (setq fstat "Frozen")(setq fstat "Thawed"))  
  57.    (if (= (logand f 4) 4) (setq lstat "Locked")(setq lstat "NO"))
  58.    (if (< c 0) (setq cstat "Off")(setq cstat "On"))
  59.    
  60.     (setq nextla
  61.       (strcat
  62.         ly "\t"                         ; layer name
  63.         fstat "\t"                      ; frozen/thawed
  64.         cstat "\t"                      ; on/off
  65.         lstat "\t"                      ; locked/unlocked
  66.         (itoa (abs c)) "\t"             ; color number
  67.         ln "\n"                         ; linetype name
  68.       )
  69.    )
  70.   (setq lalist (Insrt nextla lalist))
  71.   (setq x (tblnext "layer"))
  72.   )
  73.   (foreach N lalist (princ N dfile))
  74. (princ "\n\n" dfile)
  75. )


  76. ;;;  (LTYPE) - Dump the linetype table

  77. (defun ltype ( / a cl d f lt n s x)
  78.   (princ "\nLinetype Name\n" dfile)
  79.   (setq ltlist nil)
  80.   (setq x (tblnext "LTYPE" T))
  81.   (while x
  82.     (setq nextlt
  83.       (strcat
  84.         (cdr (assoc 2 x)) "\t" ; linetype name
  85.         (cdr (assoc 3 x)) "\n" ; linetype description
  86.       )
  87.     )
  88.     (setq ltlist (Insrt nextlt ltlist))
  89.     (setq x (tblnext "LTYPE"))               ; get next linetype entry
  90.   )
  91. (foreach N ltlist (princ N dfile))
  92. (princ "\n\n" dfile)
  93. )


  94. ;;;  (VIEW) - Dump the named view table

  95. (defun view ( / c d h n v w x)
  96.   (princ "\nView Name\n" dfile)
  97.   (setq x (tblnext "VIEW" T))
  98.   (setq n 0)
  99.   (setq vwlist nil)                  
  100.   (while x
  101.     (setq n  (1+ n)
  102.           nextvw  (cdr (assoc 2 x))               ; view name
  103.     )
  104.     (setq vwlist (insrt nextvw vwlist))
  105.     (setq x (tblnext  "VIEW" ))               ; get next view entry
  106.   )
  107. (if (/= n 0)
  108.      (foreach N vwlist (princ N dfile))
  109.      (princ "-None-" dfile)
  110. )
  111. (princ "\n\n" dfile)
  112. )

  113. ;;;  (STYLE) - Dump the text style table

  114. (defun style ( / cs fb ff g h n o s w x)
  115.   (princ "\nText Style\tHeight\tWidth\tOblique\tFont\tBigfont\n" dfile)
  116.   (setq n  0)
  117.   (setq x (tblnext "style" T))
  118.   (setq stylist nil)                  ; get first style
  119.   (while x
  120.     (setq n  (1+ n)
  121.           s  (fld  2 x)               ; style name
  122.           ff (fld  3 x)               ; primary font file
  123.           fb (fld  4 x)               ; big font file
  124.           h  (fld 40 x)               ; height
  125.           w  (fld 41 x)               ; width factor
  126.           o  (fld 50 x)               ; obliquing angle
  127.     )
  128.     (setq nextsty
  129.       (strcat
  130.         s                      ; edit style name
  131.         "\t" (rtos h 2 2)      ; height
  132.         "\t" (rtos w 2 2)      ; width factor
  133.         "\t" (angtos o 0 2)    ; obliquing angle
  134.         "\t" ff               ; primary font file
  135.         "\t" fb  "\n"         ; big font file
  136.       )
  137.     )
  138.     (setq stylist (insrt nextsty stylist))
  139.     (setq x(tblnext "style"))               ; get next style entry
  140.   )
  141.   (if (= n 0) (princ "-None-" dfile)
  142.               (foreach N stylist (princ N dfile))
  143.    )            
  144. (princ "\n\n" dfile)
  145. )


  146. ;;;  (BLOCK) - Dump the block definition table

  147. (defun block ( / b e ec ed et f n o x blklist xreflist nextblk nextxref)
  148.   (princ "\nBlock Name\tCount\n" dfile)
  149.   (setq n 0)
  150.   (setq x (tblnext "block" T))
  151.   (setq blklist nil)                   ; get first block definition
  152.   (while x
  153.     (setq n  (1+ n)
  154.           b  (fld  2 x)               ; block name
  155.           f  (fld 70 x)               ; flags
  156.     )
  157.     ;(if (= (logand f 4) 4)(setq btype "Xref")(setq btype "Block"))
  158.     ;(if (= btype "Xref")(setq Xpath (fld 1 x))(setq Xpath " "))
  159.   (if (/= (logand f 1) 1)
  160.   (progn
  161.     (setq PWRss (ssget "X" (list (cons 2 b))))   
  162.     (if pwrss (setq bcount (sslength pwrss))(setq bcount 0))
  163.      (if (= (logand f 4) 4)
  164.        (progn
  165.        (setq nextxref (strcat b "\t" (itoa bcount) "\t" (fld 1 x) "\n"))
  166.        (setq xreflist (insrt nextxref xreflist))
  167.        )
  168.        (progn
  169.        (setq nextblk (strcat b "\t" (itoa bcount) "\n"))
  170.        (setq blklist (insrt nextblk blklist))
  171.        )
  172.      )
  173.    )
  174.    )
  175.    (setq x (tblnext "block"))
  176.   )
  177.   (if (= n 0) (princ "-None-" dfile)
  178.               (foreach N blklist (princ N dfile))
  179.   )            
  180.   (princ "\n\nXrefs\tCount\tPath\n" dfile)
  181.   (if (= n 0) (princ "-None-" dfile)
  182.               (foreach N xreflist (princ N dfile))
  183.   )            
  184. (princ "\n\n" dfile)
  185. )

  186. ;;;  (UCS) - Dump the UCS table

  187. (defun ucs ( / n x na o xd yd)
  188.   (princ "\nUCS Name\n" dfile)
  189.   (setq n  0)
  190.   (setq x (tblnext "ucs" T))
  191.   (setq ucslist nil)                  
  192.   (while x
  193.     (setq n  (1+ n)
  194.           nextucs (strcat (cdr (assoc 2 x)) "\n")
  195.     )
  196.     (setq ucslist (insrt nextucs ucslist))
  197.     (setq x (tblnext "ucs"))               
  198.   )
  199. (if (= n 0) (princ "-None-" dfile)
  200.             (foreach N ucslist (princ N dfile))
  201. )
  202. (princ "\n\n" dfile)
  203. )

  204. ;;;  (VPORT) - Dump the viewport table

  205. (defun vport ( / n x na ll ur v)
  206.   (princ "\nViewport Name\n" dfile)
  207.   (setq n  0)
  208.   (setq x  (tblnext "vport" T))           
  209.   (setq vplist nil)
  210.   (while x
  211.     (setq n  (1+ n)
  212.           nextvp (strcat (cdr (assoc 2 x)) "\n")               
  213.     )
  214.     (setq vplist (insrt nextvp vplist))
  215.     (setq x (tblnext "vport"))        
  216.   )
  217.   (if (= n 0) (princ "-None-" dfile)
  218.             (foreach N vplist (princ N dfile))
  219.   )
  220. (princ "\n\n" dfile)
  221. )

  222. (defun appid ( / n x na ll ur v)
  223.   (princ "\nApplication ID (Xdata)\n" dfile)
  224.   (setq n  0)
  225.   (setq x  (tblnext "appid" T))           
  226.   (setq aplist nil)
  227.   (while x
  228.     (setq n  (1+ n)
  229.           nextap (strcat (cdr (assoc 2 x)) "\n")               
  230.     )
  231.     (setq aplist (insrt nextap aplist))
  232.     (setq x (tblnext "appid"))        
  233.   )
  234.   (if (= n 0) (princ "-None-" dfile)
  235.             (foreach N aplist (princ N dfile))
  236.   )
  237. (princ "\n\n" dfile)
  238. )


  239. (defun dimsty ( / n x na ll ur v)
  240.   (princ "\nDimension Styles\n" dfile)
  241.   (setq n  0)
  242.   (setq x  (tblnext "dimstyle" T))           
  243.   (setq dstylist nil)
  244.   (while x
  245.     (setq n  (1+ n)
  246.           nextdsty (strcat (cdr (assoc 2 x)) "\n")               
  247.     )
  248.     (setq dstylist (insrt nextdsty dstylist))
  249.     (setq x (tblnext "dimstyle"))        
  250.   )
  251.   (if (= n 0) (princ "-None-" dfile)
  252.             (foreach N dstylist (princ N dfile))
  253.   )
  254. (princ "\n\n" dfile)
  255. )

  256. ;;;  Return the value associated with a particular entity field

  257. (defun fld (num lst)
  258.   (cdr (assoc num lst))
  259. )

  260. (defun C:PWRdoc (/ olderr ocmd oblp)
  261.   (setq olderr  *error*
  262.         *error* myerror
  263.   )
  264.   (setq ocmd (getvar "cmdecho"))
  265.   (setq oblp (getvar "blipmode"))
  266.   (setvar "cmdecho" 0)
  267.   (setvar "regenmode" 0)
  268.   (setq dn (getvar "dwgname"))
  269.   (setq dir (getvar "dwgprefix"))
  270.   (setq fn (strcat dn ".rec"))
  271.   (princ "\nEnter Record File Name: <")
  272.   (princ fn)
  273.   (setq fname (getstring ">: "))
  274.   (if (< (strlen fname) 1) (setq fname fn))
  275.   (setq dfile (open fname "w"))
  276.   (today)
  277.   (princ datestr dfile)
  278.   (princ (strcat "\nDrawing Name: " dn) dfile)
  279.   (setq fmenu (getvar "menuname"))
  280.   (princ (strcat "\nMenu file: " fmenu "\n") dfile)
  281.   (layer)
  282.   (block)
  283.   (style)
  284.   (ltype)
  285.   (view)
  286.   (ucs)
  287.   (vport)
  288.   (appid)
  289.   (dimsty)
  290.   (setvar "cmdecho" ocmd)
  291.   (setvar "blipmode" oblp)
  292.   (setq *error* olderr)               ; Restore old *error* handler
  293.   (close dfile)
  294.   (setq str (strcat "\nDrawing Information saved\nto file: " fname))
  295.   (alert str)
  296.   (princ "\nPWRdoc Done")
  297. ;  (startapp "notepad" fname)
  298.   (princ)
  299. )
  300. </normalfont>
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

发表于 2003-5-12 23:46:10 | 显示全部楼层
用ai_table 这个函数就可以了,
(load "ai_utils.lsp")
(setq table_list (ai_table "block" 14))
返回的table_list就是图中所有块的名称列表。
ai_utils.lsp这个文件在r14的support目录下有,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2003-5-13 12:34:06 | 显示全部楼层
最初由 jianqiang21c 发布
[B]tuger真是爱死你了:) [/B]



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

使用道具 举报

 楼主| 发表于 2003-5-13 13:37:18 | 显示全部楼层
newer  GG实在对不起,这只能怪CUTEE  了,写了那么长看的头皮都麻,造成可视距离下降,千万别不帮我呀:),在次只能表示严重的歉意(还有青铜长老袄),和最沉痛的遗憾~~~~~~
                                                                       鸣谢赞助商XDCAD提供这次道歉的场所
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 08:17 , Processed in 0.362416 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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