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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Небыстрый "Быстрый выбор" !

Небыстрый "Быстрый выбор" !

Ответ
Поиск в этой теме
Непрочитано 06.06.2004, 10:27
Небыстрый "Быстрый выбор" !
Psip!
 
Сообщений: n/a

Проблема:
на большом чертеже нужно найти некоторые объекты, к примеру текст "02в", "03в", "02d" ну и так далее. Пользуюсь для этого "Быстрым выбором", а именно Сервис\Быстрый выбот\затем из падающего меню нахожу "Текст", затем "Содержимое", "=равно", и только затем пишу нужный мне текст!
Потом повторяю все операции снова, потом снова, потом снова, и как-то хочется убыстрить выбор!!! Хотя бы до возможности сохранения в менюшке предыдущего запроса. А в идеале - до написания нескольких макросов для поиска нескольких разных объектов.
Гуру, отзовитесь! Need help!
Просмотров: 14788
 
Непрочитано 07.06.2019, 14:40
#61
allar8


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
DXF код 0 - вставка блока "INSERT"
Если по моему вопросу, то я не об этом спрашивал, но все равно спасибо за отзывчивость
Или я Вас не понял

Последний раз редактировалось allar8, 07.06.2019 в 14:50.
allar8 на форуме  
 
Непрочитано 07.06.2019, 14:58
1 | #62
Сергей812


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


Аутодеск вроде не страдает попытками придумать 10 названий для одно и того же - поэтому либо "Block Reference", либо "Insert". Скорее всего первое, как более грамотное. Так же и со всем остальным - "Line", "Circle".
Сергей812 вне форума  
 
Непрочитано 07.06.2019, 15:03
#63
allar8


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
либо "Insert".
Заработало для блоков, Спасибо!
^C^C(defun mfunc(/ selset) (if (setq selset (ssget '((0 . "Insert")))) (sssetfirst selset selset)));(mfunc);
allar8 на форуме  
 
Непрочитано 07.06.2019, 15:15
1 | #64
Сергей812


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


Цитата:
Сообщение от allar8 Посмотреть сообщение
Не подскажите случаем кто нить как на английском наименование примитива "Вхождение блока". Точнее что высвечивается при выборе блока в свойствах
А вот там как раз "Block Reference" будет в панели свойств) Но для фильтрации в коде надо смотреть DXF-коды, группа 0 задает тип примитива.
Сергей812 вне форума  
 
Непрочитано 07.06.2019, 15:19
#65
allar8


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
коде надо смотреть DXF-коды, группа 0
Спасибо!. Просто ради интереса как это посмотреть? Открыть в блокноте файл DXF?
allar8 на форуме  
 
Непрочитано 07.06.2019, 15:26
1 | #66
Кулик Алексей aka kpblc
Moderator

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


DXF Reference почитать, к примеру.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 07.06.2019, 15:30
#67
allar8


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
DXF Reference почитать, к примеру.
Спасибо!
allar8 на форуме  
 
Непрочитано 07.06.2019, 15:31
1 | #68
Сергей812


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


А на русском - забиваете в поисковик "dxf коды AutoCAD" и там выйдите на официальную русскоязычную справку.
Сергей812 вне форума  
 
Непрочитано 07.06.2019, 15:32
#69
allar8


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
А на русском - забиваете в поисковик "dxf коды AutoCAD" и там выйдите на официальную русскоязычную справку.
Спасибо!
allar8 на форуме  
 
Непрочитано 07.06.2019, 15:36
#70
Oleg T


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


Цитата:
Сообщение от allar8 Посмотреть сообщение
Спасибо!. Просто ради интереса как это посмотреть? Открыть в блокноте файл DXF?
Проще всего набить в командной строке выражение
(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))
Oleg T вне форума  
 
Непрочитано 07.06.2019, 15:42
#71
allar8


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


Цитата:
Сообщение от Oleg T Посмотреть сообщение
(entget (car (entsel)))
Спасибо!
Супер
allar8 на форуме  
 
Непрочитано 07.06.2019, 15:54
1 | #72
Сергей812


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


И для расшифровки что выдает - Русскоязычный DXF.
Сергей812 вне форума  
 
Непрочитано 07.06.2019, 16:10
#73
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,007


Цитата:
Сообщение от Oleg T Посмотреть сообщение
Проще всего набить в командной строке выражение
(entget (car (entsel)))
Ну так себе проще... ArxDbg вот это действительно проще, так сказать маст хев для разработке под автокад =о))
__________________
_бложиг
Boxa вне форума  
 
Непрочитано 07.06.2019, 16:17
#74
Oleg T


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


Цитата:
Сообщение от allar8 Посмотреть сообщение
Нашел зачетную макрос команду для быстрого выбора мультивыносок
^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);
Работает
Думаю можно с ней экспериментировать
Давно написано, в Автокаде не проверял:

Код:
[Выделить все]
 ;Выбор объектов по типу указанного...
