MrCocopuffz 发表于 2022-7-5 15:14:45

在同一层上连接线

大家好。我试图把一个lisp放在一起,以便能够选择一条线,这将导致选中该层上的所有线,然后使用join命令将在端点处连接的任何线变成多边形线。我正在使用其他Lisp中的一些代码,并尝试使其工作。如果我在命令行中输入每一行,它似乎可以工作,但当我使用新命令“JLL”时,什么也没有发生。它经历了选择一切但不加入的过程。
 

(defun C:JLL ()
(setq targetEnt (car (entsel "\nSelect object on layer to select: ")))
(setq targetLayer (assoc 8 (entget targetEnt)))
(sssetfirst nil (ssget "_X" (list targetLayer)))
(command "join" "")
(princ)
)

rkmcswain 发表于 2022-7-5 15:22:23

在AutoCAD中,尝试使用QAFLAGS=1运行它
 
有趣的是,它在QAFLAGS=0(默认值)的BricsCAD中运行良好

MrCocopuffz 发表于 2022-7-5 15:25:29

它有效!!!非常感谢你。

rkmcswain 发表于 2022-7-5 15:29:46

我建议在例程中设置sysvar,并在完成后将其返回到0。
非零值的QAFLAGS可能会导致其他异常

MrCocopuffz 发表于 2022-7-5 15:31:51

很高兴知道,谢谢你的帮助。

MrCocopuffz 发表于 2022-7-5 15:36:04

我会将(setvar“qaflags”1)放在(命令“join”)的正上方还是(defun C:JLL()的下方?或者这有关系吗?

MrCocopuffz 发表于 2022-7-5 15:40:22

我在观察文本窗口的执行过程,它看起来是这样的:
 
命令:jll
选择要选择的图层上的对象:join 1340 found
 
5个对象转换为1条多段线,1333个对象从操作中丢弃
命令:JLL
未知命令“JLL”。按F1键获取帮助。
 
为什么它最后会给我一个额外的“JLL”和“未知命令”?

tombu 发表于 2022-7-5 15:44:36

这可以使用不带qaflags的initcommandversion:
(defun C:JLL ()
(setq targetEnt (car (entsel "\nSelect object on layer to select: ")))
(setq targetLayer (assoc 8 (entget targetEnt)))
(sssetfirst nil (ssget "_X" (list targetLayer)))
(initcommandversion 2)
(command-s "join" "")
(princ)
)

MrCocopuffz 发表于 2022-7-5 15:47:32

 
出于某种原因,这个版本不适合我。它要求进行选择,但之后什么也没有。

tombu 发表于 2022-7-5 15:54:24

奇怪的是,对于我来说,命令或文本窗口显示:
命令:JLL
 
选择要选择的图层上的对象:找到连接3
 
3个对象转换为1条多段线
命令:
 
选择一条线后,它将其与共享端点的其他两条线连接。
 
选择一行后,命令或文本窗口显示了什么?
页: [1] 2
查看完整版本: 在同一层上连接线