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

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

Lisp Использвание последнего введенного значения. Как?

Ответ
Поиск в этой теме
Непрочитано 10.10.2013, 10:34 #1
Lisp Использвание последнего введенного значения. Как?
Vladimir_Sergeevich
 
рисую дороги, в перерывах курю Lisp
 
Пермь
Регистрация: 20.04.2011
Сообщений: 475

Автокад помнит последние введеные значения и команды. управляется это дело переменной INPUTHISTORYMODE, а где автокад хранит сами значения?
Если команда не выполняется - листает последние команды/ввод в комстроку, если выполняется - последние вводимые параметры (может запоминать имена блоков/точки/просто числа) и ведь предлагает их там же где они вводились (если getpoint - предлагает последние координаты, если getreal - последнее вводимое число)
Собственно и хочу при вводе getreal предложить "значение по умолчанию" - предыдущий ввод.
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Просмотров: 3193
 
Непрочитано 10.10.2013, 10:38
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


В лиспе наверное только через реакторы...
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 10.10.2013, 10:47
#3
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


перенес ответ в п.6
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...

Последний раз редактировалось Alan, 10.10.2013 в 11:10.
Alan вне форума  
 
Непрочитано 10.10.2013, 10:54
#4
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
при вводе getreal предложить "значение по умолчанию" - предыдущий ввод.
(getvar "lastpoint")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.10.2013, 10:54
#5
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Цитата:
Сообщение от Alan Посмотреть сообщение
Что мешает ТЕБЕ запомнить введенное значение?
Если я не ошибаюсь, значение локальной переменной не запомнит (речь об отдельных вызовах функции), а объявлять глобальную желания как то нет...
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 10.10.2013, 10:56
#6
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
Автокад помнит последние введеные значения и команды. управляется это дело переменной INPUTHISTORYMODE, а где автокад хранит сами значения?
Если команда не выполняется - листает последние команды/ввод в комстроку, если выполняется - последние вводимые параметры (может запоминать имена блоков/точки/просто числа) и ведь предлагает их там же где они вводились (если getpoint - предлагает последние координаты, если getreal - последнее вводимое число)
Собственно и хочу при вводе getreal предложить "значение по умолчанию" - предыдущий ввод.
Ну ты же работаешь с Лиспом! Что мешает ТЕБЕ запомнить введенное значение?
Код:
[Выделить все]
(setq ypp 6000.0
      yp  (getreal
	    (strcat "\n Введите значение <"
		    (rtos ypp 2 0)
		    ">: "
	    ) ;_ конец strcat
	  ) ;_ конец getreal
      yp  (if yp
	    yp
	    ypp
	  ) ;_ конец if
      ypp yp
) ;_ конец setq
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Автор темы   Непрочитано 10.10.2013, 11:07
#7
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Цитата:
Сообщение от Alan Посмотреть сообщение
ypp
В твоем случае это должна быть глобальная переменная.
И сразу: первое выполнение - ввожу вручную. последующие - предыдущий ввод. альтернатива - каждый раз тыкать стрелочку вверх и энтер. Автокад уже помнит это число, как до него добраться хочу знать.
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 10.10.2013, 11:16
#8
Alan

CAD
 
Регистрация: 28.08.2003
Киев
Сообщений: 1,834
<phrase 1=


Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
В твоем случае это должна быть глобальная переменная.
Локальная в данной функции.
Все повторяющиеся значения вводятся обычно в цикле функции и приведенный способ ИМХО наипростейший.
Собирать все введенные значения? Боюсь, что такими результатами пользоваться не удастся или не нужно.
Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
Автокад уже помнит это число, как до него добраться хочу знать.
Вопрос конечно интересный!
__________________
По теории майский жук летать не может.
Но он этого не знает. И летает...
Alan вне форума  
 
Автор темы   Непрочитано 10.10.2013, 11:19
#9
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Повторяюсь...
Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
(речь об отдельных вызовах функции),
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 10.10.2013, 13:39
#10
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Если нужны параметры своей-же команды - то не надо мудрить - делай глобальную переменную (они для этого и существуют), если для "всевозможных" то пиши свой реактор и опять-таки сохраняй в глобальной (т.к. автолисп не имеет замыканий (внутренних переменых) и сохранить ее более попросту негде).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 10.10.2013, 20:35
#11
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Если уж совсем выдрючиваться, то можно из использованных значений переменной создать открытый список и выбирать из него через раскрывающееся меню. Так что DCL в руки с пожеланием успехов.
Лентяй вне форума  
 
Непрочитано 10.10.2013, 22:23
#12
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Везде применяю пару функций
Код:
[Выделить все]
 (defun ru-user-write-last-param	(name value)
  (vl-registry-write
    (strcat (ru-reg-hkcu-storage-key) "\\" (ru-user-login) "\\" "")
    name
    value
  )
)


(defun ru-user-read-last-param (name default)
  (cond
    ((vl-registry-read  (strcat (ru-reg-hkcu-storage-key) "\\" (ru-user-login)) name))
    (t default)
  )
)
Это позволяет всегда инициализировать значение по умолчанию или использованное ранее. Для простоты в реестр записывается в строковом виде.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 19.10.2013, 20:37
#13
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Любопытное наблюдение: стояли у меня подряд три ввода (getreal "\nh") (getint "\nf") (getint "\ne) передаются одноименным локальным переменным. При повторном вызове для каждого get в памяти автокада свое значение хранится! (Стрелкой вверх - подставляется нужное значение)
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Lisp Использвание последнего введенного значения. Как?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lisp. Не вставляет значения в базу access. Zaghim LISP 2 11.07.2012 14:29
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33
Вызов последнего введенного значения с помощью клавиши «стрелка вверх» Dennis UK AutoCAD 5 12.06.2010 15:18
Получение идентификатора последнего введенного объекта dxaritonov Программирование 7 23.04.2010 15:54
Проблема с присвоением значения (Lisp) DEM LISP 2 09.05.2006 17:39