Dustin11 发表于 2022-7-6 06:33:02

循环浏览列表?

我有一个我正在构建的代码初稿,用作层检查器,但我还需要使用列表中的第一项循环一次,然后使用列表中的第二项循环第二次,然后是第三项、第四项等等。。。。。但我似乎想不出一个办法来做到这一点。我也很确定我使用的“repeat”函数是不正确的,因为在我添加了它之后,代码停止了工作,但我没有试着用它来让它再次工作。
 

(defun c:mscheck (/ sys ss count msg)
(setq sys (list "H-LOWP"))
(setq sys (append sys '("H-LOWP-EXST" "H-MEDP" "H-MEDP-EXST" "H-EXHS" "H-EXHS-EXST" "H-GRDS" "H-GRDS-EXST" "H-RTRN" "H-RTRN-EXST" "G-GENL-TEXT" "G-GENL-TEXT-EXST" "G-EQPM" "G-EQPM-EXST" "H-STAT" "H-STAT-EXST" "H-OAIR" "H-OAIR-EXST")))
(setq count (length sys))
(repeat count
(if (tblsearch "layer" sys)foreach
   (progn
   (setq ss (ssget "_X" (list (cons 8 sys))))
   (if (= ss nil)
(progn
(setq count "0")
);progn
(progn
(setq count (sslength (ssget "_P")))
);progn
);if
   );progn
   (progn
   (setq count "DNE")
   );progn
   );if
(setq msg (cons sys count))
(print msg)
(princ)
   );repeat
);defun

BlackBox 发表于 2022-7-6 07:00:37


(defun c:FOO (/ ss)
(foreach layerName '("H-LOWP" "H-LOWP-EXST" "H-MEDP" "H-MEDP-EXST"
                      "H-EXHS" "H-EXHS-EXST" "H-GRDS" "H-GRDS-EXST"
                      "H-RTRN" "H-RTRN-EXST" "G-GENL-TEXT"
                      "G-GENL-TEXT-EXST" "G-EQPM" "G-EQPM-EXST"
                      "H-STAT" "H-STAT-EXST" "H-OAIR" "H-OAIR-EXST"
                     )
   (prompt
   (strcat "\n["
             layerName
             "] : "
             (if (setq ss (ssget "_x" (list (cons 8 layerName))))
               (itoa (sslength ss))
               "0"
             )
   )
   )
)
(textpage)
(princ)
)

Dustin11 发表于 2022-7-6 07:31:48

美好的它工作得很好。我必须稍微剖析一下你的代码,看看你做了什么,以防我以后需要再写类似的东西。
 
谢谢

BlackBox 发表于 2022-7-6 07:35:05

 
不客气;我很乐意帮忙。
 
本质上,对于层名称列表中的每个层名称,向用户提示层名称,如果该层上有实体,包括多少,否则为零。
页: [1]
查看完整版本: 循环浏览列表?