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

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

Макрос для поиска большого количества слов и фраз

Ответ
Поиск в этой теме
Непрочитано 05.02.2016, 22:41 #1
Макрос для поиска большого количества слов и фраз
HYPERBALLOiD
 
Регистрация: 16.03.2013
Сообщений: 23

Всех приветствую.
Облазил иннет, не нашел решения.
Нужен макрос для поиска текста, но не просто текста, а чтобы он искал не одно слово или фразу в одной строке, а чтобы искал каждое слово или фразу по отдельности, которые внесли в макрос, к примеру: тип., (масштаб 1:15), балка, мин., разрез и т.п. и он их нашел все.
Обычным способом это делается так: Вызываем "Контекстное меню", в нем нажимаем "Быстрый выбор",после в типе объектов выбираем "Текст", затем "Содержимое" и уже в нем пишем текст который мы ищем, после поиска проделываем эту-же операцию и в нем пишем другой текст и т.д. (с условием, что стояла галочка "добавить в текущий набор"). Операция простая, но процесс муторный.
Кто сталкивался с подобным ?
Просмотров: 6408
 
Непрочитано 06.02.2016, 01:01
#2
Сергей812


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


написать свой вариант поиска тоже процесс не быстрый.. если нужно обрабатывать атрибуты блоков, гиперссылки и т.п. - как это делает команда _find
Сергей812 вне форума  
 
Автор темы   Непрочитано 06.02.2016, 02:21
#3
HYPERBALLOiD


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
написать свой вариант поиска тоже процесс не быстрый.. если нужно обрабатывать атрибуты блоков, гиперссылки и т.п. - как это делает команда _find
_find она просто ищет и дает возможность заменить.
Мне нужно чтобы он нашел и просто выбрал определенный текст(аналог одного клика по слову), а затем к примеру этот весь текст перенести в другой слой.
Меню "Быстрый выбор", через который это операция делается вручную, вызывается командой "_qselect", но вот как дальше через макрос выбрать "свойство объекта" и "тип объекта" я не нашел способ.
HYPERBALLOiD вне форума  
 
Непрочитано 06.02.2016, 10:07
#4
Сергей812


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


не все команды автокада имеют консольные варианты. Хотя бы написали - на каком языке макросы то?
Сергей812 вне форума  
 
Непрочитано 06.02.2016, 11:41
#5
kp+

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


Цитата:
Сообщение от HYPERBALLOiD Посмотреть сообщение
Меню "Быстрый выбор", через который это операция делается вручную, вызывается командой "_qselect", но вот как дальше через макрос выбрать "свойство объекта" и "тип объекта" я не нашел способ.
Кажется, Вам надо использовать команду _filter. Там можно задавать достаточно сложные условия выбора, сохранять ранее созданные "фильтры" для повторного использования и т.д. Хелп в помощь, если что.
kp+ вне форума  
 
Непрочитано 06.02.2016, 12:24
#6
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Цитата:
Сообщение от HYPERBALLOiD Посмотреть сообщение
_find она просто ищет и дает возможность заменить.
Мне нужно чтобы он нашел и просто выбрал определенный текст(аналог одного клика по слову), а затем к примеру этот весь текст перенести в другой слой.
Меню "Быстрый выбор", через который это операция делается вручную, вызывается командой "_qselect", но вот как дальше через макрос выбрать "свойство объекта" и "тип объекта" я не нашел способ.
Для указанных целей достаточно функционала команды _find.
Первая создает набор из объектов, выделенных юзером в "результатах", вторая - из всех найденных. А дальше - делай с ними что хошь, на слои переноси, удаляй, производи замену текста и т.д.
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 674
Размер:	110.8 Кб
ID:	164839  
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Автор темы   Непрочитано 06.02.2016, 16:19
#7
HYPERBALLOiD


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


