yonderbob 发表于 2022-7-6 08:58:15

我的代码出错,更改tex

你好
 
我有我的代码,它工作良好,直到我有一个在我的绘图层,其中没有文字实体的。如果是这种情况,我得到以下错误;
“命令:;错误:错误参数类型:lselsetp nil”
我试图在变量L14上添加If语句nil,但这并没有解决问题。
所以要澄清的是:我相信问题的出现是因为我有一个图层,但在特定图形的特定图层中没有“文本”。在其他图纸中,如果有文本,则需要使用代码。
谁能帮我用正确的if语句来解决这个问题。
 
 
(setq L14 (tblsearch "layer" "E_B_KV23_KABEL_LABEL_VB"))
(if (/= L14 nil)
   (progn
       (setq cnt 0 sset (ssget "x" '((8 . "E_B_KV23_KABEL_LABEL_VB"))))(setq len(sslength sset))(setq valid 0 erms "")
(setq cnt 0)
(while (> len 0)
      (setq en (ssname sset 0))
      (if (= (cdr (assoc 0 (entget en))) "TEXT")
       (progn(command "change" en "" "" "" "isocp2_08" "" "" )(setq cnt(+ cnt 1))
   )
)
(setq sset (ssdel en sset))(setq len(- len 1))
)
   )
)
(if (= L14 nil)
   (setq L14 nil)
)
 
提前感谢,
 
上下快速移动

pBe 发表于 2022-7-6 09:35:15

这条线
(setq len(sslength sset))和之后的其余部分将运行,而不管(setq cnt 0 sset(ssget“x”'((8。“E\u B\u KV23\u KABEL\u LABEL\u VB”))的结果是否为零
 
因此,请尝试将其更改为:
 

(if (and(/= L14 nil)
            (setq cnt 0 sset (ssget "x" '((8 . "E_B_KV23_KABEL_LABEL_VB")))))
(progn
            (setq len(sslength sset))(setq valid 0 erms "")......

yonderbob 发表于 2022-7-6 10:28:04

非常感谢pBe。
这很好地解决了问题。
 
上下快速移动
页: [1]
查看完整版本: 我的代码出错,更改tex