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

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

Выделение примИтивов на слое одним кликом

Ответ
Поиск в этой теме
Непрочитано 12.07.2011, 05:44 1 | #1
Выделение примИтивов на слое одним кликом
Alex79
 
проектирование
 
Родом из солнечной системы
Регистрация: 06.12.2006
Сообщений: 60

Здравствуйте уважаемые участники форума.
У меня такой вопрос. Мне необходимо при помощи lisp программы или стандартной команды ( о которой я возможно не знаю) выделить все примитивы находящиеся на одном слое.
Можно конечно отключить все слои оставив один и посмотреть что на нем находится, но когда слоев очень много то это занимает время. У меня есть Лисп, который по примитиву изменяет название слоя. Еще раз поясню что мне нужно. Есть множество слоев, я запускаю ЛИСП, кликаю на один из объектов и автоматически выделяются все объекты, находящиеся на данном слое.
Только не нужно пинать, или советовать обратиться к мануалу, просто скажите, где нужно посмотреть.

PS - если ответ простой, не могли бы вы в скайп написать, буду очень признателен

Последний раз редактировалось Alex79, 12.07.2011 в 12:44.
Просмотров: 10796
 
Непрочитано 12.07.2011, 06:47
#2
Zezza


 
Регистрация: 22.10.2007
Челябинск->Москва<->Бомбей
Сообщений: 857


Как вариант, не в один клик, но все-таки, через быстрый выбор, предварительно выбрав все на чертеже (Ctrl+А по умолчанию), установить свойства объектов Слой, значение Название слоя необходимого, ну и оставить включить в новый набор птичку!
Zezza вне форума  
 
Непрочитано 12.07.2011, 07:17
#3
T-Yoke

Артиллерист - вертолётчик. Дипломированный инженер-механик. Technologist
 
Регистрация: 29.11.2004
Где-то около Москвы
Сообщений: 16,748
Отправить сообщение для T-Yoke с помощью Skype™


Цитата:
Сообщение от Alex79 Посмотреть сообщение
Здравствуйте уважаемые участники форума.
У меня такой вопрос. Мне необходимо при помощи lisp программы или стандартной команды ( о которой я возможно не знаю) выделить все примитивы находящиеся на одном слое...
Название темы подправь А то они потому примИтивы, от того что примитивные, а не потому что приметные.
__________________
«Артиллерия не токмо грохот, но и наука!» Пётр I
T-Yoke вне форума  
 
Непрочитано 12.07.2011, 07:53
#4
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Можно, с помощью фильтров ssget
gomer вне форума  
 
Непрочитано 12.07.2011, 08:20
#5
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Полилиния и блок совсем не примитивы.
Profan вне форума  
 
Непрочитано 12.07.2011, 09:28
#6
angel-fear

инженер-электрик
 
Регистрация: 21.10.2010
Краснодар
Сообщений: 134


Обход слоев не поможет никак?
angel-fear вне форума  
 
Непрочитано 12.07.2011, 09:35
1 | #7
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Выделение объектов на слое выбранного объекта:
Код:
[Выделить все]
(defun C:SEL_LAY ( / echo sen ent lay ss len da)
      (setq echo (getvar "CMDECHO"))
      (setvar "CMDECHO" 0)
      (princ "\n Определение слоя по объекту.")
      (setq sen (entsel " Выберите нужный объект: "))
(if sen
      (progn
      (setq ent (entget (car sen)))
      (setq lay (cdr (assoc 8 ent)))
      (setvar "CLAYER" lay)
      (setq ss (ssget "_X" (list (cons 8 lay))))
      (setq len (sslength ss))
      (sssetfirst nil ss)
      (initget 6 "Да Нет Yes No _ Yes No Yes No")
      (setq da (getkword "\n Отключить остальные слои? [Да/Нет] <Да>: "))
      (if (or (= da "Yes") (= da nil))
          (progn
          (vl-cmdf "_-LAYER" "_OF" "*" "_Y" "")
          (vl-cmdf "_-LAYER" "_ON" LAY "")
      )); if da
      (sssetfirst ss ss)
      (princ "\n Слой: ") (princ lay)
      (princ "  Количество объектов = ") (princ len)
      )
      (princ "\n Объект не выбран!")
); if sen
      (setvar "cmdecho" echo)
      (princ)
)
Profan вне форума  
 
Автор темы   Непрочитано 12.07.2011, 12:53
#8
Alex79

проектирование
 
Регистрация: 06.12.2006
Родом из солнечной системы
Сообщений: 60
<phrase 1= Отправить сообщение для Alex79 с помощью Skype™


Profan
Большое спасибо - то что нужно!!!


T-Yoke
Спасибо за замечание, но не мешало бы еще блеснуть и знанием Автокада.
Alex79 вне форума  
 
Непрочитано 12.07.2011, 15:21
#9
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от Alex79 Посмотреть сообщение
Есть множество слоев, я запускаю ЛИСП, кликаю на один из объектов и автоматически выделяются все объекты, находящиеся на данном слое.
тогда можно и покороче
Код:
[Выделить все]
 (sssetfirst nil (ssget "_x" (list (assoc 8 (entget (car (entsel "\nВыберите объект")))))))
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 12.07.2011, 16:20
#10
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Дима_, а если ты промахнешься и не попадешь по объекту? А наборы обнилять?
Profan вне форума  
 
