ADN Open CIS
Сообщество программистов Autodesk в СНГ

22/07/2013

В каком случае набор выбора, возвращаемый acedGetCurrentSelectionSet() действителен в ObjectARX?

Вопрос:

Я не могу понять в каком случае acedGetCurrentSelectionSet() должен вернуть мне действительный набор выбора. Можете объяснить мне?

Кроме того, как мне очистить набор предварительного выбора (PICKFIRST)?

Ответ:

Функция acedGetCurrentSelectionSet() заполняет набор выбора значениями ObjectID всех примитивов из текущего набора выбора AutoCAD. «Текущий набор выбора» может быть одним из следующих:

1) Набор предварительного выбора (pickfirst)
2) Набор выбора команды ВЫБОР (SELECT) или одной из команд, которая осуществляет выбор примитивов (что представляет собой набор Предыдущего выбора)
3) Самый последний набор, созданный функцией acedSSGet (или (ssget …) в Autolisp).

Вы не получите ничего если вызовете acedGetCurrentSelectionSet() из команды, которая не определена с флагом ACRX_CMD_USEPICKSET. Это происходит потому, что вы должны указать AutoCAD, что команде разрешено получать набор предварительного выбора (PICKFIRST), в противном случае AutoCAD просто очистит его, когда команда будет вызвана. Просто добавьте флаг ACRX_CMD_USEPICKSET к флагу ACRX_CMD_TRANSPARENT вашей команды. Прочитайте в Руководстве пользователя ObjectARX об AcEdCommand::commandFlags для понимания нюансов.

Чтобы очистить набор предварительного выбора (PICKFIRST) необходимо вызвать:

        acedSSSetFirst(NULL, NULL);

Источник: http://adndevblog.typepad.com/autocad/2013/04/when-is-the-selection-set-returned-by-acedgetcurrentselectionset-valid-in-objectarx.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=136.0

 

Опубликовано 22.07.2013
Отредактировано 04.08.2013 в 17:16:20