;------------------------
(defun c:my_sel_tip()
	(setq pr_0_ (cdr (assoc '0 (entget (car (entsel "\nУкажите исходный объект"))))))
	(setq nab (ssget)); указание области выбора
	(setq kol (sslength nab))
	(setq nab1(ssadd))
	(setq n -1)
		(repeat kol
		(setq n (+ n 1))
		(setq pr_n (ssname nab n))
		(setq pr_n_ (cdr (assoc '0 (entget pr_n))))
			(if
				(= pr_n_ pr_0_)
				(ssadd pr_n nab1)
			)
		)
	(command "._selgrips" nab1 "")
	(setq n (sslength nab1))
	(prompt "Выбрано всего ")
	(PRIN1 n)
	(prompt "   объектов типа ")
	(prin1 pr_0)
	(princ)
)
Можно написать для выбора по слою, цвету, комбинациям свойств и т.д. и т.п.....
Offtop: А разве в автокаде нет выбора по подобию с комбинированием параметров выбора?
Миниатюры
Нажмите на изображение для увеличения
Название: Сохраненное изображение 2019-6-7_16-11-36.713.jpg
Просмотров: 17
Размер:	22.7 Кб
ID:	215040  

Последний раз редактировалось Oleg T, 07.06.2019 в 16:28.
Oleg T вне форума  
 
Непрочитано 08.06.2019, 13:52
#75
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Днепройт
Сообщений: 3,941


Цитата:
Сообщение от Oleg T Посмотреть сообщение
Offtop: А разве в автокаде нет выбора по подобию с комбинированием параметров выбора?
Есть опция 'filter для стандартных команд выбора, которая худо-бедно реализует этот вариант и о которой упоминали в одном из первых постов темы. В ее окне можно нажать кнопку "добавить объект" и взять с него нужные свойства для создания фильтра. Можно создавать довольно хитромудрые фильтры с операциями "И/ИЛИ/НЕ" и сохранить именованную комбинацию фильтров для дальнейшего использования. Такое впечатление, что функционал этой опции полностью соответствуют функции ssget в части фильтрации выбранного. Работает многократно быстрее "быстрого выбора".
Но:
- несмотря на высокую скорость работы, пользоваться крайне неудобно и имеет смысл только на больших чертежах, где "быстрый выбор" вешается;
- работает далеко не со всеми свойствами объектов. Для сложных объектов типа мультивыноски "видит" только цвет, слой и тип линий Возможно, все из-за того, что самые интересные их свойства не вынесены в "главные" dxf-коды, а спрятаны под многими "обертками" из словарей объекта.

Цитата:
Сообщение от Oleg T Посмотреть сообщение
Давно написано, в Автокаде не проверял:
Команды ._selgrips в Акаде точно нет.
__________________
Да здравствует фикус! (С)

Последний раз редактировалось kp+, 08.06.2019 в 14:08.
kp+ вне форума  
 
Непрочитано 08.06.2019, 15:33
#76
Oleg T


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


Цитата:
Сообщение от kp+ Посмотреть сообщение
Команды ._selgrips в Акаде точно нет.
До недавнего времени я пользовался вариантом окончания макроса:

Код:
[Выделить все]
 (command "._select" nab1 "")
(prompt "Выбрано ")
(prin1 n)
(prompt " объектов ")
(prompt ". Выберите необходимую команду и используйте Предыдущий набор.")
Это в автокаде наверняка сработает.
У меня таким образом были сделаны несколько команд выбора для progeCAD (в котором опция быстрого выбора тоже так себе):
- по слою
- по типу
- с нескольких слоев
- по слою и типу
- по цвету

Offtop: Вообще наиболее развитая команда быстрого выбора по комплексу свойств, конечно, в Брикскад (плюс выбор по подобию указанного, о чем было выше):
Миниатюры
Нажмите на изображение для увеличения
Название: Сохраненное изображение 2019-6-8_15-42-56.622.jpg
Просмотров: 9
Размер:	91.8 Кб
ID:	215064  

Последний раз редактировалось Oleg T, 08.06.2019 в 15:46.
Oleg T вне форума  
 
Непрочитано 09.08.2019, 10:24
#77
allar8


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


Цитата:
Сообщение от allar8 Посмотреть сообщение
^C^C(defun mfunc(/ selset) (if (setq selset (ssget '((0 . "Insert")))) (sssetfirst selset selset)));(mfunc);
Подскажите плиз, можно ли данную макрос команду модернизировать, чтоб без выбора рамкой, т.е. нажал на кнопку и все блоки на чертеже в пространстве модели выбрались без диалогового вопроса "выберете объекты"?

----- добавлено через ~1 ч. -----
Цитата:
Сообщение от allar8 Посмотреть сообщение
Подскажите плиз, можно ли данную макрос команду модернизировать, чтоб без выбора рамкой, т.е. нажал на кнопку и все блоки на чертеже в пространстве модели выбрались без диалогового вопроса "выберете объекты"?
Вот так ^C^C_ai_selall (defun mfunc(/ selset) (if (setq selset (ssget '((0 . "Insert")))) (sssetfirst selset selset)));(mfunc); вроде работает
но не отображает на чертеже что выбраны - это можно понять только через свойства)

----- добавлено через ~7 мин. -----
Цитата:
Сообщение от allar8 Посмотреть сообщение
Вот так ^C^C_ai_selall (defun mfunc(/ selset) (if (setq selset (ssget '((0 . "Insert")))) (sssetfirst selset selset)));(mfunc); вроде работает
но не отображает на чертеже что выбраны - это можно понять только через свойства)
Решено
^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.
allar8 на форуме  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Небыстрый "Быстрый выбор" !

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

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