Скидки на VetCAD++
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

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

Autolisp ограничить ввод для пользователя

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 02.08.2018, 10:07
Autolisp ограничить ввод для пользователя
protorgovec
 
газо- нефтепереработка
 
Уфа
Регистрация: 22.07.2015
Сообщений: 78

protorgovec на форуме Вставить имя

Добрый день форумчане. Подскажите пожалуйста. Нужно заставить пользователя выбрать один из предложенных вариантов:
Код:
[Выделить все]
 (initget 1 "01 02 03 04 11 21")
(setq Tip (atof (getkword "\n Тип фланца 01, 02, 03, 04, 11, 21 Tip >: ")))
все работает, но есть одна загвоздка. Если пользователь вводит 1, то присваивается 11, а если 2 то присваивается 21. Воспринимает сокращения. Как мне заставить пользователя прописывать только предложенные варианты, без сокращений? Заранее благодарю.
Просмотров: 1296
 
Непрочитано 10.08.2018, 14:18
#41
koMon


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


Цитата:
Сообщение от protorgovec Посмотреть сообщение
Помогите кто может!!!
диалог Flange_Select.dcl

Код:
[Выделить все]
 
Flange_Dialog : dialog {
				label = "Выбор фланца";
					: boxed_row {
							height = 5;
							: column  {
									width = 15;
									: text_part  {
											label = "Тип";
											alignment = centered;
										     }
									: row {
										spacer_0;
    										: popup_list {
												key = "Flange_Type";
												edit_width = 5;
												list = "\n01\n02\n03\n04\n11\n21";
												value = "0";
												alignment = left;
											     }
										spacer_1;
									      }
									spacer_1;

								}
							: column {
									width = 15;
									: text_part  {
											label = "Материал";
											alignment = centered;
										     }
									spacer_0;
    									: list_box   {
											key = "Flange_Material";
											list = "\n  Cталь  \n  Cерый чугун  \n  Ковкий чугун  ";
											width = 15;
											height = 4;
											is_enabled = false;
											value = "0";
										     }
								}
						    }
					spacer_1;
    					ok_cancel;
			}

лисп flange_selecting.lsp

ПУТЬ К ДИАЛОГУ поменять на реальный путь

Код:
[Выделить все]
 
