Привет, я новичок в AutoCad lisp и стараюсь немного ускорить работу с помощью простой процедуры, но я ударил стену и не могу понять это, и у меня есть сильное наполнение, является простым решением. Так что ...Список обновлений Lisp
Я сделал список с именем "koord":
(setq koord (list (cons "1" "10,10,10")))
результат является точечная пара: ("1" . "10,10,10")
после этого я добавить к этому списку, например:
(setq koord (append koord (list (cons "2" "20,20,20"))))
(setq koord (append koord (list (cons "3" "30,30,30"))))
теперь результат: ("1" . "10,10,10") ("2" . "20,20,20") ("3" . "30,30,30")
в данный момент Мне бы хотелось, чтобы t о обновит второй пунктирную пару и сделать мой список выглядит следующим образом:
("1" . "10,10,10") ("2" . "60,60,60") ("3" . "30,30,30")
, но я не знаю, как ... Если я добавляю как этот
(setq koord (append koord (list (cons "2" "60,60,60"))))
, чем я получаю этот результат :
("1" . "10,10,10") ("2" . "20,20,20") ("2" . "60,60,60") ("3" . "30,30,30")
, который не был бы слишком плохо, если я знаю, как получить этот один ("2" . "60,60,60")
Если я пытаюсь
(assoc "2" koord)
он возвращает первое вхождение т.е. ("2" . "20,20,20")
Итак, есть ли способ, чтобы не добавить, но обновить значение в пунктирной паре или получить последний прилагаемую - не первый?
результат '(список (против "1" "10,10,10"))' не '("". "1 10,10,10")' 'а ((«1». «10,10,10")) ' – Sylwester
вместо добавления, просто добавьте его так:' (setq koord (cons (cons "2" "60,60,60") koord)) '. В следующий раз, когда вы вызываете '(assoc" 2 "koord)', вы получите новую пару ''(« 2 ».« 60,60,60 »)'. Предыдущая пара будет по-прежнему находиться в списке 'koord', но не будет видна' assoc', которая всегда выбирает первое совпадение. –
Привет. Благодаря! Я попробовал ваше решение, и он работает – Mario