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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Форма для ввода данных в LISP

Форма для ввода данных в LISP

Ответ
Поиск в этой теме
Непрочитано 05.05.2009, 12:59
Форма для ввода данных в LISP
HooDRooK
 
Регистрация: 11.03.2009
Сообщений: 33

Вопрос. Необходимо начертить, например, прямоугольник со сторонами a и b. Длины сторон необходимо вводить с формы, проверяя одновременно, ну например, чтобы введённые величины не были больше максимальной.
Вот я не знаю есть ли в ЛИСПе такая возможность?...Было бы в VB вопросов бы не было, но надо чтобы чертился прямоугольник именно с помощью ЛИСПа...
Может есть возможность обмена данными ЛИСПа с VB? Например форма и проверка делается на VB, затем проверенные данные передаются в ЛИСП?...
Помогите.

С Уважением!
Просмотров: 5603
 
Автор темы   Непрочитано 18.05.2009, 06:26
#21
HooDRooK


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


А каким образом это прописывается?!...я приводил код dcl файла...и блин так и не понял где и как там это делается...
HooDRooK вне форума  
 
Непрочитано 18.05.2009, 10:01
#22
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


HooDRooK, давай так:

1. Открой Excel
2. В Excel'е Меню Сервис->Макрос->Редактор Visual Basic
3. В редакторе Visual Basic Меню Insert->User Form
4. Сконструируй форму диалога (для изменния свойств элементов формы используй окно свойств: Меню View->Properties Window)
5. Запусти это дело (при выделенной форме нажми F5)
6. Далее с помощью кнопки PrintScreen содержимое экрана в буфер.
7. Вставь картинку из буфера например в Paint (mspaint.exe), сохрани её в файл и выложи на форуме
8. ...
9. Здесь тебе выложат код формы на dcl, аналогичный твоей картинке.
Makswell вне форума  
 
Автор темы   Непрочитано 22.05.2009, 10:57
#23
HooDRooK


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


Короче мне надо получить типа вот такую вот форму...
т.е. я ввожу данные...потом нажимаю кнопку "ввести данные"...потом идёт проверка правильности ввода данных, например: а>0, b>1, с>2...
Если всё нормально ты выполняется далее лисп, а если не удовлетворяет проверке, то надо написать "ошибка" и вернуться к вводу данных...
Вот как это реализовать с помощью dcl фалйа в лиспе?...
Миниатюры
Нажмите на изображение для увеличения
Название: Форма.jpg
Просмотров: 91
Размер:	52.1 Кб
ID:	20857  
HooDRooK вне форума  
 
Непрочитано 23.05.2009, 23:18
#24
Кулик Алексей aka kpblc
Moderator

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


Ну, код dcl-файла по идее достаточно прост (если действия на каждый элемент прописывать не внутри dcl):
Код:
[Выделить все]
dlg: dialog{label="Ввод данных";
	:edit_box{key="a_value";label="a=";}
	:edit_box{key="b_value";label="b=";}
	:edit_box{key="c_value";label="c=";}
	ok_cancel;
}
А пример action я давал выше...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.05.2009, 08:28
#25
HooDRooK


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


вот не могу понять что за такое...
вот код LISPа, данный воодятся соответственно через dcl файл

(defun c:dialog2 ( / dn zn L1 L6 D1 D6 D7 N )
(setq dn(LOAD_DIALOG "0002.dcl"))
(new_dialog "dlg2" dn "")
(setq L1 (GET_TILE "L1_value"))
(ACTION_TILE "L1_value" "(setq L1 $value)")
(setq L6 (GET_TILE "L6_value"))
(ACTION_TILE "L6_value" "(setq L6 $value)")
(setq D1 (GET_TILE "D1_value"))
(ACTION_TILE "D1_value" "(setq D1 $value)")
(setq D6 (GET_TILE "D6_value"))
(ACTION_TILE "D6_value" "(setq D6 $value)")
(setq D7 (GET_TILE "D7_value"))
(ACTION_TILE "D7_value" "(setq D7 $value)")
(setq N (GET_TILE "N_value"))
(ACTION_TILE "N_value" "(setq N $value)")

(START_DIALOG)
(UNLOAD_DIALOG dn)
(princ L1)
(princ L6)
(princ D1)
(princ D6)
(princ D7)
(princ N)

(while (< L1 0) (setq L1 (getreal "\nÎøèáêà! L1<0, Ââåäèòå L1=>0")))
(if (= L1 0) (setq L6 0) (setq D1 0) (setq D6 0) (setq D7 0) (setq N 0))

(princ L1)
(princ L6)
(princ D1)
(princ D6)
(princ D7)
(princ N)

)

