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

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

Как в автокаде выделить все блоки одним нажатием?

Ответ
Поиск в этой теме
Непрочитано 07.11.2019, 16:19 #1
Как в автокаде выделить все блоки одним нажатием?
815wsw
 
Регистрация: 06.11.2019
Сообщений: 3

Помогите с командой/макросом/лиспом в автокаде "выделить все блоки" и "выделить все штриховки" ? Постоянно нужно выделять, через команду быстрый выбор теряется много времени, а команда выбрать подобные работает только на одинаковые объекты, находящиеся только в одном слое
Просмотров: 5853
 
Непрочитано 07.11.2019, 18:27
#2
Ilez

Техник АС, КЖ
 
Регистрация: 24.09.2013
Ingushetiya
Сообщений: 392


Цитата:
Сообщение от 815wsw Посмотреть сообщение
Помогите с командой/макросом/лиспом в автокаде "выделить все блоки" и "выделить все штриховки" ?
1) Скорее всего вы пользуетесь командой "выбрать подобные" предварительно выбрав требуемые объекты. Попробуйте, не выделив никаких объектов, запустить эту команду _SelectSimilar, затем через командную строку зайдите в настройки (этой команды). Там снимите все галочки - теперь при использовании он должен выделять все блоки, попробуйте. Эта настройка данной команды сохранится, пока не измените.

2)В команде Фильтр создать именованный фильтр. Кроме того, последний фильтр сохранится. Но этот способ несущественно быстрее, чем через Быстрый выбор.
Ilez вне форума  
 
Автор темы   Непрочитано 07.11.2019, 18:31
#3
815wsw


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


спасибо, про настройки команды выбрать подобные не знал. проблема в том, что приходится искать объект для подобия, а если на большом чертеже остается всего пару блоков, то их просто не найдешь. через команду фильтр тоже хороший вариант, но хотелось бы уйти вообще в одно нажатие, чтобы экономить время
815wsw вне форума  
 
Непрочитано 07.11.2019, 22:01
1 | #4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


ObjectARX. SelSim - выбор по образцу Очень мощный и простой инструмент для выбора
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 08.11.2019, 08:29
#5
trir


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


https://github.com/triroakenshield/R...RViewer1/mitab
trir вне форума  
 
Непрочитано 13.11.2019, 22:09
#6
skkkk


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


Код:
[Выделить все]
(if (setq ss (ssget "_X" '((0 . "INSERT"))))(sssetfirst nil ss))
Код:
[Выделить все]
(if (setq ss (ssget "_X" '((0 . "HATCH"))))(sssetfirst nil ss))
skkkk вне форума  
 
Автор темы   Непрочитано 13.11.2019, 22:54
#7
815wsw


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


спасибо! то что нужно
815wsw вне форума  
 
Непрочитано 19.11.2024, 16:54
#8
Gretech89


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


А как выделить все блоки, содержащие штриховку?
Gretech89 вне форума  
 
Непрочитано 19.11.2024, 17:07
#9
Кулик Алексей aka kpblc
Moderator

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


Тогда уж проще будет сначала выделить блоки, потом пройтись по составу каждого, и оставить только те, в которых а) есть штриховка и б) она видима.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.11.2024, 17:46
#10
Сергей812


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Тогда уж проще будет сначала выделить блоки, потом пройтись по составу каждого, и оставить только те, в которых а) есть штриховка и б) она видима.
выделить?)
Сергей812 вне форума  
 
Непрочитано 19.11.2024, 19:20
#11
Кулик Алексей aka kpblc
Moderator

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


Я подразумевал, что юзер выбирает, а потом кодом уже фильтруется

----- добавлено через ~2 мин. -----
ИМХО в любом случае простого кода типа ssget тут не получится
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.11.2024, 19:50
#12
Сергей812


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


Цитата:
Сообщение от Gretech89 Посмотреть сообщение
А как выделить все блоки, содержащие штриховку?
имхо - получить все вставки блоков в текущем пространстве, в их определениях проверить наличие примитивов штриховки и выделить нужные вставки блоков в текущем пространстве.

----- добавлено через ~3 мин. -----
или наоборот, сначала выбрать определения блоков с наличием примитивов штриховки, затем в текущем пространстве отфильтровать и выделить вставки блоков.
Сергей812 вне форума  
 
Непрочитано 20.11.2024, 10:33
#13
Gretech89


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


Не тем путем пошел?

Код:
[Выделить все]
 (defun c:sel_BlockHatch (/ ss eo blst bcol b)
 (if (ssget "_:L" '((0 . "INSERT")))
 (progn
 (setq ss (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object))))
 (vlax-for eo ss
 (if (not (vl-position (vla-get-EffectiveName eo) blst))
 (setq blst (cons (vla-get-EffectiveName eo) blst))
 )
 )
 (vla-Delete ss)
 )
 )
 (setq bcol (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object))))
 (foreach ss blst
 (setq b (vla-Item bcol ss))
 (if (and
 (eq :vlax-false (vla-get-isxref b))
 (eq :vlax-false (vla-get-islayout b))
 )
 (vlax-for eo b
 (if (wcmatch (vla-get-ObjectName eo) "AcDbHatch")
 (sssetfirst nil (ssadd (entlast)))
 )
 )
 )
 )
 (vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acAllViewports)
 (princ)
)
Gretech89 вне форума  
 
