| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp. Проблема с перезагрузкой списка через action_tile в диалоговом окне .

Lisp. Проблема с перезагрузкой списка через action_tile в диалоговом окне .

Ответ
Поиск в этой теме
Непрочитано 29.02.2016, 11:01 #1
Lisp. Проблема с перезагрузкой списка через action_tile в диалоговом окне .
BoTTePa3
 
Регистрация: 02.02.2012
Сообщений: 22

Столкнутся с проблемой перезагрузки спиcка в диалоговом окне

Диалоговое окно:

Код:
[Выделить все]
 Test: dialog {label="Тест";
:popup_list{label="Число:"; key="a1"; width = 34; fixed_width=true;}
:button{label="Добавить число"; key="a2"; alignment=centered; fixed_width=true; width = 21; }
:ok_button {label="Завершить"; fixed_width=true; width = 21; action="(done_dialog 0)";}
}
Lisp

Код:
[Выделить все]
 (defun c:test ( / a1 tmp1 tmp2)
;a1 - № позиции в списке чисел
;tmp1 - переменная под диалог
;tmp2 - список чисел
(vl-load-com)
(if (not a1) (setq a1 "0"))
(setq tmp2 (list "0" "1" "2"))
(setq tmp1 (load_dialog "test.dcl"));end_setq

(new_dialog "Test" tmp1)

(set_tile "a1" a1)
(start_list "a1") (mapcar 'add_list tmp2) (end_list);загрузка списка

(action_tile "a2"
  (strcat
    "(if (not (member \"3\" tmp2)) (setq tmp2 (reverse (cons \"3\" (reverse tmp2)))))";добавляем в список чисел число "3"
    "(setq a1 (itoa (vl-position \"3\" tmp2)))";вычисляем позицию числа "3" в списке
    "(set_tile \"a1\" a1)"
    "(progn (start_list \"a1\") (mapcar 'add_list tmp2) (end_list))";перезагружаем список с определением позиции на числе "3"
    );end_strcat
  );end_action_tile_"a2"

(action_tile "accept"
  (strcat
    "(setq a1 (get_tile \"a1\"))"
    "(done_dialog)"
    );end_strcat
  );end_action_tile_"accept"
(start_dialog)
(unload_dialog tmp1)
a1
);end_defun
При перезагрузке списка tmp2 через action_tile "a2" сам список меняется, номер позиции числа "3" через vl-position в переменную a1 присваивается, зато переменная диалогового окна "a1" всегда получается значение "" и позиция в списке не отображается. Может кто сталкивался с подобной проблемой и находил решения.

P.S. через перезагрузку диалогового окна всё срабатывает. но этот метод не подходит.
Просмотров: 1476
 
Непрочитано 29.02.2016, 11:25
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,790


Сначала меняй список, а потом уже устанавливай значение. Как вариант - см.вложение
Вложения
Тип файла: lsp tmp.lsp (1.6 Кб, 21 просмотров)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 29.02.2016, 20:48
#3
BoTTePa3


 
Регистрация: 02.02.2012
Сообщений: 22


Спасибо за подсказку Алексей, как обычно "дьявол скрывался в мелочи".
Ещё вопрос по приведённому Вами коду. Заметил что многие не используют atcion_tile, а пользуются изменением значения ключей при создании диалогового окна, дело в неудобстве строчного описания функции или есть другие критерии?
BoTTePa3 вне форума  
 
Непрочитано 29.02.2016, 21:14
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,790


Лично мне отслеживать корректность работы кода в выделенной функции обработки клика намного проще, чем через strcat: http://autolisp.ru/2015/02/05/dcl-develop/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp. Проблема с перезагрузкой списка через action_tile в диалоговом окне .

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка ПОС, искусство проектирования Tyhig Технология и организация строительства 117 25.11.2021 17:38
Проблема со шрифтом в диалоговом окне Autocad 2009 ait AutoCAD 1 25.12.2008 14:51
загрузка DOS прог через LISP Gaa LISP 15 12.08.2005 19:19