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

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

Поиск текста на заданном слое

Ответ
Поиск в этой теме
Непрочитано 29.07.2021, 09:01 #1
Поиск текста на заданном слое
Sege
 
Санкт-Петебург
Регистрация: 05.07.2007
Сообщений: 107

Как можно найти текст на определенном слое? Стандартный поиск/замена текста производит это по всем слоям.
Вариант отключить ненужные слои не всегда представляется возможным
Просмотров: 2918
 
Непрочитано 29.07.2021, 09:03
#2
Кулик Алексей aka kpblc
Moderator

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


Если искать именно текст, то _.qselect можно попробовать. Там опций много, может, чего и найдется полезного
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 29.07.2021, 09:10
#3
Sege


 
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 107


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Если искать именно текст, то _.qselect можно попробовать. Там опций много, может, чего и найдется полезного
Не всегда ясно каким примитивом может быть требуемый для поиска текст: MTEXT или просто TEXT. В команде _.qselect нужно указывать тип примитива
Sege вне форума  
 
Непрочитано 29.07.2021, 09:21
#4
kp+

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


Цитата:
Сообщение от Sege Посмотреть сообщение
Как можно найти текст на определенном слое? Стандартный поиск/замена текста производит это по всем слоям.
Вариант отключить ненужные слои не всегда представляется возможным
Если гора не идет к Магомету, то Магомет идет к горе.
Можно с помощью qselect или 'filter выбрать все объекты на нужных слоях и уже по ним запустить поиск текста.
kp+ вне форума  
 
Автор темы   Непрочитано 29.07.2021, 09:29
#5
Sege


 
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 107


Цитата:
Сообщение от kp+ Посмотреть сообщение
Если гора не идет к Магомету, то Магомет идет к горе.
Можно с помощью qselect или 'filter выбрать все объекты на нужных слоях и уже по ним запустить поиск текста.
Да, как вариант. Однако требует 2 итерации. Да и qselect надо указывать конкретный тип примитива: текст или мтекст. В моей ситуации требуемое значение текста может быть как text, так и mtext

Хочется именно функционал стандартной функции FIND, но с добавлением в этом же диалоге режима выбора слоя.

Понял, стандартными средствами скорее всего не получится.
Sege вне форума  
 
Непрочитано 29.07.2021, 11:20
#6
LenidSN


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


"Понял, стандартными средствами скорее всего не получится"

Команда FILTER именно "стандартное средство"
LenidSN вне форума  
 
Непрочитано 29.07.2021, 11:22
1 | #7
Автон

СЦБ
 
Регистрация: 09.03.2006
Иркутск
Сообщений: 78


Можно лиспом. Взял отсюда https://www.caduser.ru/forum/topic21233.html
Код:
[Выделить все]
 (defun c:slayer (/ obj_in_lay lay selayer)
  (setq obj_in_lay (entget(car(entsel "\n Определение слоя по объекту:"))))
  (setq lay (cdr (assoc 8 obj_in_lay)))
  (setq selayer (ssget "_x" (list (cons 8 lay))))
  (sssetfirst selayer selayer)
  (command "_find")
);defun
Автон вне форума  
 
Непрочитано 29.07.2021, 11:49
1 | #8
Сергей812


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


Набросал по быстрому, чтобы совсем лисп не забывать)
Код:
[Выделить все]
 
(defun c:QST ( / lSP lLayer lLOs)
  (setq lSP (entsel "\nSelect any object on need layer"))
  (if lSP
    (progn
	(sssetfirst nil nil) 
      	(setq lLayer (cdr (assoc 8 (entget (car lSP)))))
      	(setq lLOs (ssget "_X" (list (cons 0 "*TEXT")(cons 8 lLayer))))
	(if lLOs
	  (progn
            (princ (strcat "\nCount found texts = " (itoa (sslength lLOs))))
	    (sssetfirst nil lLOs) 
            (command "_find")
	  )
	  (princ "\nNo text found!")
	)
    )
    (princ "\nThe object is not selected!")
  )
  (princ)
)
сообщения на английском - как как редактор лиспа не "пролечен" по русской кодировке и лень это делать)

Последний раз редактировалось Сергей812, 29.07.2021 в 11:55. Причина: Добавил вызов диалога поиска
Сергей812 вне форума  
 
Автор темы   Непрочитано 29.07.2021, 13:13
#9
Sege


 
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 107


Всем спасибо! Лиспом получилось изящно и то что нужно!
Sege вне форума  
 
Непрочитано 31.07.2021, 11:28
#10
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Код:
[Выделить все]
 07      (setq lLOs (ssget "_X" (list (cons 0 "*TEXT")(cons 8 lLayer))))
Сергей812, может, стоит в фильтр ssget добавить мультивыноски с таблицами?
skkkk вне форума  
 
Непрочитано 31.07.2021, 11:48
#11
Сергей812


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
стоит в фильтр ssget добавить мультивыноски с таблицами?
Цитата:
Сообщение от Sege Посмотреть сообщение
Не всегда ясно каким примитивом может быть требуемый для поиска текст: MTEXT или просто TEXT
не входит в исходные данные)
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Поиск текста на заданном слое

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск текста с последующим выделением jonik007 AutoCAD 5 21.11.2019 09:56
Групповой поиск и замена текста Torino Программирование 22 05.03.2016 23:00
Вопрос. Способы написания текста в AutoCADe. макс геодезист AutoCAD 16 14.07.2011 21:36
Поиск и замена текста на чертежах Autodesk Inventor Бриг Прочее ПО от Autodesk 4 21.01.2009 17:05
Поиск всех примитивов по цвету на одном слое GGarry Программирование 11 18.12.2008 00:11