|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Небыстрый "Быстрый выбор"
Сообщений: n/a
|
||
Просмотров: 24317
|
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Это тоже не самый шустрый способ.... Опять гулянка по меню - диалоговым окнам
![]() Вот малююююсенький Лиспик Код:
Цитата:
|
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
... и тут Остапа понесло....
А что если оформить это не как обычную команду, а как функцию.... Нижеследующий код добавляет фильтр и возвращает выбранные объекты в команду, а также (может и зря) доводит пользовательский ввод текущей команды до завершения Код:
Вот пример выбора группы примитивов для окна свойств Цитата:
Еще вариант - прозрачная команда. Та которая выполняется во время выполнения основной команды. Код:
Код:
Цитата:
|
|||
![]() |
|
||||
инженер-технолог (ГИП) Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,146
|
А эти лиспы только для текста или можно изменить переменную TEXT на BLOCK потом название блока куда то написать и будут блоки выделяться?
Если не трудно поясните как расширить этот лисп до поиска блоков))
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты. |
|||
![]() |
|
||||
инженер-технолог (ГИП) Регистрация: 11.09.2003
Санкт-Петербург
Сообщений: 1,146
|
ИЗВИНЯЮСЬ.
Похоже я совсем плох стал((( сам это уже спрашивал, но по запарке совсем забыл(( Команда ssx есть как мне подсказали. Довльно удобна для написания макроса.
__________________
Большая беда науки в том, что при восхитительной теории можно получить отвратительные результаты. |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
>Mikhail ssx - это из Тулпака или Экспрессов? Для выбора имен блоков (точнее - для вставок блоков) фильтр будет примерно такой: .... (list '(0 . "INSERT") (cons 2 (getstring t "\nИмя блока: "))) .... |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
А про ручки никто и не спрашивал с самого начала...
Если надо, можно сделать выделение (подсветку) выбранных примитивов с одновременным панорамированием/зуммированием дисплея на эти примитивы.... Итак, вопрос прост: ЧТО должно быть результатом работы команды/функции/макроса? |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Так значит, чтоб с ручками....
![]() Возможно, сторонники Лиспа меня и не поймут.... Рисуем кнопки... Фильтры в ssget, конечно, только для примера. Попробуем использовать команду _.PSELECT, на которую обратил внимание мой заокеанский тезка. К сожалению, это специфическая команда окна свойств. Если в текущем сеансе окно свойств _.properties не вызывалось - то команда не доступна. Впрочем, это не мешает ее (команду) использовать. Достаточно загрузить нужный файл acopm.arx, что лежит в корневом каталоге АКАДа (тестировались на английской версии AutoCAD2002 и 2004). Способов загрузки несколько :
Теперь собственно о том "что вешать на кнопки": Код:
Код:
![]() Попытаемся все же сделать пользовательский ввод. Функция (getstring) в данном случае не подходит. Код:
Код:
Можно передать в фильтр и несколько параметров. Код:
При отсутствии примитивов, удовлетворяющих критериям поиска в командной строке будет напечатано nil, а сам набор Previous не изменится. Системных переменных, которые могут воспринимать строковую информацию, немного. Всего пять. При следующем вызове макроса (нажатии кнопки) будет подсказка с последним введенным значением. Конечно, если какая то другая программа или макрос его не изменит!!! Есть смысл ввести свое закрепление каждой переменной за определенными данными, например, USERS1 - тип примитива, USERS2 - слой, USERS3 - текст.... Впрочем, это дело хозяйское, тоесть пользовательское. Потому переменные так и называются. Если лень искать в хелпе - вот очень кратко о назначени DXF групп: общие 0 - тип примитива 6 - тип линии (при ByLayer может отсутствовать) 8 - имя слоя 62 - цвет (при ByLayer может отсутствовать или = 256, при ByBlock = 0) - ЧИСЛО для TEXT 40 - высота текста - ЧИСЛО 1 - собственно строка текста 7 - стиль текста (при Standard может отсутствовать) 72 и 73 - соответственно горизонтальное и вертикальное выравнивание - ЧИСЛО для INSERT 2 - имя вставленного блока Разумеется, ЧИСЛА нужно передавать через переменные USERI1...USERI5 |
|||
![]() |
|
||||
Регистрация: 28.08.2005
Сообщений: 32
|
Думал, нашел, что искал, но нет.
Можно ли немного доработать qselect: Мне нужно, чтобы значение "Value:" копировалось из объекта. Т. е. чтобы выбрать заливку с колером RAL 000 15 0, мне сначала нужно посмотреть свойства объекта, запомнить и секунд 30 выделять этот колер. Можно сказать, что помимо (вместо) Select Color мне не хватает Select Object. |
|||
![]() |
|
||||
строитель Регистрация: 13.03.2005
СПб.
Сообщений: 216
![]() |
Незнаю чем вас обидел Q SELKT Я ей пользусь довольночасто.
Всеравно набирать искомый текст, что в новом способе поиска, что встаром. При выборе QSELEKT если объектов слишком много он тоже не подсвечивает грипсы, но я решаю эту проблему простой командой копировать и тогда все загорается. Очень помогает при подсчете количества деталей ( в командной строке пишет кол-во.) А поиск текста просто правой кнопкой \найти или заменить\ (переносит экран к найденному тексту к левому верхнему углу меню поиск. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,425
|
Погоди. Если у тебя пример штриховки с таким цветом на экране, выбери примерно так:
[ATTACH]1159766179.jpg[/ATTACH] То бишь попробуй нажать на выделенную кнопенцию и указать примитив прямо на экране.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Проектировщик, гидротехник Регистрация: 23.03.2006
Киев
Сообщений: 59
|
Цитата:
# (Pound) Matches any numeric digit @ (At) Matches any alphabetic character . (Period) Matches any nonalphanumeric character * (Asterisk) Matches any string and can be used anywhere in the search string ? (Question mark) Matches any single character; for example, ?BC matches ABC, 3BC, and so on ~ (Tilde) Matches anything but the pattern; for example; ~*AB*matches all strings that don't contain AB [ ] Matches any one of the characters enclosed; for example, [AB]C matches AC and BC [~] Matches any character not enclosed; for example, [~AB]C matches XC but not AC [-] Specifies a range for a single character; for example, [A-G]C matches AC, BC, and so on to GC, but not HC ` (Reverse quote) Reads the next character literally; for example, `~AB matches ~AB в твоем случае это 0#@, затем жмешь на кнопку select all и все. Выбирается довольно быстро даже в огромном чертеже - проверил |
|||
![]() |
|
||||
Регистрация: 28.08.2005
Сообщений: 32
|
kpblc, эта кнопка позволяет сузить поиск: не по всему чертежу, а только то, что выделено рамкой. Но в строке value, как были стандартные цвета, так и остались. И чтобы выбрать нужный мне нужно жать select color..., а это долго.
Что то меня никто понять не может. :-( |
|||
![]() |
|
||||
джедай Регистрация: 31.01.2005
Магадан
Сообщений: 460
![]() |
Цитата:
допустим у вас в одном слое окружности, полилинии, красные штриховки и зеленые штриховки - при Select Similar на красных штриховках - выберет все красные штриковки этого слоя... только вот как из Land перетащить не знаю, а Land только для этого ставить - думаю лишнее, вот еслиб кто-нить написать такое смог)) попробуйте еще эту команду Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,425
|
> Демиан: Сорри. Тогда могу предложить лисп
![]() Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
джедай Регистрация: 31.01.2005
Магадан
Сообщений: 460
![]() |
Цитата:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,425
|
> Димас: DXF Reference:
71 Associativity flag (associative = 1; non-associative = 0); for MPolygon, solid-fill flag (has solid fill = 1; lacks solid fill = 0)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 28.08.2005
Сообщений: 32
|
kpblc, на счет лиспа - другое дело, все работает, мне нравится. Спасибо!
Profan, пробовал, конечно и слои красить, но нет... неряшливо как-то. Кроме того пользуюсь лиспом Громова с автокад.ру, который все объекты определенного слоя может "отправить назад". |
|||
![]() |
|
||||
Регистрация: 19.06.2009
Сообщений: 10
|
Добрый день. Я частенько пользуюсь командой qselect для выбора большого числа однотипных элементов. К сожалению в нашем офисе сложилась традиция чертить электрич. схемы на листах, а не в модели. Таким образом если мне нужно поменять какое-нибудбь свойство объекта (например draworder) мне приходится пользоватся командой select по много раз, для каждого листа отдельно. Скажите пожалуйта, можно ли как-нибудь упростить этот процесс? Может быть есть какой-нибудь вариант этой команды, который поможет искать объекты на всех чертежах одновременно.
|
|||
![]() |
|
||||
Инженер Регистрация: 05.05.2008
Москва
Сообщений: 1,074
|
Это можно также сделать, если имеется АКАД 2010-й. В ПЛ нажать ПКМ на вкладке листа и выбрать соответствующую команду.
__________________
Рапик отдай папе кость, Ты ведь не собака. /анекдот АРМЯНСКОГО РАДИО/ Последний раз редактировалось vasilyis, 19.06.2009 в 14:52. |
|||
![]() |
|
||||
Регистрация: 19.06.2009
Сообщений: 10
|
Спасибо за ответ, но проблема в том, что мы чертим электрические схемы сразу на листах (layout), не используя пространство модели. Это конечно, на мой взгляд, очень не удобно, но так сложилось задолго до моего появления в этой фирме. Может быть кто-нибудь знает как одной командой выделить все элементы одного типа на всех листах (элементы начерчены на листах, а не в модели)
PS autocad 2006 |
|||
![]() |
|
||||
Остекляем!!! Алюминим!!! Регистрация: 21.02.2005
Москва
Сообщений: 3,923
![]() |
Цитата:
![]() Цитата:
Какой смысл чертить в layout если при этом не используются его преимущества, лучше уж сразу чертить в модели.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search: |
|||
![]() |
|
||||
Регистрация: 19.06.2009
Сообщений: 10
|
Спасибо всем, кто давал советы. Немного поломав голову, нашел решение своей задачи
![]() Код:
PS прошу помидорками не кидаться, я только пару недель как начал изучать макрокоманды, а лисп не знаю совсем ![]() PPS здесь приведен макрос для изменения порядка прорисовки, но используя этот подход можно вносить разнообразные однотипные изменения для элементов принадлежащих определенному слою. Последний раз редактировалось луки, 20.06.2009 в 17:20. |
|||
![]() |
|
||||
инженер-проектировщик КИПиА Регистрация: 30.08.2008
Минск
Сообщений: 159
|
привет всем! )))
уфф ... прочитал вроде всё... но моего вопроса тут вроде не возникло... про имя блока есть (assoc 2 entget) - это имя блока а есть vla-get-EffectiveName вот у меня две эти хрени не совпадают ... ну второй еще адекватный, а вот assoc 2 пишет *Unnn вот собственно вопрос : какой фильтр для ssget написать чтоб выбрать все блоки, у которых совпадает vla-get-EffectiveName ... и вообще можно ли так сделать набор? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,425
|
Выбрать все блоки и потом последовательно исключать ненужные.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,425
|
Я бы еще попутно удалил бы (принудительно) ss - так, для гарантии. Либо использовал бы ssdel для удаления примитивов из набора.
Да, и вот еще: зачем выполнять выборку по всему файлу? Может, человеку понадобится как-то по-другому? Я бы снял "_X" в ssget
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
инженер-проектировщик КИПиА Регистрация: 30.08.2008
Минск
Сообщений: 159
|
Цитата:
если писать (setq ss (ssdel (ssname ent i) ss)) - это ж будет новый набор без примитива ent, а щетчик то идет тот же.. ? или я не прав? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,425
|
Я говорил про нечто типа
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 24.05.2009
Екатеринбург
Сообщений: 86
|
Выбор примитивов по образцу - команда _SelSim
Команда выбора по образцу появлется в контекстном меню. http://www.caduser.ru/forum/index.ph...8009&PAGEN_1=4 |
|||
![]() |
|
||||
Котло- и реакторостроение Регистрация: 25.02.2010
Барнаул
Сообщений: 824
|
Граждане приветствую.
Можно ли сделать так чтобы QSelect сохранял предыдущий выбор? Т.е. мне нужно выбрать мультивыноски (я использую их для простановки позиций) в диапазоне от 14 до 31. Для этого я нужно проделать относительно долгую операцию. КюСелект – мультивыноска - содержимое-поиск по глобальным символам- вбить значение диапазона. Это нужно проделывать все заново при новом выборе. Допустим мне нужно изменить диапазон. Можно ли как то сделать, чтобы настройки предыдущего выбора сохранялись? Аккад 2011 |
|||
![]() |
|
||||
Регистрация: 25.03.2008
Зелик
Сообщений: 1,602
|
Если нет желания/возможности использовать LISP, то могут пригодиться группы (group)
__________________
* Буква "ё" не используется в тексте исключительно в связи с требованиями ЕСКД. |
|||
![]() |
|
||||
Регистрация: 12.03.2013
Сообщений: 611
|
Нашел зачетную макрос команду для быстрого выбора мультивыносок
^C^C(defun mfunc(/ selset) (if (setq selset (ssget '((0 . "MULTILEADER")))) (sssetfirst selset selset)));(mfunc); Попробовал слелать для текста ^C^C(defun mfunc(/ selset) (if (setq selset (ssget '((0 . "Text")))) (sssetfirst selset selset)));(mfunc); Работает Думаю можно с ней экспериментировать Для Мтекста тож работает ^C^C(defun mfunc(/ selset) (if (setq selset (ssget '((0 . "MText")))) (sssetfirst selset selset)));(mfunc); А вот ишо бы для блоков ее реализовать Не подскажите случаем кто нить как на английском наименование примитива "Вхождение блока". Точнее что высвечивается при выборе блока в свойствах у пользователей английсих версий автокада вот тут (см. вложение) Ну и не плохо бы и для остальных наиболее частых примитивов (Отрезок, полилиния, Круг, и т.п.) Последний раз редактировалось allar8, 07.06.2019 в 14:32. |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
А вот там как раз "Block Reference" будет в панели свойств) Но для фильтрации в коде надо смотреть DXF-коды, группа 0 задает тип примитива.
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,425
|
DXF Reference почитать, к примеру.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 27.12.2011
Сообщений: 1,456
|
Цитата:
(entget (car (entsel))) и указать на интересующий объект, затем в текстовом окне посмотреть, что там в списке под кодом "0". Для блока: Укажите объект: ((-1 . <Entity name: 1ee863c0>) (0 . "INSERT") (5 . "4B96") (330 . <Entity name: 3da2cfd0>) (100 . "AcDbEntity") (67 . 1) (410 . "A3") (8 . "__Форматки") (48 . 100.0) (370 . -1) (100 . "AcDbBlockReference") (2 . "Штамп угловой форма 3") (10 415.3 4.69999999999999 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0)) |
|||
![]() |
|
||||
Регистрация: 10.08.2013
Сообщений: 11,499
|
И для расшифровки что выдает - Русскоязычный DXF.
|
|||
![]() |
|
||||
Регистрация: 27.12.2011
Сообщений: 1,456
|
Цитата:
Код:
Offtop: А разве в автокаде нет выбора по подобию с комбинированием параметров выбора? Последний раз редактировалось Oleg T, 07.06.2019 в 16:28. |
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,181
|
Цитата:
Но: - несмотря на высокую скорость работы, пользоваться крайне неудобно и имеет смысл только на больших чертежах, где "быстрый выбор" вешается; - работает далеко не со всеми свойствами объектов. Для сложных объектов типа мультивыноски "видит" только цвет, слой и тип линий ![]() Команды ._selgrips в Акаде точно нет. Последний раз редактировалось kp+, 08.06.2019 в 14:08. |
|||
![]() |
|
||||
Регистрация: 27.12.2011
Сообщений: 1,456
|
До недавнего времени я пользовался вариантом окончания макроса:
Код:
У меня таким образом были сделаны несколько команд выбора для progeCAD (в котором опция быстрого выбора тоже так себе): - по слою - по типу - с нескольких слоев - по слою и типу - по цвету Offtop: Вообще наиболее развитая команда быстрого выбора по комплексу свойств, конечно, в Брикскад (плюс выбор по подобию указанного, о чем было выше): Последний раз редактировалось Oleg T, 08.06.2019 в 15:46. |
|||
![]() |
|
||||
Регистрация: 12.03.2013
Сообщений: 611
|
Цитата:
----- добавлено через ~1 ч. ----- Цитата:
но не отображает на чертеже что выбраны - это можно понять только через свойства) ----- добавлено через ~7 мин. ----- Цитата:
^C^C_ai_selall (defun mfunc(/ selset) (if (setq selset (ssget '((0 . "Insert")))) (sssetfirst selset selset)));(mfunc);^C^C_select Последний раз редактировалось allar8, 09.08.2019 в 12:43. |
|||
![]() |
|
||||
Регистрация: 12.03.2013
Сообщений: 611
|
Доброго времени суток!
Народ интересует выбор сразу всех текстов ((0 . "TEXT") и 0 . "Mtext")) в одно нажатие Пытался так ^C^C(defun mfunc(/ selset) (if (setq selset (ssget "_X" '((0 . "TEXT") (0 . "Mtext")))) (sssetfirst selset selset)));(mfunc); но не работает. Признаюсь грешен - не силен я в этом) Но вдруг поправить то тут чуть чуть надо. Напишите плиз). В очередной раз склоняю голову перед Вами Заранее благодарен! |
|||
![]() |
|
||||
Регистрация: 21.03.2020
Сообщений: 28
|
Прочел всю ветку по теме и не понял, найдено решение или нет?
"Текст", затем "Содержимое", "=равно" + выделение текста конечно же операция утомительная, пытался делать рекордером операций (автокад 2017) просто влючает "Быстрый выбор" а дальше по кругу(( |
|||
![]() |
|
||||
|
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Быстрый выбор нужного слоя | dim5678 | AutoCAD | 23 | 29.02.2024 23:03 |
Выбор размеров через быстрый выбор (больше/меньше/равно) | koskos | LISP | 3 | 20.10.2016 08:24 |
Быстрый выбор и аннотация | Вовочка | AutoCAD | 24 | 16.07.2014 14:34 |
Быстрый выбор и фильтры слоев | sergeev_2005 | AutoCAD | 1 | 04.11.2011 19:49 |