Насколько я знаю, использование функции assoc
заключается в поиске значения ключа в ассоциативном списке, это похоже на поиск по словарю, вам нужно дать ключ для поиска определенного значения, проверьте больше здесь .
и после применения функции привязки ее вывод в формате списка см. пример ниже.
(assoc 8 (entget (car (entsel)) ))
После выбора вывода объекта, как
(8 . "0")
Это имя слоя выбранного объекта в вашем случае имя может отличаться
Отметьте еще один пример
(assoc 10 (entget (car (entsel)) ))
После выбора выхода объекта
(10 3.25 5.5 0.0)
Выходным значением является координата вставки выбранного объекта.
Обратите внимание, что Strcat
функция Join only string check more here .
В своей функции в строке № 5 вы пытаетесь присоединиться к строке со списком , поэтому возникает ошибка.
Как вы упоминаете об ошибке, я думаю, вам нужно объединить значение 3000.0.
для этого вы можете изменить свою функцию, как показано ниже.
(defun c:getObjectLenght()
(setq a (car (entsel "\nSelect a object: ")))
(setq b (entget a))
(setq c (if (assoc 142 b) (rtos (cdr (assoc 142 b))) "Not Found" ) )
;Note that rtos function use to convert decimal value into sting.
; And if condition use in case entity not contain Key value 142 so to avoid error.
(prompt (strcat "\nThe value of 142 is: " c))
(princ)
)
Я никогда не сталкивался с кодом DXF assoc 142
Я гуглю по этому поводу, но не нашел много.