如何用Vlisp程序,获取用entsel选定的活动属性块内每个非属性图元的属性列表
1条回答 默认 最新
关注【以下回答由 GPT 生成】
答案:
- 使用Vlisp编写的程序可以通过以下代码使用
entsel命令选定活动属性块:
(defun select-attset () (setq sel (entsel "\nSelect attribute block: ")) (setq attset (car sel)) )- 遍历选定的活动属性块,可以使用
entnext和nentselp命令。下面是一个示例代码,演示了如何遍历选定的活动属性块,并获取其中的每个非属性图元:
(setq obj (car (entsel "\nSelect attribute block: "))) (setq blk (cdr (assoc 330 (entget obj)))) (setq ent nil) (setq lst nil) (while (setq ent (entnext ent)) (if (/= (cdr (assoc 0 (entget ent))) "ATTDEF") (setq lst (cons ent lst)) ) ) (setq count (length lst)) (setq attobjs (vla-get-attributes (vlax-ename->vla-object obj))) (setq attcnt (vla-get-count attobjs)) (princ (strcat "Number of non-attribute entities: " (itoa count))) (princ "\n") (repeat attcnt (setq attobj (vla-item attobjs (1+ it))) (princ (strcat "\nAttribute tag: " (vla-get-tagstring attobj))) (princ "\n") )- 下面是一个示例代码,可以获取每个非属性图元的属性列表:
(setq obj (car (entsel "\nSelect attribute block: "))) (setq blk (cdr (assoc 330 (entget obj)))) (setq ent nil) (setq lst nil) (while (setq ent (entnext ent)) (if (/= (cdr (assoc 0 (entget ent))) "ATTDEF") (setq lst (cons ent lst)) ) ) (repeat (length lst) (setq ent (car lst)) (setq att (entget ent)) (setq attval (cdr (assoc 1 att))) (setq atttag (cdr (assoc 2 att))) (princ (strcat "\nAttribute value: " attval)) (princ (strcat "\nAttribute tag: " atttag)) (setq lst (cdr lst)) )以上是使用Vlisp编写的程序,可通过
entsel命令选定活动属性块,遍历其中的非属性图元,并获取它们的属性列表。希望对你有所帮助!如果还有其他问题,请随时提问。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报- 使用Vlisp编写的程序可以通过以下代码使用