|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Выбор блоков по значению атрибутов.
-
Москва
Регистрация: 24.07.2005
Сообщений: 1,335
|
||
Просмотров: 31721
|
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Реанимирую данную тему.
Вопрос собственно расширился. Нужно выбрать вхождения блоков из указанной области, либо со всего чертежа по значению атрибута. Условия: 1. Блоки обычные и динамические 2. Различные как по имени, так и по др. параметрам, лишь бы было наличие атрибута. 3. Выбор производится по значению атрибута, тэг атрибута может быть различным.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
В результате надо получить список указателей на блоки?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
Цитата:
![]() Код:
kpblc-а Вам в помощь! ![]() Последний раз редактировалось Nike, 10.09.2009 в 17:16. |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Nike, поддержка ? и * (выбор любого знака или любого количества знаков), а также операторов < > = и т.д. присутствует??
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Без масок:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Кулик Алексей aka kpblc ,
мне кажется, что маски тут подразумевается использование символов * и ? в значении атрибута. Например, если плиты перекрытий обозначать как ПП01..П25, то к примеру маска вида ПП1* будет обоначать выбор всех блоков, у которых атрибут в диапазоне ПП10-ПП19. Такое сравнение строк легко реализуется с помощью wcmatch |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Это я понимаю. Вопрос - где (и, самое главное, как?) будет пользователь указывать место расположения маски? Допустим, выбран атрибут со значением ПП-123. Надо добавить маску, к примеру, [A-Z]. Каков должен получиться критерий: П[A-Z]П-123? [A-Z]ПП-123? [A-Z]П[A-Z]П-123? Вариантов-то немеряно.
Это и есть в данный момент основная проблема. Остальное - не сложно.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,917
![]() |
Цитата:
1. Нужно произвести выбор вхождений блоков с атрибутами. 2. Задается область выбора или на весь чертеж 3. Программа просит ввести значение атрибута по которому будет производится выбор. 4. Пользователь указывает значение, для примера ПП-*, где маска означает выбрать все блоки у которых значения атрибута начинается с ПП-(а здесь любое количество знаков). 5. Производится выбор.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
И чего с этим выбором сделать? Подсветить?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. Последний раз редактировалось Кулик Алексей aka kpblc, 11.09.2009 в 10:48. Причина: Добавил в конец кода (princ) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Данные вводить с клавы или "ткнуть" на образец атрибута надо?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Ну, как вариант:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 25.09.2008
Новосибирск
Сообщений: 218
|
Не получается, пишет:
Укажите атрибут <Вводить с клавиатуры> : ДЛИНА *Неверный выбор* Требуется один объект. Прошу прощения, что сразу не уточнил, блоки динамические. Может в этом дело? Еще раз прошу прощения, работает!!! Только не понятно что такое "Укажите атрибут <Вводить с клавиатуры> :", вроде как тэг атрибута вводится в следующем запросе "Введите тэг атрибута для фильтрации <Отмена> :"? Последний раз редактировалось saa, 25.12.2009 в 13:57. Причина: разобрался чуть-чуть |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
А ты в ответ на первый запрос ткни в атрибут
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Добрый день свем.
Светлые и светлейшие головы (aka kpblc) подсобите с вашей прогой пост 25.12.2009, 09:13 #19 Что бы выбранные блоки остались подсвеченными (чтоб срузу можно было их переносить/копировать) очень нужно... |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Странно. Судя по коду, они и так должны быть подсвечены. Другое дело, что в коде сейчас не отслеживается, в каком пространстве - модели или листа - находятся блоки. Может, поэтому sssetfirst и не срабатывает?
Сейчас, увы, времени нет совсем. Попробую на выходных, если не забуду (мне в личку кинь ссылку на тему).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Я сталкивался с тем, что при использовании sssetfirst не всегда объекты (даже если выбран 1 блок) подсвечивается ручками, хотя для команд предварительный выбор существует.
gizmo_zx, После выполнения кода все таки попробуй вызвать команду (например _MOVE с PICKFIRST=1) и проверь. Не светятся не значит, что не выбраны.
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
_move
Рамка/Последний/Секрамка/БОКС/Все/Линия/РМн-угол/СМн-угол/Группа/Добавить/Исключ ить/Несколько/Текущий/Отменить/Авто/Единственный/ПОДобъект/Объект Я выбрал "Текущий" но подсветились все объекты, которые выбила рамкой Т.е. как бы не отфильтрованные ![]() ![]() ![]() Но программа количество правильно считает! (проверил) Последний раз редактировалось gizmo_zx, 09.07.2010 в 11:28. |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
А если выбрать "_p" (последний)?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Немного изменил код Алексея (выделено красным). Проверь как теперь работает.
Код:
*** Добавлено Цитата:
_l - последний (Last) ![]()
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Шаражпроектхалтурмонтаж Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010
|
После <Отмена> в
"Введите тэг атрибута для фильтрации <Отмена>" следует "Введите значение атрибута для фильтрации (с учетом маски) <Отмена>" идет поиск по введенному значению в несуществующих (в результате отмены ввода тэга) атрибутах и как следствие - отсутствие результата. Предлагаю вместо этой <Отмены> за ее ненужностью добавить возможность выбора нужного атрибута мышью. ![]() Последний раз редактировалось Nike, 09.07.2010 в 12:31. |
|||
![]() |
|
||||
Регистрация: 30.04.2008
Сообщений: 401
|
Лучше, конечно, чем ничего, но хотелось бы, чтобы объекты оставались выбранными, а не перемещались на коакой-то слой.
Результат хотелось бы такой как у проги в посте №8 только, чтобы блоки выбирались не по атрибутам, а по значениям динамических параметров. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
Dynamic block filter Select all occurences of a Dynamic Block in Modelspace Select all instances of a block, including dynamic Код:
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 17.02.2016 в 13:30. |
|||
![]() |
|
||||
КИП и А Регистрация: 28.04.2010
Киев
Сообщений: 101
![]() |
VVA, Класс
Фильтрация по значением атрибута отменная. Можно чуток переделать прогу. Что бы указав дин блок, можно было изменить любое значение на другое и помимо выделения изменились во всех остальных значение. Свое рода получается "Найти и заменить в конкретных дин блоках конкретные значение массово". И неплохо бы программно в каком то куске LISP указывать те значения которые не нужны в выводе DCL окошке или наоборот нужны. Поскольку параметры значений "Растянуть" мне и даром не нужны что бы их фильтровать и глобально изменять. А кому то что то другое не нужно. Для замены значений необходимо сделать еще 1 галочку "Edit" При указании галочки "Edit" в DCL окошке должно показывать все значение которые УЖЕ указанны в том блоке который ты указал. Если убрать галочку то прога работает как в посте 37 Спустя 20 мин Говорят курение вредит но во время курения приходят гениальные мысли. Авто-замена всего проекта. Если прога может найти дин блоки с конкретными именами и изменить по фильтру конкретные значения в них. То почему бы не сделать автозамену из внешней программы к примеру Excel. В которой пользователь прописывает имя блока, значение (атрибут) этого блока, новое значение атрибута. Указывает папку с чертежами в которых находятся дин блоки указанные пользователем и прога сама меняет во всех чертежах атрибуты на новые. А теперь представте как быстро можно будет изменить весь проект при замечаниях заказчика. Мечты, Мечты, Мечты. Хотя все реально. Последний раз редактировалось Eddicordo, 30.11.2010 в 11:41. |
|||
![]() |
|
||||
Регистрация: 20.02.2015
Сообщений: 79
|
Доброго времени суток, уважаемые форумчане! Обращаюсь к ув. Кулик Алексей aka kpblc, автору программы из #8. Большое спасибо, все очень удобно. Но есть одни нюанс, для меня конечно: с каждым запросом нужно выполнять выбор в чертеже. Если можно доработать вариант лиспа без выбора. Поскольку поиск выполняется во всем чертеже, блоков тысячи и теряется драгоценное время на выбор. Спасибо!
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
То есть? Я просто не понял, в чем вопрос.
P.S. Можно попытаться заменить nentsel на цикл, конечно - но почему-то мне кажется, что надо не это.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.02.2015
Сообщений: 79
|
Чтобы после ввода для поиска нужного атрибута опустить опцию "выбора объектов"рамкой области поиска. Чтобы поиск выполнялся во всем чертеже по-умолчанию. Лишние телодвижения, а когда искать часто и много (точки топоплана, в виде блоков с атрибутами), то потеря времени ощутима.
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
В #8 выбор идет по всему файлу. В #14 - по выбранной области. Найти строку типа
Код:
Код:
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
|
|||
![]() |
|
||||
Регистрация: 20.02.2015
Сообщений: 79
|
Цитата:
Да, вот еще возник один вопрос к автору программы Кулик Алексей aka kpblc Если не очень сложно, нельзя ли дополнить программу опцией панорамирования (по образцу штатной find)? Чтобы найденный блок показывался в увеличенном виде непосредственно в экране. Еще раз спасибо за Ваш труд! |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
А что делать, если найдено, к примеру, 20 блоков? И все они "раскиданы" по чертежу?
Так-то не особо сложно должно быть...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,107
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 20.02.2015
Сообщений: 79
|
Цитата:
С блоками - гораздо удобнее. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
Алексей немного о другом скорее всего - если в том же .Net несложно сделать немодальное окно-палитру (типа свойств акада) и туда вывести список найденных блоков. А потом по щелчку по соответствующей строке списка перемещаться на один из блоков. Lisp в этом плане ограничен, в нем немодальные окна вообще вроде нельзя создать встроенными средства - насколько помню.
|
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,107
|
Цитата:
Цитата:
|
|||
![]() |
|
||||
Регистрация: 20.02.2015
Сообщений: 79
|
Спасибо, в курсе. Но это не то. Это для вычерчивания, а указанная выше (#14) - для поиска.
Подчеркиваю, я работаю с блоками, а не с точками GOGO. Хотя иногда прибегаю и к их помощи. "Но это уже совсем другая история" (C) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Попробуй. Код не проверял.
Если код не работает, то нужен файл с образцом блока и с описанием, как ты работаешь.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 20.02.2015
Сообщений: 79
|
Цитата:
Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Сорри, исправил. Ну и еще кое-что добавил
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Кстати, почищенный файл блока...
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 11.10.2010
Сообщений: 979
|
_qselect, естественно, тут не сработает. Ну и фиг с ним - сначала поиск, потом сборка найденных кусков, потом снова поиск, и только если что-то не получается, уже сигналить на форум с просьбой помочь.
__________________
(/= RegDate StartReadDate) |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,107
|
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
trir, ну или net + regexp + <...>
Кстати, тоже забавный результат можно получить - я тут поэкспериментировал в C#, регулярные выражения теперь почти полностью понимаются у меня в лиспе. Прикольно, блин! Я в восторге, если честно ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,107
|
В AutoCAD Map 3D через FDO просто подключаешься к БД и дальше всё шпаришь на sql'е
в net надо компилировать и вообще много обвязки делать, что бы что то сделать на lisp'е тоже приходится копаться в чертеже, как в помойке А с БД у тебя только нужные данные с правильной структурой и язык который позволяет, что угодно делать с этими данными, без лишних телодвижений при этом эти данные открываются в AutoCAD'е буквально в пять кликов Последний раз редактировалось trir, 20.09.2019 в 20:20. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
trir, я прекрасно это понимаю. И частенько при работе с sql формирую запрос таким образом, чтобы он возвращал мне только нужные данные. Добавить фильтрацию типа "where upper(field) like '%SOMETHING'%" в коде труда особого не составляет, как правило
![]() ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
И еще до кучи. Наткнулся в downloade
Выбор вхождений блока по фильтру на свойства и значения атрибутов
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 11.10.2023
Сообщений: 1
|
Приветствую уважаемых форумчан! Передо мной стоит задача в области землеустройства. Есть выписки КТП (кадастровые планы территории) содержащие вхождение блоков имеющих семантику такую как кадастровый номер, площадь итд. Нужно отсортировать блоки по атрибуту "категория земель" всего нужно выделить четыре (лесной фонд, насел. пунктов, запас, особо охраняемые) внимательно изучив данный раздел попытался применить http://https://dwg.ru/dnl/9204 это лисп логически он очень похож но ни чего у меня не получилось если данная тема ещё актуальна очень нужна помощь. Civil 3D 2022, Windows 10 Pro
|
|||
![]() |
|
||||
Регистрация: 18.12.2010
Сообщений: 5,107
|
выписки надо грузить сразу в БД и работать с ними на SQL
https://forum.dwg.ru/showpost.php?p=...0&postcount=67 |
|||
![]() |