考虑一下这一点。
(defun c:sall (/ s ss)
(if (and (setq s (car (entsel "\nSelect object on layer to select All : ")))
(setq ss (ssget "_X" (list (assoc 8 (entget s)))))
)
(alert (strcat "Items selected < " (itoa (sslength ss)) " >"))
)
(sssetfirst nil ss)
(princ)
)
太好了,这很有效。
不过我做了一些小改动,删除了“_X”,因为我需要选择要选择的内容&从“警报”更改为“普林斯”。希望你不介意
(defun c:SALL(/ s ss)
(if (and (setq s (car (entsel "\nSelect object on layer to select : ")))
(setq ss (ssget (list (assoc 8 (entget s)))))
)
(princ (strcat "\n "(itoa (sslength ss))" items selected"))
)
(sssetfirst nil ss)
(princ)
)
当然不介意,快乐编码。
很多时候,我需要更改层上所有文本的高度或大小,我发现Tharwat的程序可以完美地实现这一目的,但有一个例外:它选择层上的所有内容,而不仅仅是文本。
在进行了大量搜索并试图理解这个简单的程序后,一些心理障碍使我无法使其仅选择图层上的文本对象。可悲的是,在绝望中,我发现自己希望ssget有一个“T”选项。
请你们中的一个善良的灵魂解释一下怎么做?
谢谢
史蒂夫 尝试将第3行更改为:
(setq ss (ssget "_X" (list (assoc 8 (entget s)) '(0 . "TEXT,MTEXT"))))
或者,如果您不想包括多行文字,那么:
(setq ss (ssget "_X" (list (assoc 8 (entget s)) '(0 . "TEXT"))))
嗨,史蒂夫。
试试这个:
(defun c:Test (/ s h ss doc i e)
;; Tharwat 24.10.2015 ;;
(princ
"\nSelect Text on layer to change height for all texts on the same layer :"
)
(if (and (setq s (ssget "_+.:S:L:E" '((0 . "TEXT,MTEXT"))))
(setq h (getdist "\nSpecify text height :"))
(setq ss
(ssget "_X"
(list '(0 . "TEXT,MTEXT") (assoc 8 (entget (ssname s 0))))
)
)
)
(progn
(vla-startUndomark
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
)
(repeat (setq i (sslength ss))
(entmod
(subst (cons 40 h)
(assoc 40 (setq e (entget (ssname ss (setq i (1- i))))))
e
)
)
)
(vla-Endundomark doc)
)
)
(princ)
)(vl-load-com) 哈比人的修改建议和塔尔瓦特的新计划都很好地发挥了作用,非常感谢你们的回应。
然而,关于
快乐的霍比特人和
12和Tharwat's
它们在各自的例程中工作正常,但不可互换。
史蒂夫 不客气,史蒂夫。
关于你对差异的疑问,实际上,如果你在上述例程中替换DXf代码的位置,结果不会有任何差异。 很高兴我能帮助史蒂夫
这里有一节关于AfrsLIST中的过滤器
在李的优秀网站上
检查这个
这是一个最好的lisp有选择,它有很多选择,我不能没有它。。希望你喜欢
页:
1
[2]