msasu:我假设一个progn语句已经在运行,所以我不需要调用另一个。那么您的意思是,对于每个只需要一个表达式的函数,需要一个progn语句?
李:是的,我使用VLISP编辑器,它使它更容易10倍。
是否在选择集中拾取块层?如果我打电话:
(setq ss(ssget“X”(列表(cons 8“STR”)))
有一个块在“STR”中有一些层,如果实际的块层是“STR”,它会只在选择集中包括该块吗? 嗨,史蒂夫,
我相信我在帖子#9中附上了一个链接,它很好地解释了progn语句。它们用于将要由函数处理的表达式分组为单个表达式。
对于ssget问题,您可以使用以下方法进行实验:
(sssetfirst nil (ssget "_X" '((8 . "STR"))))
但是我可以告诉你,不,它不会被ss过滤器拾取。 好的,谢谢。 Steve1:
是的,你的麻烦制造者代码被“包装”在一个progn中,但我说的是它里面的if语句,注释的那个;这包含3个不同的语句(颜色不同),因此它绝对需要一个尖头,否则会引发错误。
(if (= "TEXT" (cdr(assoc 0 enlist)))
(progn
(setq enlist (subst (cons 72 1) (assoc 72 enlist) enlist) ; vertical align - middle = 1
enlist (subst (cons 73 2) (assoc 73 enlist) enlist) ; horizontal align - center = 2
enlist (subst (cons 7 "ISOCP") (assoc 7 enlist) enlist) ; text style
enlist (subst (cons 40 300) (assoc 40 enlist) enlist)) ; text height
(entmod enlist)
(entupd en)
)
) ; end if
如果If只包含两条语句,这不会引发错误,但是,如果没有用progn“包装”,第二条语句将仅在满足else条件时执行;参见上述示例:
1.
(if a
(setq b 1) ; <-- b will have value only if a is true
(setq c 2) ; <-- c will have value only if a is nil
)
(if a
(progn
(setq b 1) ; <-- both b and c will have value if a is true
(setq c 2)
)
)
在这两种情况下,求值都将返回“4”,但如果未涉及progn,则会引发错误-即它需要1个参数,2个给定:
13
当做 这就完全澄清了,谢谢msasu 快速提问:
知道“文本样式”是否存在的最佳方法是什么?
在autolisp中就是这样。 使用TBLSEARCH语句-这将返回T是当前图形的文本样式表中存在的参数样式。同样,使用此功能,您可以搜索线型、块、图层或其他。。。
14
当做 极好的谢谢msasu 欢迎你!
也可以列出指定定义表中的所有条目–请参阅下文“如何列出当前图形中定义的所有文字样式”(稍后可以使用成员语句搜索列表中是否有特定样式):
15
当做
页:
1
[2]