Мгновенное выделение всех элементов рисования (отрезки, дуги, полилинии) слоев, которые находятся внутри групрового фильтра слоев
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Мгновенное выделение всех элементов рисования (отрезки, дуги, полилинии) слоев, которые находятся внутри групрового фильтра слоев

Мгновенное выделение всех элементов рисования (отрезки, дуги, полилинии) слоев, которые находятся внутри групрового фильтра слоев

Ответ
Поиск в этой теме
Непрочитано 20.12.2024, 14:49 #1
Мгновенное выделение всех элементов рисования (отрезки, дуги, полилинии) слоев, которые находятся внутри групрового фильтра слоев
San-Miguel
 
Регистрация: 06.08.2019
Сообщений: 56

В чертеже много слоев. Создана группа слоев (групповой фильтр) в свойствах слоев. В эту группу перенесены особо важные слои.
В процессе работы хотелось бы мгновенно выделять все элементы рисования (отрезки, дуги, полилинии) всех слоев внутри этого группового фильтра (чтобы вывести все на передний план просмотра или скопировать в новый файл и отправить заказчику). При этом чтобы не менять порядок слоев в части заморожен/разморожен (потом обратно настраивать долго и муторно). Подчеркну, что лисп SelSim не позволяет выбрать все элементы рисования по слою (чтобы сразу и полилинии, и дуги, и отрезки и пр. выделяло)
Просмотров: 992
 
Непрочитано 20.12.2024, 20:36
#2
Сергей812


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


Цитата:
Сообщение от San-Miguel Посмотреть сообщение
мгновенно выделять все элементы
Цитата:
Сообщение от San-Miguel Посмотреть сообщение
чтобы не менять порядок слоев в части заморожен/разморожен
между собой это плохо сочетается...
Сергей812 вне форума  
 
Непрочитано 21.12.2024, 02:34
#3
bernata


 
Регистрация: 22.09.2005
здесь могла быть ваша реклама
Сообщений: 1,296


_FILTER или _QSELECT потом CTFL+SHIFT+C и CTFL+SHIFT+V в новый файл

Таким образом за несколько действий (отрезки, дуги, полилинии) создаётся новый файл.
Миниатюры
Нажмите на изображение для увеличения
Название: Screenshot_1.jpg
Просмотров: 65
Размер:	65.1 Кб
ID:	265998  

Последний раз редактировалось bernata, 21.12.2024 в 02:40.
bernata вне форума  
 
Непрочитано 21.12.2024, 13:11
| 1 #4
Сергей812


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


Цитата:
Сообщение от bernata Посмотреть сообщение
Таким образом за несколько действий (отрезки, дуги, полилинии) создаётся новый файл.
ТС явно не это имел в виду)
Цитата:
Сообщение от San-Miguel Посмотреть сообщение
хотелось бы мгновенно выделять все элементы рисования (отрезки, дуги, полилинии) всех слоев внутри этого группового фильтра
Цитата:
Сообщение от San-Miguel Посмотреть сообщение
Подчеркну, что лисп SelSim не позволяет выбрать все элементы рисования по слою (чтобы сразу и полилинии, и дуги, и отрезки и пр. выделяло)
т.е. если мгновенный - это:
1. Получить список групповых фильтров чертежа и предложить пользователю выбрать нужный (возможно, потом по мере роста аппетита захочется и несколько фильтров сразу выбирать чекбоксами);
2. Получить набор слоев, входящий в фильтр (если фильтров несколько - то отсеять повторные вхождения слоев);
3. Пройтись по полученному списку слоев и разблокировать/показать/разморозить слои при необходимости (хотя это не бьется с хотелками ТС - чтобы настройки слоев оставались как есть);
4. Получить в текущем пространстве чертежа все примитивы, которые располагаются на полученном ранее списке слоев и выделить их.
Сергей812 вне форума  
 
Непрочитано 21.12.2024, 19:12
#5
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


В Map 3D для этого есть Запросы
trir вне форума  
 
Автор темы   Непрочитано 09.01.2025, 16:19
#6
San-Miguel


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


Цитата:
Сообщение от trir Посмотреть сообщение
В Map 3D для этого есть Запросы
Это приложение к Автокаду? Как его установить?
San-Miguel вне форума  
 
Непрочитано 10.01.2025, 07:53
#7
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Цитата:
Как его установить?
при установке AutoCAD выбрать
trir вне форума  
 
Непрочитано 10.01.2025, 11:41
1 | #8
name02


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


Можно попробовать такой лисп - он создает набор из объектов группового фильтра (имя фильтра прописано в программе). В объект попадают все объекты находящиеся на слоях группового фильтра - слои могут быть отключенными, замороженными или заблокированными - все объекты будут помещены в набор.
Объекты (кроме тех, что на заблокированных слоях) можно изменять и удалять.
Порядок прорисовки меняется для объектов на любых слоях.
Работу с групповыми фильтрами внутри других групповых фильтров не проверял (скорее всего не работает)

