如何获取属性信息
我一直在开发一个lisp程序,该程序将更改一个或多个块上的一个或多个属性。但是,我希望能够将当前属性值添加到。然而,我无法一次获得多个块的属性值。例如,如果您有两个具有两个单独属性值(值而不是标记)的相同块,并且您同时拾取这两个值,则当您打开“属性”窗口时,它将列出相同的值(如果有),并将不同的值列为“varies”。有什么方法可以在autolisp中得到这个精确的东西吗?我使用的是香草Lisp程序不是视觉,任何帮助将不胜感激。 从这里开始http://www.cadtutor.net/forum/showthread.php?37127-全局属性编辑器amp提取器和高亮显示=块+编辑 谢谢你的插拔这些也可能有助于:
http://lee-mac.com/attributefunctions.html 感谢您的回复,但这些链接一次只能工作一个块(或者它们是visual lisp)。我有点希望能同时获得几个相同块的属性值。这将允许我告诉用户是否已经存在值,以及同一属性是否存在不同的值。然而,我可以让它工作,但它最终是大约100行文字。无论如何谢谢你 你试过“阿托”命令吗?
这真的很有帮助。
谢谢 我从来都不知道这个命令,很酷,但我认为我无法将其应用到我的程序中。我有点希望它在内部运行,并使用DCL编码显示它。当选择块时,ACAD已经在属性窗口的属性下显示了我想要的信息,我只需要一些方法来提取这些信息。有没有办法让lisp将选定对象的所有属性放入一个列表或字符串中,与ACAD显示的内容完全相同? 你试过数据提取吗?它会把它放在一个表中。 我正在使用塔瓦特先生制定的以下程序。
;;; This program is working almost as well as the Autocad command attout
;;; so I did this program to help people who do not have the Express tools
;;; to use my Autolisp Program instead.
;;; Hope this would help people as much as it is possible.
;;; Author *** THARWAT AL SHOUFI ***
;;; Date of creating the program November 17th. 2010
;;; Tested with Autocad 2010
(defun c:THattout (/ Att fNme ents e)
; THARWAT Nov. 17.2010
(prompt "\n Select Attributed Block: ")
(if
(setq Att (ssget "_+.:S:L" '((0 . "INSERT")(66 . 1))))
(progn
(setq fNme
(open "D://attributes.txt" "w"))
(setq ents (ssname Att 0))
(write-line
(strcat "HANDLE" "\t" "BLOCKNAME" "\t" "\n"
(strcat "'" (cdr (assoc 5 (entget ents))))
"\t"
(cdr (assoc 2 (entget ents)))
"\t")
fNme
)
(write-line
(strcat "\n" "TAG" "\t" "VALUE")
fNme
)
(while
(not
(eq
"SEQEND"
(cdr (assoc 0
(setq e (entget (setq ents (entnext ents)))))
)
)
)
(write-line
(strcat (cdr (assoc 2 e))
"\t"
(cdr (assoc 1 e)))
fNme
)
)
(close fNme)
)
(princ "\n No Attributed Block Selected")
)
(princ "\nWritten by Tharwat Al Shoufi")
(princ)
)
祝你好运
迈克尔 感谢您的帮助,最后一个很接近,但我开始假设我最初的假设是正确的,vanilla lisp无法显示和比较多个块的属性值。谢谢你的帮助,如果我发现了什么,我会毫不犹豫地把它发回这里。
当然有——你只需要多想想。我发布的链接为单个块提供了属性子功能,但所使用的方法适用于任何数量的块,您只需以不同的方式构造代码。
页:
[1]
2