| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
02.08.2019, 20:00 | #1 | |
Как реализовать поиск (навигацию) блоков по имени?
Регистрация: 06.06.2016
Сообщений: 327
|
||
Просмотров: 16423
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,849
|
_qselect ?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 06.06.2016
Сообщений: 327
|
В ку сЕлект нужно имена блоков знать. А я их не знаю.
Т.е. нужен список имён всех блоков на схеме иметь перед глазами. И не просто список, а кликабельный. Чтобы кликнув по имени в этом спсике можно было высветить на схеме соответствующее вхождение, автозумировать его и автоматом перейти на него. А потом. Ку сЕлект требует много лишних телодвижений, а хотелось бы это делать, что называется, "одним кликом". Есть ещё фроде команда "_фильтр"? Она более продвинутая. Но народ почему-то её не любит юсать ----- добавлено через ~2 мин. ----- Цитата:
Соответственно, не показывает список имён найденных блоков в результатах поиска Последний раз редактировалось Кондратий Тихонович, 02.08.2019 в 21:00. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
логично - имя блока: это ключ в таблице определений. Но что мешает приделать костыль - скрытый предустановленный атрибут с начальным значением = имени блока?
|
|||
|
|||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Кондратий Тихонович, я углядел противоречия.
Цитата:
Цитата:
Далее. Цитата:
Цитата:
Задача, полагаю, переходит уже в плоскость программирования, поскольку штатных средств я тоже припомнить не могу. Лисп, например, предлагает как минимум два стандартных варианта: диалоговое окно на DCL (первая картинка) и выпадающий список динамического ввода (вторая). Как-то приходилось применять и нестандартный подход. С тем блоком, о котором я говорил выше, автоматически генерируемом. Сканировался указанный внутри блока текст, считывалось его содержимое, и в зависимости от него выполнялось что-то еще. В данной задаче блок может состоять из текстовых объектов, в каждом из которых - имя отдельного блока, все в виде списка друг под другом (внутри блока). У пользователя запрашивался клик по блоку, и из-под мыши считывается значение текста, которое и является именем блока. Далее уже дело нехитрое. Странный подход? Да. Но в некоторых случаях подошел идеально. Файл с блоками для примера скачал из нашего Download. Последний раз редактировалось skkkk, 03.08.2019 в 02:46. |
||||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
ну судя по последним постам, человек пытается организовать систему навигации по проекту, используя штатные средства акада. Можно сделать какое-то подобие, но про удобство пользования
без программирования можно сразу забыть. Да и использовать для навигации модальные диалоги не самое удобное, имхо. У меня к тому же диалогу поиска один вопрос - почему до сих пор его не сделали в виде немодальной палитры, чтобы можно было перемещаться по результатам поиска и параллельно сам чертеж видеть и двигать свободно. Там понадобиться отслеживать изменения элементов для поддержки актуальности результатов поиска - но врятли это составило бы какие то проблемы для разработчиков Аутодеска. |
|||
|
||||||
Регистрация: 06.06.2016
Сообщений: 327
|
Да мне бы хоть как. Потому что сейчас вообще НИКАК
Цитата:
И желательно чтобы можно было высветить блок на схеме просто кликнув мышкой по имени блока в списке В схемотехнических САПР так и сделано. Но приходится возиться с чужой схемой, сделанной в автокаде Цитата:
Хотелось чтобы он показывался не весь, а только те имена, у которых имя удовлетворяет заданному вилдкарду Цитата:
Цитата:
Средство быстрого поиска, просмотра и автопозиционирования/автомаштабирования объектов чертежа. Просто в сехмотехнических САПР всё это есть. Но нам стали приносить схемы, сделанные в акаде. Поэтому приходится "городить огород" ----- добавлено через 59 сек. ----- Неужели в акаде нет штатных средств браузинга объектов базы данных чертежа? ----- добавлено через ~11 мин. ----- Цитата:
Вот к примеру в схемотехнической САПР я могу зажав CTRL кликнуть по двум разным именам объектов в таблице браузера проекта - и они (объекты) автоматом выделятся, а автосколл и автозум сделают так, чтобы масштаб был максимальный, но такой, когда на экране ещё помещаются оба объекта целиком. Более того. Можно поставить галку "автозатенение" - и тогда все другие объекты ("обстановка") станут тусклыми - чтобы выделенные лучше видно было. |
|||||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
Цитата:
|
|||
|
||||
Регистрация: 06.06.2016
Сообщений: 327
|
|
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
видимо подразумевается, что если у пользователей чертежи такой сложности - но они выберут иной инструмент вместо акада, либо закажут/напишут надстройки (ничего там сложного нет, примеры кода отдельных составляющих в инете присутствуют). Это уже внутренняя кухня разработчика, по каким критериям они выбирают необходимость разработки того или иного функционала акада - в данный момент штатного решения в нем нет.
|
|||
|
|||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Во-первых, хотелось бы заметить, что тема ушла далеко от названия в последних постах, и уже, возможно, имеет смысл выводить ее отдельно.
Во-вторых, штатных решений нет, значит место ей - в разделе "Программирование". В-третьих... Меня, как программиста (хоть и не профессионального вовсе) такой ответ не устроит. Без внятного ТЗ, как говорится, результат - ХЗ. Я готов посодействовать по нескольким причинам: 1. Поддержать тонус извилин на период временного отсутствия нужды в оптимизации процессов проектирования. 2. Есть немалое количество наработок по этой теме, как моих, которыми мне не жалко поделиться, так и найденных в Сети. 3. Процесс допила под конкретную нужду, насколько я вижу, не составит большого труда. 4. Мысль, как по мне - так довольно интересная, думаю, нашим понравится. 5. (Как говорят англичане, last but not least - последний но не самый маловажный) люблю я это дело... Однако совсем не хотелось бы переделывать несколько раз после того, как что-то будет сделано немного не так, как хотелось бы (чужая душа - потёмки, да). И, как правило, это "немного" вытекает в уйму времени, гораздо большую, нежели изначальная разработка, зачастую при кажущейся внешней простоте вопроса. Делать просто ради тренировки неинтересно - куда приятнее, если понимаешь, что это не просто "курсовик", но решение РЕАЛЬНОЙ задачи - это мотивирует. Итак, что мы имеем. Цитата:
Цитата:
Цитата:
Что я предлагаю. 1. Вызываем команду. 2. Запрашивается строка - маски, по которой имена отфильтруются. Вариатнты: - ввод текста в командной строке; - диалоговое окно с запросом строки; - может, кто-то подскажет, если подобное можно реализовать на DCL непосредственно в окне со списком имен (см. ниже) - динамически менять список имен при вводе маски в том же диалоге со списком. 3. Появляется список блоков, удовлетворяющих маске. Варианты списка я приводил выше. Немодальные (т.е., не блокирующие чертеж на время их появления) окна мы с лиспом, к сожалению, делать не умеем. 4. Выбираем имя блока из списка. При использовании варианта с диалогом (первая картинка в #14) можно выбирать несколько имен, зажав Ctrl или Shift. 5. Чертеж зумируется. 6. Подсвечиваются блоки. Варианты: - просто ручками, как если бы их выбрали. Тут правда, есть ограничения на количество блоков, когда ручки еще появляются. При превышении порога блоки просто подсветятся пунктиром. Но эту величину можно задавать переменной. И после работы программы - возвращать (автоматически, конечно). - просто пунктиром; - габаритными (описанными вокруг блока) примитивами - прямоугольниками или кругами на непечатном слое, которые будут удаляться при нажатии Esc или иным образом; - габаритными временными примитивами, как в предыдущем подпункте, только они удаляются при зумировании - сомнительный вариант; - затемнением всего остального, однако вариант этот так себе - полагаю, на загруженных чертежах будут неслабые зависания. Цитата:
Кондратий Тихонович, предлагаю подправить ТЗ под свои запросы, а я в свою очередь постараюсь посодействовать по мере возможности, но быстро - не обещаю. |
||||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
Цитата:
имхо, та навигация, которую хочет К.Т. - скорее всего реализовывать в виде дерева: список имен определений найденных блоков - на первом уровне, в подсписках второго уровня - "ссылки" на вставки блоков и дополнительная информация из блоков, например. В .Net + WPF это реализовывается штатными возможностями языка (делается шаблон элемента списка любого вида в XAML-разметке), в лиспе - фиг его знает. ----- добавлено через ~8 мин. ----- doslib вроде библиотека называется |
|||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Вероятно, это OpenDCL.
Offtop: Знаю, но пока нужды не было особо. До сих пор нам в нашей сфере деятельности удавалось обходиться лиспом на 99%. То, что он не мог и было нужно реально, заказывали у разработчиков на более мощных языках. Нашелся такой подход, в котором можно обойтись без модальных окон, красота интерфейса у нас на одном из последних мест, поскольку это все же не коммерческий продукт, то и требования к нему соответственные. По мнению большинства удобство не пострадало. Но всё зависит от специфики деятельности. И от искушенности пользователя. ----- добавлено через ~15 мин. ----- Offtop: DOSLIB активно используем. Даже были мысли в рамках текущей обсуждаемой задачи предложить использовать пару функций из этой прекрасной библиотеки. Но не встречал там такого функционала. Хотя я думал, что все функции изучил. Надо будет еще поглубже вникнуть. Может, это в последних версиях появилось. Мы еще на 2011-м сидим. Хватает за глаза с учетом примочек собственного производства. Бесит, конечно, конвертировать файлы от всяких крутышей с автокадом две тыщи восемьсот пятьдесят десять, но благо - конверторы бесплатны. У тех, с кем работаем постоянно, стоит сохранение в 2010. |
|||
|
||||
Регистрация: 10.08.2013
Сообщений: 11,052
|
В справке DosLib только функция dos_htmldialog имеет режим модального/немодального показа. Печально, без окна немодальной палитры, и чтобы она могла авто-сворачиваться - нормального интерфейса для задачи навигации как-то не представляю.
|
|||
|
||||
Цитата:
Возможно, что этот инструмент Вам и вообще пригодится - почти все им с удовольствием пользуются. Благодаря Александру!
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,095
|
Цитата:
Цитата:
Еще добавлю, что подобная штука есть в TOOLPAC, даже самых старых версий, меню Block -> Count inserts (короткая команд BCI). Заточена именно на подсчет количества экземпляров выбранного блока, ничего настраивать не надо, операция выполняется действительно за один щелчок мыши. Единственное, может не работать на дин. блоках, т.к. TOOLPACK старше, чем они сами. Последний раз редактировалось kp+, 06.08.2019 в 10:22. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск блоков пересекающих полилинию | tujn08 | Программирование | 80 | 13.03.2019 00:08 |
LISP для пакетного изменения имени блоков, расставленных на чертеже | d.mOnII | LISP | 7 | 17.11.2017 01:04 |
VBA Выбор блоков по имени | ramber | Программирование | 17 | 04.08.2017 18:48 |
Максимальные размеры полистиролбетонных блоков. Перевязка | gdenisn | Конструкции зданий и сооружений | 18 | 20.08.2012 22:34 |
Замена списка блоков соответствующим списком блоков, но другого масштаба | АKA | AutoCAD | 12 | 11.03.2012 06:25 |