Lee Mac 发表于 2022-7-5 15:49:35

 
我完全同意——奇怪的是,从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)
)

BIGAL 发表于 2022-7-5 15:53:46

像李一样,我在正在开发的块提取lisp中添加了很多内容,并在列表上使用列表和双重排序来计算块计数2个属性。这篇文章启发我将这个选项添加到一组预定义的块名中,包括通配符支持。
 
运行我发布的代码,你会看到所有块的列表。

woolenthreads 发表于 2022-7-5 15:56:44

 
我认为这是因为我们中的大多数人一开始都是初稿人,熟悉基本(或者我应该说“基本”)编程,不接触列表操作。如果你进行民意调查,你可能会发现我们中的大多数人都倾向于只偶尔做编程,而且可能只有在努力搜索其他人的解决方案之后。

ronjonp 发表于 2022-7-5 16:01:49

列表处理是您需要学习的
 
在我看来,下面这段代码比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]
查看完整版本: 错误的参数类型:我想我&#