Grrr 发表于 2022-7-5 16:20:53

 
干杯
 
 
 
我推荐李·麦克的这篇教程。
 
他在那里写的第一句话非常准确:
 
这本教程很棒,但你必须足够注意,并进行大量练习。
但一旦你习惯了,我基本上你已经学会了60%的LISP。
 
 
顺便说一句,这里有一些更通用的函数:
; Numbers all string keys in Assoc List
(defun NumberStrKeys ( aL / keys )
(cond
   ( (not (and (vl-consp aL) (vl-every 'vl-consp aL))) (prompt "NumberStrKeys: Invalid list.") )
   (
   (mapcar
       (function
         (lambda (L / k tmp i )
         (if (eq 'STR (type (setq k (car L))))
             (if (setq tmp (assoc k keys))
               (if (setq i (cdr tmp))
               (progn
                   (setq keys (subst (cons k (setq i (1+ i))) tmp keys))
                   (cons (strcat k "-" (itoa i)) (cdr L))
               ); progn
               (progn (setq keys (cons (cons k 0) keys)) L)
               ); if
               (progn (setq keys (cons (cons k 0) keys)) L)
             ); if
             L
         ); if
         ); lambda
       ); function
       aL
   ); mapcar
   )
); cond
); defun NumberStrKeys
 
示例用法和输出:
 

(NumberStrKeys
'(
   (1 "1" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
   ("Circle" "6" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
   ("Circle" "5" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
   ("Circle" "4" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
   (2 "2" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
   ("RECTAN" "2" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
   ("SQUARE" "3" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
   ("SQUARE" "2" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
   ("Circle" "3" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
   ("Circle" "2" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
   (3 "3" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
   ("SQUARE" "1" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
   ("Circle" "1" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
   ("RECTAN" "1" (-3.06162e-017 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
)
)
>>
(
(1 "1" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle" "6" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle-1" "5" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle-2" "4" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
(2 "2" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("RECTAN" "2" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("SQUARE" "3" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("SQUARE-1" "2" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle-3" "3" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle-4" "2" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
(3 "3" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("SQUARE-2" "1" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("Circle-5" "1" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
("RECTAN-1" "1" (-3.06162e-17 -0.5 0.0) 1.0 10 (0.0 0.0 0.0))
)

DGRL 发表于 2022-7-5 16:29:38

:干杯:
 
非常感谢m8
页: 1 [2]
查看完整版本: 比较多个列表以制作