Цитата:
Сообщение от AlexV Посмотреть сообщение
Для указанных целей достаточно функционала команды _find.
Первая создает набор из объектов, выделенных юзером в "результатах", вторая - из всех найденных. А дальше - делай с ними что хошь, на слои переноси, удаляй, производи замену текста и т.д.
Да, все так, но найдя фразу "План на" и затем ищешь "Разрез 1-1", выделенный до этого "План на" сбрасывается и у тебя только выбран "Разрез 1-1".
Команда _qselect позволяет, также искать, но в ней заложена функция "Добавить в текущий набор" и "Добавить в новый набор", которые позволяет, с каждым новым поиском сохраняет все предыдущие результаты выделенные.
Т.е. найдя фразу "План на" и затем ищем "Разрез 1-1", у нас выделенные оба варианта.
HYPERBALLOiD вне форума  
 
Непрочитано 06.02.2016, 17:24
#8
Сергей812


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


так перебираете примитивы модели, если найдено искомое слово из списка - заносите в список найденных.. ну и форма вывода результатов перебора
Сергей812 вне форума  
 
Автор темы   Непрочитано 06.02.2016, 17:52
#9
HYPERBALLOiD


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
так перебираете примитивы модели, если найдено искомое слово из списка - заносите в список найденных.. ну и форма вывода результатов перебора
не совсем пронял, что вы имеете ввиду, можете привести пример ?
HYPERBALLOiD вне форума  
 
Непрочитано 06.02.2016, 18:03
#10
Сергей812


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


1. Разбираете строку исходную по искомым словам (по заданному разделителю)
2. Проходите по нужному пространству, перебирая входящие в него примитивы (или сделать выборку по фильтру).
3. В каждый необходимый по типу примитив заходите и сравниваете список искомых строк со значениями мультитекста (не забудьте про форматирование), со значениями атрибутов и т.д. Если найден - заносите примитив в список (или его хэндл, например).
4. Создаете форму и на нее выводите результаты поиска (если нужно) либо запрашиваете у пользователя - какое действие он хочет совершить с набором.
а уж на чем вы там писать будете - если на Net/ARX, то вообще будет почти мгновенно работать, на лиспе/vba/activex - достаточно долго при больших чертежах
Сергей812 вне форума  
 
Непрочитано 07.02.2016, 12:59
#11
kp+

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


Цитата:
Сообщение от HYPERBALLOiD Посмотреть сообщение
Да, все так, но найдя фразу "План на" и затем ищешь "Разрез 1-1", выделенный до этого "План на" сбрасывается и у тебя только выбран "Разрез 1-1".
Команда _qselect позволяет, также искать, но в ней заложена функция "Добавить в текущий набор" и "Добавить в новый набор", которые позволяет, с каждым новым поиском сохраняет все предыдущие результаты выделенные.
Т.е. найдя фразу "План на" и затем ищем "Разрез 1-1", у нас выделенные оба варианта.
Кажется, без примера в формате dwg и поллитры не разобраться
kp+ вне форума  
 
Автор темы   Непрочитано 07.02.2016, 16:29
#12
HYPERBALLOiD


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
1. Разбираете строку исходную по искомым словам (по заданному разделителю)
2. Проходите по нужному пространству, перебирая входящие в него примитивы (или сделать выборку по фильтру).
3. В каждый необходимый по типу примитив заходите и сравниваете список искомых строк со значениями мультитекста (не забудьте про форматирование), со значениями атрибутов и т.д. Если найден - заносите примитив в список (или его хэндл, например).
4. Создаете форму и на нее выводите результаты поиска (если нужно) либо запрашиваете у пользователя - какое действие он хочет совершить с набором.
а уж на чем вы там писать будете - если на Net/ARX, то вообще будет почти мгновенно работать, на лиспе/vba/activex - достаточно долго при больших чертежах
Я видимо еще нуб в этом вопросе, я не понимаю, о чем вы говорите Если можете, более простым языком
Заранее спасибо


Цитата:
Сообщение от kp+ Посмотреть сообщение
Кажется, без примера в формате dwg и поллитры не разобраться
Сейчас приведу пример с иллюстрациями : )
При использовании команды _find мы ищем "Разрез...",

а затем только повторно используя команду _find ищем "масштаб..."
но найдя "масштаб" мы теряем уже найденный до этого "Разрез...".
Получается, что найдя "Разрез..." мы должны закончить с ним работу (к примеру перенести его в другой слой) и затем приступать к поиску "масштаб...".