Непрочитано 12.07.2011, 16:44
#11
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Если промахнешся - напишет "неверный тип аргумента: lentityp nil" и ничего не "обнилиться" (я так понял что это не орфографическая ошибка, а от слова nil) - из любви к искуству можно конечно проверять выбор но ИХМО в данном конкретном случае это не нужно кроме как другой надписи НИЧЕГО не изменится про ту, в общем наверно полезную, добавку которую Вы "самододумали" - вот она ихмо недоделенна - если уж все слои выключил - то надоб и придумать, чтоб как-то все включить (или по меньшей мере startundomark предусмотреть).
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 12.07.2011 в 16:52.
Дима_ вне форума  
 
Непрочитано 12.07.2011, 17:07
#12
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,010


Дорабатывайте давайте свои проги оба, недодельщики
Nike вне форума  
 
Непрочитано 12.07.2011, 18:56
1 | #13
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Тему пора переносить в раздел программирования
Мой вариант
Код:
[Выделить все]
 
; Примеры вызова:
; (fast_select 8) - выбрать по слою
; (fast_select 62) - выбрать по цвету
; (fast_select 0) - выбрать по типу
; (fast_select 2) - выбрать по имени блока

(defun fast_select(mode / )
  (vl-load-com)
  ((lambda(obj)
     (if (and obj
	      (not (vl-catch-all-error-p obj))
	      )
       ((lambda(nbr)
	  (sssetfirst nil nbr)
	  (prompt (strcat "Найдено объектов : " (if nbr (itoa (sslength nbr)) "0")))
	  )
	 (cond ((or (= mode 0)
		    (= mode 8)
		    )
		(ssget "_X" (list (cons mode (cdr (assoc mode (entget (car obj)))))))
		)
	       ((= mode 62)
		((lambda(color)
		   (if color
		     (ssget "_X" (list color))
		     (ssget "_X" (list (cons mode 256)))
		     )
		   )
		  (assoc mode (entget (car obj)))
		  )
		)
	       ((and (= mode 2)
		     (= (cdr (assoc 0 (entget (car obj)))) "INSERT")
		     )
		((lambda(nbr)
		   (foreach item (vl-remove-if 'listp (mapcar 'cadr (ssnamex nbr)))
		     (if (/= (vla-get-EffectiveName (vlax-ename->vla-object item)) (vla-get-EffectiveName (vlax-ename->vla-object (car obj))))
		       (ssdel item nbr)
		       )
		     )
		   )
		  (ssget "_X" (list (cons 0 "INSERT") (cons 2 (strcat "`*U*," (cdr (assoc mode (entget (car obj))))))))
		  )
		)
	       )
	 )
       )
     )
    (vl-catch-all-apply 'entsel
      (list "\nВыберете объект: ")
      )
    )
  (princ)
  ); end fast_select
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 12.07.2011, 19:09
#14
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Цитата:
Сообщение от Nike Посмотреть сообщение
Дорабатывайте давайте свои проги оба, недодельщики
А чего там дорабатывать? Есть штатная команда включения всех слоев.
Profan вне форума  
 
Непрочитано 12.07.2011, 19:11
#15
VVA

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


Мой вариант
1. Выделяет все объекты со слоя образца. Позволяеть использовать SHIFT для добавления / удаления
2. Наличие установленного Express Tools обязательна
3. Вызывать на исполнетие так (layselect)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.07.2011, 20:23
#16
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Alex79 Посмотреть сообщение
или стандартной команды ( о которой я возможно не знаю) выделить все примитивы находящиеся на одном слое.
честно говоря, несколько удивлён велосипедостроению предложенным выше вариантам решения... А что, кто-то предал анафеме использование _qselect?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 12.07.2011, 20:36
#17
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от Alex79 Посмотреть сообщение
Мне необходимо при помощи lisp программы или стандартной команды ( о которой я возможно не знаю) выделить все примитивы находящиеся на одном слое.
А можно было бы и Select Similar доусовершенствовать...
АлексЮстасу вне форума  
 
Непрочитано 12.07.2011, 20:39
#18
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


1. GETSEL а затем PSELECT и P
2. Layiso
Vova вне форума  
 
Непрочитано 12.07.2011, 20:42
#19
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


hwd, речь шла об 1 (одном) клике. Сколько надо кликов, чтобы применить команду "_qselect" ("бвыбор")?
Profan вне форума  
 
Непрочитано 12.07.2011, 20:53
#20
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Profan Посмотреть сообщение
hwd, речь шла об 1 (одном) клике. Сколько надо кликов, чтобы применить команду "_qselect" ("бвыбор")?
Я процитировал вопрос на который ответил. Что тут может быть не понятного? А это:
Цитата:
Еще раз поясню что мне нужно. Есть множество слоев, я запускаю ЛИСП, кликаю на один из объектов и автоматически выделяются все объекты, находящиеся на данном слое.
произрастает от незнания о _qselect. Причём начал автор с того, что ему без разницы, что это будет - лисп или стандартная команда, а закончил тем, что "ещё раз поясняет" что это должен быть лисп. Откуда растут ножки у обозначенной проблемы - я пояснил выше.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 12.07.2011 в 20:59.
hwd вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Выделение примИтивов на слое одним кликом



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Справочный размер одним кликом Jonas AutoCAD 9 13.05.2011 13:42
Выбор всех примитивов одним кликом DANZZ AutoCAD 5 12.08.2006 17:49