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

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

Запрос у пользователя списком

Ответ
Поиск в этой теме
Непрочитано 20.12.2015, 22:29 #1
Запрос у пользователя списком
granit201z
 
Проектировщик
 
Камышин
Регистрация: 17.08.2014
Сообщений: 118

Здравствуйте. Подскажите пожалуйста как организовать запрос данных от пользователя целым списком. То есть не какого-то 1-го ключевого слова, а сразу десятка таких слов. То есть для примера такой запрос: "Выберите группы с которыми будем работать дальше: ". И должен выпасть список наподобие:

Гр.1
Гр.2
Гр.3
...
Гр.47
Гр.48

Пользователь за раз должен выбрать из этого списка столько групп - сколько ему захочется (от одной до всех сорока восьми), причем необязательно подряд. Например он хочет выбрать с 3 по 16 и с 32 по 39, или вообще через одну

Какими средствами это осуществляется?

P.S. Если есть какие нибудь готовые куски кода, позволяющие приблизиться к выполнению этой задачи - буду весьма благодарен
Просмотров: 6765
 
Непрочитано 21.12.2015, 00:02
#2
Кулик Алексей aka kpblc
Moderator

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


На каком языке интересует решение / метода?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.12.2015, 00:06
#3
granit201z

Проектировщик
 
Регистрация: 17.08.2014
Камышин
Сообщений: 118


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
На каком языке интересует решение / метода?
Алексей, на AutoLisp
granit201z вне форума  
 
Непрочитано 21.12.2015, 00:24
#4
Кулик Алексей aka kpblc
Moderator

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


В таком случае есть несколько вариантов: либо сделать initget и в конт.меню запрашивать у пользователя "до посинения" каждый элемент (пока он не нажмет "Хватит"), либо делать диалог на том же dcl, в котором прописывать popup_list с возможностью многократного выбора.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 21.12.2015, 00:38
#5
granit201z

Проектировщик
 
Регистрация: 17.08.2014
Камышин
Сообщений: 118


спасибо. беда только в том, что если воспользоваться первым методом - необходимость в программе отпадает, так как вручную, пожалуй будет проще делать расчеты и чертить, а если вторым, то придется изучать все что с ним связано, так как для меня это темный лес. Тут в голову мысль бредовая пришла: Можно создать 48 примитивов MTEXT, вывести их в чертеж, заставить пользователя выбрать необходимые при помощи ssget, а после извлечь информацию о выбранных и удалить их с чертежа.
granit201z вне форума  
 
Непрочитано 21.12.2015, 00:49
#6
Кулик Алексей aka kpblc
Moderator

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


Можно и так. Просто я предпочитаю без крайней нужды не создавать временные примитивы.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.12.2015, 01:10
#7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,038


ввод строки, в ней через пробел номера позиций меню.. только настройте ввод-чтобы пробел не воспринимался как ввод

----- добавлено через ~16 мин. -----
т.е. что-то типа
Код:
[Выделить все]
 (setq s (getstring T "\nВведите позиции через пробел или группы позиций через '-'. Завершение - Ввод\n"))
а потом распарсить полученную строку по пробелам и тире.

----- добавлено через ~55 мин. -----
Ну или разбирайтесь с DCL. Ничего сложного там нет:
Код:
[Выделить все]
 dd_toggle : dialog 
{
 	label = "Выберите рабочие группы";
	fixed_height = true;
	// Размещаем в строке нужное количество чекбоксов, меняя лишь значения key и label
	:row
	{
		:toggle // Задаем чекбокс
 		{ 
			key = "tog01"; 
			value = "0"; 
			fixed_height = true; 
			alignment = center; 
			label = "Гр.01"; 
		} 
		:toggle 
 		{ 
			key = "tog02"; 
			value = "0"; 
			fixed_height = true; 
			alignment = center; 
			label = "Гр.02"; 
		}
		:toggle 
 		{ 
			key = "tog03"; 
			value = "0"; 
			fixed_height = true; 
			alignment = center; 
			label = "Гр.03"; 
		}

	}
	// Повторяем предыдущий код столько раз - сколько нужно строк с чекбоксами. При этом значения key должны быть уникальные!

	: row 
 	{
 		ok_button;
 		cancel_button;
 	}
}
как работать с диалогами - на вышеуказанной ссылке все есть.
Сергей812 вне форума  
 
Непрочитано 21.12.2015, 07:14
#8
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


http://www.lee-mac.com/listboxsync.html
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 21.12.2015, 09:18
#9
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


48 переключателей в одной строке или в одном столбце - это не годится. Нужна матрица, скахем, 6х8.
Profan вне форума  
 
Непрочитано 21.12.2015, 09:55
#10
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,038