Команда _qselect позволяет, также искать, но в ней заложена функция "Добавить в текущий набор" и "Добавить в новый набор", которые позволяет, найти "Разрез", а затем при повторном использовании команды, ищем "масштаб...". И у нас уже выбрано два: "Разрез" и "масштаб...".
Так вот задача, сделать макрос, в который можно будет вбить все эти слова и фразы (слова богу из-за ГОСТов они одинаковые на всех чертежах), чтобы при одном нажатии сразу находило и выбирало все одним махом.
Миниатюры
Нажмите на изображение для увеличения
Название: 2.jpg
Просмотров: 27
Размер:	282.6 Кб
ID:	164864  Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 12
Размер:	281.8 Кб
ID:	164865  Нажмите на изображение для увеличения
Название: 3.jpg
Просмотров: 9
Размер:	284.6 Кб
ID:	164866  

Последний раз редактировалось HYPERBALLOiD, 07.02.2016 в 17:25.
HYPERBALLOiD вне форума  
 
Непрочитано 07.02.2016, 16:37
#13
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от HYPERBALLOiD Посмотреть сообщение
пытался вставить скриншоты, не выходит, кто может напишите как.
Как добавить вложение в сообщение?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 07.02.2016, 17:26
#14
HYPERBALLOiD


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Как добавить вложение в сообщение?
Спасибо за помощь.
HYPERBALLOiD вне форума  
 
Непрочитано 07.02.2016, 17:29
#15
kp+

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


Цитата:
Сообщение от HYPERBALLOiD Посмотреть сообщение
Сейчас приведу пример с иллюстрациями : )
Значит все-таки _filter. См. пошаговые иллюстрации
Миниатюры
Нажмите на изображение для увеличения
Название: фильтр.png
Просмотров: 60
Размер:	20.8 Кб
ID:	164867  Нажмите на изображение для увеличения
Название: фильтр-применяется.png
Просмотров: 52
Размер:	126.2 Кб
ID:	164868  Нажмите на изображение для увеличения
Название: фильтр-применен.png
Просмотров: 42
Размер:	127.8 Кб
ID:	164869  
kp+ вне форума  
 
Автор темы   Непрочитано 07.02.2016, 18:43
#16
HYPERBALLOiD


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


Цитата:
Сообщение от kp+ Посмотреть сообщение
Значит все-таки _filter. См. пошаговые иллюстрации
Да, похоже вы нашли выход : )
Именно такого результата я и добивался : )
Большое Вам спасибо.
Только подскажите зачем требуется в этом методе ставить "начало" и "конец" (без них я побывал не работает, но там есть разные варианты "начало" и "конец")

Последний раз редактировалось HYPERBALLOiD, 07.02.2016 в 18:58.
HYPERBALLOiD вне форума  
 
Непрочитано 07.02.2016, 18:56
#17
kp+

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


Цитата:
Сообщение от HYPERBALLOiD Посмотреть сообщение
при применении ничего не происходит (область на чертеже не выделяется)
Что происходит после нажатия кнопки "применить"? Правильно, запрос "выберите объекты". Т.е. действия как при обычном выборе объектов - хоть прямоугольная область, хоть многоугольник, хоть все что есть на чертеже (_all). После завершения выбора объектов результат будет отфильтрован - в нем останется только то, что соответствует фильтру.
Кстати, команду _filter можно вызывать и "прозрачно" - 'filter, т.е. во время выбора объектов для какой-либо другой команды.

Последний раз редактировалось kp+, 07.02.2016 в 19:02.
kp+ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Макрос для поиска большого количества слов и фраз

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение большого количества отрезков Мансур Программирование 25 07.07.2014 18:35
Печать большого количества чертежей Александр79 AutoCAD 26 20.04.2013 10:59
Как приручить радиочастоты, или проблемы связанные с обменом большого количества данных по сети WI-FI??? Pavel Samofalov Разное 20 15.08.2011 15:16
Перевод слов и фраз из Еврокодов и других "Мануалов" на русский? UnAtom Разное 14 09.04.2009 23:11