(defun flange_selecting ()
	(setq dcl_filename_full "ПУТЬ К ДИАЛОГУ\\Flange_Select.dcl"
		  	  fs_dcl_id (load_dialog dcl_filename_full)
			  flange_type "0"
			  flange_material "0"
	)
		(if (not fs_dcl_id)
			(progn
				(alert "Ошибка загрузки DCL файла!")
				(exit)
			)
			(progn
				(if (not (new_dialog "Flange_Dialog" fs_dcl_id))
					(progn
						(alert "Ошибка загрузки DCL файла!")
						(exit)
					)
					(progn
						(action_tile "OK" "(done_dialog 1)")
						(action_tile "Cancel" "(done_dialog 2)")
						(action_tile "Flange_Type" "(if (= \"5\" $value)
															(progn
																(mode_tile \"Flange_Material\" 0)
																(set_tile \"Flange_Material\" flange_material)
															)
															(mode_tile \"Flange_Material\" 1)
													)
													(setq flange_type $value)
												   "
						)
						(action_tile "Flange_Material" "(setq flange_material $value)")
						(set_tile "Flange_Type" flange_material)
						(setq diag_result (start_dialog))
						(unload_dialog fs_dcl_id)
						(cond
								(
									(= diag_result 1)
										(princ (strcat "\nВыбран " (cadr (assoc flange_type '(("0" "01") ("1" "02") ("2" "03") ("3" "04") ("4" "11") ("5" "21")))) " тип фланца"))
										(if (= "5" flange_type)
											(princ (strcat "\nМатериал фланца " (cadr (assoc flange_material '(("0" "Сталь") ("1" "Серый чугун") ("2" "Ковкий чугун"))))))
										)
								)
								(
									t
										(princ "\nEsc нажат")
								)
						)
					)
				)
			)
		)
		(princ)
)
----- добавлено через ~33 мин. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
2. Слезайте с лиспа - ваши задачи стали выходить за его пределы.
да как бы нет)

Последний раз редактировалось koMon, 10.08.2018 в 16:16.
koMon вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.08.2018, 15:34
| 1 #42
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,555


Цитата:
Сообщение от protorgovec Посмотреть сообщение
Переменные Tip и Mat он не определяет, пишет что не известно, пишет что неверный тип аргумента.
Анекдот. Пришел мужик на авторынок за запорожцем. Мялся-мялся, наконец купил, залез, вставил ключ, провернул, а машина не заводится. Мужик вылез и наехал на продавца, мол, обманул, мол, машина не заводится. А продавец ему и говорит, мол, покупай мерседес, там все с пол-оборота заводится. Мужик почесал репку и пошел пешком домой.
Мораль сего проста: нечего ключ зажигания в прикуриватель тыкать
gomer вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано сегодня, 09:50
#43
protorgovec

газо- нефтепереработка
 
Регистрация: 22.07.2015
Уфа
Сообщений: 78


Цитата:
Сообщение от koMon Посмотреть сообщение
диалог Flange_Select.dcl

Код:
[Выделить все]
 
Flange_Dialog : dialog {
				label = "Выбор фланца";
					: boxed_row {
							height = 5;
							: column  {
									width = 15;
									: text_part  {
											label = "Тип";
											alignment = centered;
										     }
									: row {
										spacer_0;
    										: popup_list {
												key = "Flange_Type";
												edit_width = 5;
												list = "\n01\n02\n03\n04\n11\n21";
												value = "0";
												alignment = left;
											     }
										spacer_1;
									      }
									spacer_1;

								}
							: column {
									width = 15;
									: text_part  {
											label = "Материал";
											alignment = centered;
										     }
									spacer_0;
    									: list_box   {
											key = "Flange_Material";
											list = "\n  Cталь  \n  Cерый чугун  \n  Ковкий чугун  ";
											width = 15;
											height = 4;
											is_enabled = false;
											value = "0";
										     }
								}
						    }
					spacer_1;
    					ok_cancel;
			}

лисп flange_selecting.lsp

ПУТЬ К ДИАЛОГУ поменять на реальный путь

Код:
[Выделить все]
 
(defun flange_selecting ()
	(setq dcl_filename_full "ПУТЬ К ДИАЛОГУ\\Flange_Select.dcl"
		  	  fs_dcl_id (load_dialog dcl_filename_full)
			  flange_type "0"
			  flange_material "0"
	)
		(if (not fs_dcl_id)
			(progn
				(alert "Ошибка загрузки DCL файла!")
				(exit)
			)
			(progn
				(if (not (new_dialog "Flange_Dialog" fs_dcl_id))
					(progn
						(alert "Ошибка загрузки DCL файла!")
						(exit)
					)
					(progn
						(action_tile "OK" "(done_dialog 1)")
						(action_tile "Cancel" "(done_dialog 2)")
						(action_tile "Flange_Type" "(if (= \"5\" $value)
															(progn
																(mode_tile \"Flange_Material\" 0)
																(set_tile \"Flange_Material\" flange_material)
															)
															(mode_tile \"Flange_Material\" 1)
													)
													(setq flange_type $value)
												   "
						)
						(action_tile "Flange_Material" "(setq flange_material $value)")
						(set_tile "Flange_Type" flange_material)
						(setq diag_result (start_dialog))
						(unload_dialog fs_dcl_id)
						(cond
								(
									(= diag_result 1)
										(princ (strcat "\nВыбран " (cadr (assoc flange_type '(("0" "01") ("1" "02") ("2" "03") ("3" "04") ("4" "11") ("5" "21")))) " тип фланца"))
										(if (= "5" flange_type)
											(princ (strcat "\nМатериал фланца " (cadr (assoc flange_material '(("0" "Сталь") ("1" "Серый чугун") ("2" "Ковкий чугун"))))))
										)
								)
								(
									t
										(princ "\nEsc нажат")
								)
						)
					)
				)
			)
		)
		(princ)
)
----- добавлено через ~33 мин. -----

да как бы нет)
Огромное спасибо. Сам бы в жизни не допер.
protorgovec на форуме вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Autolisp ограничить ввод для пользователя

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Autolisp: как получить последний ввод (команду, координаты точек)? studentarh LISP 49 15.08.2013 11:52
Ввод объекта в эксплуатацию andrew.g Прочее. Архитектура и строительство 7 12.07.2013 16:28
DYNMODE (Системная переменная динамический ввод) sdv79 Справочник команд 0 10.06.2012 17:17
Приямок ("кессон") скважины водоснабжения. Гидроизоляция, ввод трубы. Андрей О Конструкции зданий и сооружений 2 27.05.2011 23:52
Динамический ввод или демонический ввод? TheBuTeK AutoCAD 20 13.10.2005 09:36

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||