我完全同意——奇怪的是,从AutoLISP起步的开发人员中,有多少人选择使用单个变量而不是列表。
(defun CabinList ( l )
(mapcar
'(lambda ( x / s )
(if (setq s (ssget "_X" (list '(0 . "INSERT") (cons 2 (strcat "*_" x "_*")))))
(cons x (sslength s))
(cons x 0)
)
)
l
)
)
(defun c:cabin ( / lst qry )
(setq lst (CabinList '("C2" "CC" "CS1" "OFF" "PS1" "PS2" "SO"))
qry (strcase (getstring "\nEnter a code to find the quantity <all>: "))
)
(if (= "" qry)
(foreach itm lst (princ (strcat "\n" (car itm) ": " (itoa (cdr itm)))))
(princ (strcat "\n" qry ": " (itoa (cond ((cdr (assoc qry lst))) (0)))))
)
(princ)
) 像李一样,我在正在开发的块提取lisp中添加了很多内容,并在列表上使用列表和双重排序来计算块计数2个属性。这篇文章启发我将这个选项添加到一组预定义的块名中,包括通配符支持。
运行我发布的代码,你会看到所有块的列表。
我认为这是因为我们中的大多数人一开始都是初稿人,熟悉基本(或者我应该说“基本”)编程,不接触列表操作。如果你进行民意调查,你可能会发现我们中的大多数人都倾向于只偶尔做编程,而且可能只有在努力搜索其他人的解决方案之后。 列表处理是您需要学习的
在我看来,下面这段代码比OP所做的要简单得多。。。但如果看不到最终结果,就很难说了。这些全局变量可能用作lisp变量字段?%%
;; Simple helper function
(defun _get (key l)(cdr (assoc key l)))
(setq l '(("C2" . 0) ("CC" . 0) ("CS1" . 0) ("OFF" . 88) ("PS1" . 0) ("PS2" . 0) ("SO" . 0)))
(_get "OFF" l)
;; Returns 88
页:
1
[2]