Тема: Переход к другой функции и возвращение

Добрый день.
У меня возникло 2 вопроса. Помогите чем можите)
1 ситуация. Допустим выполняется какая то функция в lispe. Назовем ее D1
Можно ли в процессе выполнения этой функции перейти к другой функции. Например D2. Чтобы эта функция отработала и вернулась опять к функции D1.И как это программно можно организовать. И при возврат к функции D1 она может вернуться к определенной строке а не исполняться с самого начала?
И второй вопрос.
Как мне из функции Popup_list {label= ""; key=d1;
list=" 50/n 100/n 200"}
вытянуть значение поля d1?
с помощью функции action_tile (setq x1 (atof $value))
не получается (

Re: Переход к другой функции и возвращение

Что мнений ни у кого так и нет?

Re: Переход к другой функции и возвращение

(defun D1 (/)
(setq (D2))
)

Re: Переход к другой функции и возвращение

(defun func1 (/ ent)
  (princ "\nfunc1 execution...")
  (func2 "YES!")
  (princ "\nfunc1 exection continues...")
  ) ;_ end of defun
(defun func2 (param)
  (princ "\nfunc2 execution with param " (vl-princ-to-string param))
  ) ;_ end of defun
(defun c:testf ()
  (func1)
  ) ;_ end of defun

Re: Переход к другой функции и возвращение

> Кулик Алексей aka kpblc
Не совсем понятно.
При вызове функции func2 программа переходит к выполнению этой функции. А после выполнения возвращается к строке
(princ "\nfunc1 exection continues...")?

Re: Переход к другой функции и возвращение

И как же все таки мне вытащить из popup_list выбранное значение и присвоить его переменнной???

Re: Переход к другой функции и возвращение

> Argentum
Да.

> Argentum
Читай описание DCL, я в нем не силен.

Re: Переход к другой функции и возвращение

(action_tile "your_key" "(setq YOUR_KEY_VALUE (nth (atoi $value) YOUR_LIST))")

Re: Переход к другой функции и возвращение

> Argentum

(setq my_list '("50" "100" "200"))
(start_list "select_from_list")
(foreach item my_list
  (add_list item)
) ; foreach
(end_list)

с помощью функции action_tile (setq x1 (atof $value))

В переменной x1 индекс my_list, соответственно:

action_tile (setq x1 $value)
(setq d1 (nth x1 my_list))

А вообще-то вопрос для раздела DCL.

Re: Переход к другой функции и возвращение

> Юрий
Спасибо.
Просто одновременно с другим вопросом и этот заодно разместил.
D1 - это же поле popup_list... Оно же должно возвращать в виде значение как и в случае с edit_box.
Мне не совсем понятны строки
action_tile d1 (setq x1 $value)
(setq d1 (nth x1 my_list))
что означает nth?

Re: Переход к другой функции и возвращение

Argentum пишет:

что означает nth?

Она (функция) возращает элемент списка заданный его номером.
P.S.: Пользуйся справкой по VisualLisp - там есть все доступные в нем функции.

Re: Переход к другой функции и возвращение

Но для чего нужно создавать список
(setq my_list '("50" "100" "200"))?
У меня в диалоге есть функция Popup_list {label= ""; key=d1;
list=" 50/n 100/n 200"}.
И в диалоге я выбирают значение...
А выбранное значение уже хочу присвоить переменной. Как допустим в случае с edit_box.
неужели нельзя переменной присвоить значем поля d1 которое я выбираю в диалоге?
Плиз объясните если не трудно.

Re: Переход к другой функции и возвращение

> Argentum
Прочитать значение list из popup_list нельзя. Ты можешь прочитать только номер (!) выбранный из этого списка.

Re: Переход к другой функции и возвращение

Аа.. теперь более менее понятно. Спасибо