嘿伙计们,
Fuccaro在前一篇文章中很好心地帮了我,并为我写了一个小脚本,它基本上是在图形中搜索具有两个特定属性的块。
看起来是这样的:
- (defun c:FindTwo()
- ;| Searches for blocks having two specific attributes
- Fuccaro Miklos
- 2010.12 |;
- (setq ss (ssget "X" (list '(0 . "INSERT") '(66 . 1))))
- (setq a1 (getstring "\n1st attribute to search for ")
- a2 (getstring "\n2nd attribute to search for ")
- found 0
- )
- (repeat (setq i (sslength ss))
- (if (check (ssname ss (setq i (1- i))) a1 a2) (setq found (1+ found)))
- )
- (strcat " ---> " (itoa found) " block(s) found")
- )
- (defun check (en a1 a2)
- (setq hit 0 a0 (cdr (assoc 0 (setq el (entget en)))))
- (while (/= a0 "SEQEND")
- (if (= a0 "ATTRIB") (if (member (cdr (assoc 1 el)) (list a1 a2)) (setq hit (1+ hit))))
- (setq a0 (cdr (assoc 0 (setq el (entget (setq en (entnext en)))))))
- )
- (= hit 2)
- )
这正是我想做的。它是完美的。然而,我的意图是,一旦我找到了一种找到我想要的块的方法,我将制作一个LISP,它将从存储在Excell文件或文本文件中的数据列表中找到块,甚至更好地访问数据库文件。(什么文件类型对我来说无关紧要,因为我可以将数据从数据库复制并粘贴到新文档中)
唯一的问题是,将Fuccaros脚本更改为从外部文件读取值比我想象的要困难。
任何帮助都将不胜感激。
(我决定发布一个新帖子,因为我的问题与Fuccaro帮助我的帖子不太相关,而且我对一直缠着Fuccaro来帮助我感到很难过。)
谢谢大家!
-克雷格 |