Непрочитано 20.11.2024, 11:26
2 | #14
Кулик Алексей aka kpblc
Moderator

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


Как-то больно странно код написан ИМХО.
Код:
[Выделить все]
 (vl-load-com)

(defun c:select-block-hatch (/ adoc base_selset doc_blocks block_list)
  (if (= (type (setq base_selset
                      (vl-catch-all-apply
                        (function
                          (lambda ()
                            (ssget '((0 . "INSERT")))
                          )
                        )
                      )
               )
         )
         'pickset
      )
    (progn
      (setq adoc       (vla-get-activedocument (vlax-get-acad-object))
            doc_blocks (vla-get-blocks adoc)
            block_list (vl-remove-if-not
                         (function
                           (lambda (ent / def has_hatch)
                             (setq def (vla-item doc_blocks (cdr (assoc 2 (entget ent)))))
                             (vlax-for subent def
                               (if (and (not has_hatch)
                                        (equal (vla-get-visible subent) :vlax-true)
                                   )
                                 (setq has_hatch (equal (vla-get-objectname subent) "AcDbHatch"))
                               )
                             )
                             has_hatch
                           )
                         )
                         ((lambda ()
                            (repeat
                              (setq
                                tab
                                     nil
                                item
                                     (sslength base_selset)
                              ) ;_ end setq
                               (setq tab (cons (ssname base_selset (setq item (1- item))) tab))
                            )
                          )
                         )
                       )
      )
      (if block_list
        (progn
          (setq selset (ssadd))
          (foreach item block_list
            (setq selset (ssadd item selset))
          )
          (sssetfirst selset selset)
        )
        (sssetfirst nil nil)
      )
    )
  )
  (princ)
)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.11.2024, 12:40
#15
Gretech89


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


Кулик Алексей aka kpblc, спасибо за отличный вариант!
Gretech89 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Как в автокаде выделить все блоки одним нажатием?

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoCAD 2013: Как выделить и удалить объект в различных блоках, без "входа" в блоки? DIN536 AutoCAD 9 09.03.2015 15:09
Именованные блоки превращаются в неименованные. Что делать? Autocad 2008SP1 emich AutoCAD 7 25.06.2014 10:30
Блоки под одним именем ymm AutoCAD 7 22.08.2012 13:51
Как выделить блоки, одинаковые по размерам X,Y? JaneEyre AutoCAD 2 07.08.2012 10:33
как сделать всё одним цветом включая блоки? alldmc AutoCAD 4 24.07.2012 23:54