co中的联机文本问题
你好我有一个可能很愚蠢的问题,但我到处都找不到答案。
当你有这行代码时
(princ "\nSelect block for attribute extraction : ")
(setq bl (ssget ":S" '((0 . "INSERT")(66 . 1)(8 . "cssa"))))
它在命令栏中显示为“选择用于属性提取的块:”
然后acad在新行中写下“选择对象:”,那么有没有办法省略第二行,使其只显示我的文本? 不,这是(ssget)不能忽略的主要功能。。。或者,您可以尝试使用(entsel)函数和(if)的组合来检查过滤器(插入、属性、层-“cssa”)。。。 对唯一的问题是,广告的代码量
不过,谢谢你的回复 您可以使用Lee Mac的功能:-
(DEFUN LM:SSGET (MSG PARAMS / SEL)
(PRINC MSG)
(SETVAR 'NOMUTT 1)
(SETQ SEL (VL-CATCH-ALL-APPLY 'SSGET PARAMS))
(SETVAR 'NOMUTT 0)
(IF (NOT (VL-CATCH-ALL-ERROR-P SEL))
SEL
)
)
示例:-
(LM:SSGET "\nSelect block for attribute extraction : " '(":S" ((0 . "INSERT")(66 . 1)(8 . "cssa")))) 好吧,那太好了。。。谢谢你们和李。。。我从没想过要把它变成函数 不客气! 嗯,我用LM:SSGET做了一个Lisp程序的小口吃,但它不起作用,它只是贯穿其中,有什么想法吗?
(defun c:incssabl()
(defun *error* (msg)
(princ msg)
) ;_ defun
(setq inspt(getpoint"\nSelect insertation point : "))
(setq station(cdr(assoc 1 (entget(ssname(lm:ssget "\nSelect STATION : "
'("S:" '((0 . "TEXT,MTEXT"))))0)))))
(setq height(cdr(assoc 1 (entget(ssname(lm:ssget "\nSelect HEIGHT on table : "
'("S:" '((0 . "TEXT,MTEXT"))))0)))))
(command "-insert" "cssabl" inspt "" "" station height)
)
(DEFUN lm:ssget (MSG PARAMS / SEL)
(PRINC MSG)
(SETVAR 'NOMUTT 1)
(SETQ SEL (VL-CATCH-ALL-APPLY 'SSGET PARAMS))
(SETVAR 'NOMUTT 0)
(IF (NOT (VL-CATCH-ALL-ERROR-P SEL))
SEL
)
)
从实体列表中删除并重试一次。。。
(LM:SSGET "\nSelect STATION : " '(":E:S" ((0 . "TEXT,METXT"))))
除了上面Satish的回复之外,您的代码还有两个问题:
1.“S:”不是有效的ssget模式字符串,这应该是“:S”-您可以参考我的ssget函数参考以获取有效模式字符串的列表。
2.(“S:”((0。“TEXT,MTEXT”))由于第一个引号后面的表达式已标记为文字,因此在此列表中不需要第二个引号。 终于有时间看到这些答案并感谢大家。。。萨蒂什和李。。。S: 是我的打字错误,把它抄到了第二个呼叫ssget的地方,所以犯了两个错误
我也没有注意到复制/粘贴导致配额加倍的原因,但现在,当你指出这一点时,很明显,再次感谢你的帮助
p、 李关于非法物品的教程很棒。。
页:
[1]
2