Так вот когда нажимаешь ок на форме, она закрывается, первые princ пишутся и всё хорошо, но почему то проверка не делается дальше!...т.е. если ввести даже L1=-1 то никакого эффекта...
HooDRooK вне форума  
 
Непрочитано 27.05.2009, 10:28
#26
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


(if (= L1 0)
(progn
(setq L6 0)
(setq D1 0)
(setq D6 0)
(setq D7 0)
(setq N 0)
)
)
E-degtyarev вне форума  
 
Автор темы   Непрочитано 27.05.2009, 10:39
#27
HooDRooK


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


Вот попробовал вставить так, но выдаёт "неверный тип аргумента для сравнения "-1" 0"...это я так понимаю что при введении данных у меня получаются строковые величины что-ли?...если так то как правильно их вводить, чтобы это были именно цифры а не текст?...
HooDRooK вне форума  
 
Непрочитано 27.05.2009, 11:07
#28
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Да, это строки. Их нужно преобразовать в числа с помощью функций atoi или atof.
E-degtyarev вне форума  
 
Автор темы   Непрочитано 27.05.2009, 11:41
#29
HooDRooK


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


А Если можно напишите синтаксис данной функции...ну вот например
(setq D1 (GET_TILE "D1_value"))
(ACTION_TILE "D1_value" "(setq D1 $value)")
и теперь каким образом D1 преобразовать из строки в число?
HooDRooK вне форума  
 
Непрочитано 27.05.2009, 11:54
#30
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


(setq DD1 (atoi D1))
или
(setq DD1 (atof D1))

Это легко посмотреть в Help-e или спровочнике комманд.
E-degtyarev вне форума  
 
Автор темы   Непрочитано 27.05.2009, 12:56
#31
HooDRooK


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


пересохраняю данные с помощью atoi

(defun c:dialog2 ( / dn zn L1 L6 D1 D6 D7 N )
(setq dn(LOAD_DIALOG "0002.dcl"))
(new_dialog "dlg2" dn "")
(setq LL1 (GET_TILE "L1_value"))
(ACTION_TILE "L1_value" "(setq L1 $value)")
(setq LL6 (GET_TILE "L6_value"))
(ACTION_TILE "L6_value" "(setq L6 $value)")
(setq DD1 (GET_TILE "D1_value"))
(ACTION_TILE "D1_value" "(setq D1 $value)")
(setq DD6 (GET_TILE "D6_value"))
(ACTION_TILE "D6_value" "(setq D6 $value)")
(setq DD7 (GET_TILE "D7_value"))
(ACTION_TILE "D7_value" "(setq D7 $value)")
(setq NN (GET_TILE "N_value"))
(ACTION_TILE "N_value" "(setq N $value)")

(START_DIALOG)
(UNLOAD_DIALOG dn)
(setq L1 (atoi LL1))
(setq L6 (atoi LL6))
(setq D1 (atoi DD1))
(setq D6 (atoi DD6))
(setq D7 (atoi DD7))
(setq N (atoi NN))
(princ L1)
(princ L6)
(princ D1)
(princ D6)
(princ D7)
(princ N)

princ пишет все нули...?!
HooDRooK вне форума  
 
Непрочитано 27.05.2009, 13:10
#32
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Ты преобразуешь в число несуществующие строки LL1,DD1 и т.д.
Нужно примерно так:
Код:
[Выделить все]
(setq LL1 (atoi L1));здесь L1-строка, LL1-число
(setq LL6 (atoi L6));здесь L6-строка, LL6-число
(setq DD1 (atoi D1))
(setq DD6 (atoi D6))
(setq DD7 (atoi D7))
(setq NN (atoi N))
(princ LL1)
(princ LL6)
(princ DD1)
(princ DD6)
(princ DD7)
(princ NN)
Можно и так (setq D6 (atoi D6)), но при дальнейшем развитии твоей программы могут возникнуть проблемы-строка это или число, так как с одним именем будут существовать разные типы переменных.

Последний раз редактировалось E-degtyarev, 27.05.2009 в 13:20.
E-degtyarev вне форума  
 
Автор темы   Непрочитано 27.05.2009, 13:33
#33
HooDRooK


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


Заработало вроде..Спасибо...)))...счас буду дальше мучать, если ещё чё вылезит буду молить о помощи..)))...
HooDRooK вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Форма для ввода данных в LISP

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закладные лифтовых приямков винсент75 Поиск литературы, чертежей, моделей и прочих материалов 13 11.08.2009 10:16
Копирование данных для спецификаций из выносок СПДС в таблицу из мтекстов Red Nova Программирование 177 08.12.2008 11:35
LISP для AutoCAD-2009: проблемы со скобками Лентяй LISP 14 16.11.2008 02:40
Нужен LISP для заливки отверстий ilka_t AutoCAD 20 24.03.2004 16:06