Цитата:
Сообщение от Profan Посмотреть сообщение
48 переключателей в одной строке или в одном столбце - это не годится. Нужна матрица, скахем, 6х8.
Так и показал в примере - как разбить чекбоксы по строкам и столбцам.. решение в лоб.. не хочет человек глубоко влезать в DCL, пускай занимается копипастингом с незначительными корректировками) Можно, как показывал Алексей Кулик на autolisp.ru - делать файл dcl динамически и забивать в цикле значения. Можно на том же NetApi написать lisp-функцию и подключить и т.д.
Сергей812 вне форума  
 
Автор темы   Непрочитано 21.12.2015, 10:31
#11
granit201z

Проектировщик
 
Регистрация: 17.08.2014
Камышин
Сообщений: 118


спасибо за ответы. буду разбираться

Цитата:
как показывал Алексей Кулик на autolisp.ru - делать файл dcl динамически и забивать в цикле значения
а можно ссылку на эту страницу. скорее всего это наиболее подходящий вариант, т.к. 48 групп это не статичная цифра. в зависимости от конкретной ситуации их может быть и 6, и 80, и т.д.
granit201z вне форума  
 
Непрочитано 21.12.2015, 11:31
#12
Кулик Алексей aka kpblc
Moderator

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


Наверное, эта: http://autolisp.ru/2010/03/15/dcl-dialogs-create/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 21.12.2015, 12:03
#13
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,991


granit201z, функция dos_multilist из DOSLib не подойдет?
Миниатюры
Нажмите на изображение для увеличения
Название: 2015-12-21 11-01-34 Скриншот экрана.png
Просмотров: 45
Размер:	75.9 Кб
ID:	162645  
Nike вне форума  
 
Автор темы   Непрочитано 21.12.2015, 12:38
#14
granit201z

Проектировщик
 
Регистрация: 17.08.2014
Камышин
Сообщений: 118


Nike, пожалуй идеально подойдет. Но что такое DOSLib. И где можно подробнее ознакомиться с его практическим применением

----- добавлено через ~5 мин. -----
и еще вопрос. эта функция будет работать только на компе где этот самый DOSLib имеется?
granit201z вне форума  
 
Непрочитано 21.12.2015, 12:50
#15
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,991


granit201z, библиотека функций чья-то
http://www.en.na.mcneel.com/doslib.htm

Естественно, будет работать там, где имеется и заранее подгружена.
Вложения
Тип файла: zip doslib901arx.zip (3.87 Мб, 9 просмотров)
Nike вне форума  
 
Непрочитано 21.12.2015, 13:38
#16
gomer

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


Цитата:
Сообщение от granit201z Посмотреть сообщение
эта функция будет работать только на компе где этот самый DOSLib имеется?
Более того, раз в 2-3 года нужно будет обновлять код, чтоб включить поддержку новых версий дослиб, поддерживающих новые версии автокада.
gomer вне форума  
 
Автор темы   Непрочитано 21.12.2015, 13:53
#17
granit201z

Проектировщик
 
Регистрация: 17.08.2014
Камышин
Сообщений: 118


Сергей 812, спасибо за код. Получилось создать и запустить из лиспа диалог с тремя флажками в ряд. Но тут одна загвоздка. Чтобы активировать (деактивировать) флажок по нему нужно щелкнуть индивидуально - то есть не получается сразу выделить кучку близлежащих флажков рамкой, потом нажать например CTRL и выделить еще одну кучку близлежащих флажков. Можно ли с помощью DCL сделать окно подобное тому, которое нарисовано в скриншоте, который прислал Nike, описывая DOSLib
granit201z вне форума  
 
Непрочитано 21.12.2015, 14:09
#18
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,991


granit201z, глянь тут еще http://web2.iadfw.net/terrycad/Tutor...m#MyMultiLists
Nike вне форума  
 
Непрочитано 21.12.2015, 15:11
#19
trushev


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


В развитие #4 Кулик Алексей aka kpblc,
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
либо делать диалог на том же dcl, в котором прописывать popup_list с возможностью многократного выбора.
При замене popup_list на list_box при multiple_select = true; многократно используя (action_tile "sp" "(setq s $value)")
в s, выделяя строки (блоки строк) загруженного списка, можно сформировать любую строку (список) номеров строк разделенных пробелами.
trushev вне форума  
 
Непрочитано 21.12.2015, 15:19
#20
Кулик Алексей aka kpblc
Moderator

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


Вот черт, старею... Перепутал popup_list и list_box. Позор!!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Запрос у пользователя списком

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос имени редактировавшего при закрытии dwg файла Raznouh AutoCAD 16 02.11.2015 05:02
Не работают модули под правами ограниченного пользователя ich-frau Программирование 6 28.09.2012 10:13
Запрос об изученности геологических условий земельного участка janita Основания и фундаменты 8 08.08.2010 22:06
Пропал запрос на сохранение чертежа Nikolay 2 AutoCAD 25 07.03.2009 21:19
Сообщение об ошибке... или анимация для пользователя. KAI Программирование 13 17.03.2008 11:58