Код:
[Выделить все]
 (defun c:TST (/ lg_name _grouplayerfilterswlayernames lo_name b filter_list ss)

  (setq lg_name "Групповой фильтр1")

  (defun _grouplayerfilterswlayernames
                                       nil
    ((lambda (foo) (foo (entget (cdr (assoc 330 (entget (tblobjname "layer" "0")))))))
      (lambda (enx / dic i itm rtn)
        (and (setq dic (cdr (assoc 360 (member '(102 . "{ACAD_XDICTIONARY") enx))))
             (setq dic (cdr (assoc -1 (dictsearch dic "aclydictionary"))))
             (while (setq itm (dictnext dic (not itm)))
               (if (= "AcLyLayerGroup" (cdr (assoc 1 itm)))
                 (setq i   (assoc 300 itm)
                       rtn (cons (list (cdr i)
                                       ;; RJP » 2019-05-21 added list of layer names associated with filter
                                       (mapcar '(lambda (y) (cdr (assoc 2 (entget (cdr y)))))
                                               (vl-remove-if '(lambda (x) (/= 330 (car x))) (member i itm))
                                       ) ;_ end mapcar
                                 ) ;_ end list
                                 rtn
                           ) ;_ end cons
                 ) ;_ end setq
               ) ;_ end if
             ) ;_ end while
        ) ;_ end and
        (reverse rtn)
      ) ;_ end lambda
    )
  ) ;_ end defun

  (setq lo_name (getvar 'CTAB))

  (setq b (assoc lg_name (_grouplayerfilterswlayernames)))

  (cond
    ((null (car b))
     (princ
       (strcat "\nГруппового фильтра слоев с именем \"" (strcase lg_name) "\" в чертеже нет!")
     ) ;_ end princ
    )
    (T
     (setq filter_list
            (append
              '((-4 . "<AND"))
              ;; объекты на текущем листе
              (list (cons 410 lo_name))
              ;; объекты на слоях группового фильтра
              '((-4 . "<OR"))
              (mapcar '(lambda (x)
                         (cons 8 x)
                       ) ;_ end lambda
                      (vl-remove nil (cadr b))
              ) ;_ end mapcar
              '((-4 . "OR>"))
              '((-4 . "<NOT") (-4 . "<AND") (0 . "VIEWPORT") (67 . 1) (-4 . "AND>") (-4 . "NOT>"))
              '((-4 . "AND>"))
            ) ;_ end list
     ) ;_ end setq

     (setq ss (ssget "_X" filter_list))

     (sssetfirst nil ss)
    )
  ) ;_ end cond

  (princ)
) ;_ end defun
Файл: TST.lsp
name02 вне форума  
 
Непрочитано 10.01.2025, 15:40
#9
Linkshunter

проектирование а/дорог
 
Регистрация: 03.07.2013
СПб
Сообщений: 388


Цитата:
Сообщение от name02 Посмотреть сообщение
Файл: TST.lsp
Попробовал, на 2015г не видит фильтры слоев. Создал новый фильтр с именем ГРУППОВОЙ ФИЛЬТР1, попробовал в код добавить свои - не видит

Команда: TST
Группового фильтра слоев с именем "ГРУППОВОЙ ФИЛЬТР1" в чертеже нет!

----- добавлено через ~3 мин. -----
Цитата:
Сообщение от San-Miguel Посмотреть сообщение
При этом чтобы не менять порядок слоев в части заморожен/разморожен (потом обратно настраивать долго и муторно)
сохраните текущую(или любую другую) конфигурацию слоев а потом восстанавливайте ее там где надо.
Linkshunter вне форума  
 
Непрочитано 13.01.2025, 07:52
1 | #10
name02


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


Цитата:
Сообщение от Linkshunter Посмотреть сообщение
Попробовал, на 2015г не видит фильтры слоев. Создал новый фильтр с именем ГРУППОВОЙ ФИЛЬТР1, попробовал в код добавить свои - не видит
Проверил у себя в Autocad 2022 - работает.
Ты точно работаешь с групповыми фильтрами, а не с фильтрами по свойствам? Программа работает только с групповыми фильтрами!
Нажмите на изображение для увеличения
Название: Рисунок1.png
Просмотров: 30
Размер:	16.3 Кб
ID:	266258
name02 вне форума  
 
Непрочитано 15.01.2025, 17:11
#11
Linkshunter

проектирование а/дорог
 
Регистрация: 03.07.2013
СПб
Сообщений: 388


Цитата:
Сообщение от name02 Посмотреть сообщение
Проверил у себя в Autocad 2022 - работает.
Ты точно работаешь с групповыми фильтрами, а не с фильтрами по свойствам? Программа работает только с групповыми фильтрами!
Вложение 266258
да, спасибо, работает.
Linkshunter вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Мгновенное выделение всех элементов рисования (отрезки, дуги, полилинии) слоев, которые находятся внутри групрового фильтра слоев

Реклама i


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для выделение всех размеров в чертеже. Labudico Программирование 10 20.06.2023 16:40
LISP. Простановка площадей внутри полилинии. Klo LISP 26 14.12.2018 17:43
Местная устойчивость. Как в SCAD просмотреть отчет о коэф-тах потери местной устойчивости всех элементов? Sokrat SCAD 2 15.10.2015 12:08
Выделение и удаление обьектов внутри замкнутой полилинии. Как? DTwice AutoCAD 5 18.05.2009 14:31