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

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

Как выбрать отдельные примитивы в группе объектов (_GROUP)?

Ответ
Поиск в этой теме
Непрочитано 22.07.2009, 12:45 #1
Как выбрать отдельные примитивы в группе объектов (_GROUP)?
Makswell
 
Инженер-строитель
 
Киров
Регистрация: 15.08.2007
Сообщений: 2,204

Всем привет.
Несколько примитивов были раннее объединены в группу (команда _GROUP). Сейчас мне нужно выделить несколько примитивов из этой группы для последующей обработки. Но дело в том, что ssget выбирает сразу всю группу в целом. Думал, поможет установка PICKSTYLE в 0, но это не дало никакого эффекта. На этом в общем-то у меня мысль заканчивается. )))

Как быть?
Просмотров: 2871
 
Непрочитано 22.07.2009, 12:52
#2
Кулик Алексей aka kpblc
Moderator

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


А как ты узнаешь, какие примитивы "нужны", а какие - нет? Или выбор осуществляется вручную?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.07.2009, 13:07
#3
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Да, вручную. В частности ssget-ом.

Ещё была мысль вместо ssget, установить PICKSTYLE в 0 и попробовать (command "_.Select" ...), но в выборе у меня ещё присутствует фильтр, чего в _.Select не сделать.

Добавлено:
Сейчас проверил vla-SelectOnScreen. То же самое, ведёт себя, как ssget и выбирает группу целиком.

Последний раз редактировалось Makswell, 22.07.2009 в 13:22.
Makswell вне форума  
 
Непрочитано 22.07.2009, 15:46
#4
VVA

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


Makswell, Я тоже проверил. SSGET выбирает в зависимости от PICKSTYLE либо отдельный объект, либо группу. SSGET пробовал без фильтра и с фильтром на LINE. Autocad 2006 RUS. Короче выкладывай файл с группой и код с ssget
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 22.07.2009, 16:15
#5
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от VVA Посмотреть сообщение
Makswell, Я тоже проверил. SSGET выбирает в зависимости от PICKSTYLE либо отдельный объект, либо группу. SSGET пробовал без фильтра и с фильтром на LINE. Autocad 2006 RUS. Короче выкладывай файл с группой и код с ssget
Хех! Точно, это просто моя невнимательность. Просто при ssget, когда наводишь курсор, у меня выделяется (в смысле подсвечивается) вся группа, но при дальнейшем выборе (нажатии кнопки мыши) видно, что выделяются нужные примитивы. У меня 2008-й, но я думаю, что наверно везде так.

По ходу дела у меня появились ещё вопросы. Не совсем по основной теме, но тем не менее, как с помощью ssget выбрать группу по имени (уже не интерактивно, а из всего рисунка)? Опять же с помощью _Select это можно сделать так:
Код:
[Выделить все]
(if (member "имя_группы"
	    (mapcar
	      'cdr
	      (vl-remove-if-not
		(function (lambda (x) (= (car x) 3)))
		(dictsearch (namedobjdict) "ACAD_GROUP")
	      )
	    )
    )
  (progn
    (vl-cmdf "_.SELECT" "_g" "имя_группы" "")
    (setq selset (ssget "_p"))
  )
)
Но как всегда хочется уйти от команд.

И ещё, можно ли как нибудь создать группу не используя _.-GROUP и все тот же vl-cmdf? Т.е как рализовать вот такую конструкцию:
Код:
[Выделить все]
(vl-cmdf "_.-GROUP" "_c" "имя_группы" "" selset "")
не используя командные методы?
Makswell вне форума  
 
Непрочитано 22.07.2009, 18:59
#6
VVA

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


Цитата:
как с помощью ssget выбрать группу по имени
Код:
[Выделить все]
(vlax-for Grp (vla-get-Groups (vla-get-activedocument (vlax-get-acad-object)))
  (if (= (vla-get-name Grp) <Твое имя>)
    (vlax-for Ent Grp
      === Собирай ENT ====
      )
    )
  )
Цитата:
И ещё, можно ли как нибудь создать группу не используя _.-GROUP
Код:
[Выделить все]
(setq New_Group (vla-add (vla-get-Groups (vla-get-activedocument (vlax-get-acad-object))) "My_New_Group"))
(setq ent (car(entsel)))
(setq lst (list (vlax-ename->vla-object ent)))
(vla-AppendItems New_Group
  (vlax-make-variant
    (vlax-safearray-fill
      (vlax-make-safearray
        vlax-vbObject
        (cons 0 (1- (length lst)))
        )
      lst
      )
    )
  )
Если не через vla, то
1. Группы - это записи в словаре "ACAD_GROUP"
2. см. http://www.caduser.ru/forum/index.ph...#message128497
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 23.07.2009, 08:11
#7
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


VVA, спасибо! ...А за ссылку спасибо отдельное.
Makswell вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как выбрать отдельные примитивы в группе объектов (_GROUP)?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Как приглушить яркость отображения объектов на экране kserg Программирование 9 04.03.2005 17:55
Как получить таблицу свойств объектов такую же как в OrCad passat AutoCAD 1 08.12.2004 01:12