23/12/2013
Добавление и удаление примитивов из набора предварительного выбора в ObjectARX
Вы можете воспользоваться функцией “acedSSSetFirst” для создания набора (с «ручками») предварительного выбора. Ниже пример команды, которая запрашивает выбор примитивов и помещает их в набор предварительного выбора. Код также показывает окно сообщений, и как только нажимаете «Да», набор удаляется из набора предварительного выбора. Заметим, что команда позволяющая выбирать и устанавливать набор предварительного выбора должна иметь флаги ACRX_CMD_USEPICKSET и ACRX_CMD_REDRAW
Код - C++: [Выделить]
- void selectTest()
- {
- int nReturn ;
- ads_name name;
- ads_point pt;
- nReturn = acedEntSel(_T("\nВыберите примитив: "), name, pt);
- if(nReturn != RTNORM)
- return;
- // Получаем ObjectId примитива
- AcDbObjectId Id;
- if(acdbGetObjectId(Id, name) != Acad::eOk)
- return;
- // Из ObjectId в набор выбора
- ads_name ss, ename;
- // Создаём набор
- acedSSAdd( NULL, NULL, ss );
- // Получаем имя из objectID
- acdbGetAdsName( ename, Id );
- // добавляем имя в набор
- acedSSAdd( ename, ss, ss );
- // выбираем вместе с ручками
- acedSSSetFirst( ss, NULL );
- acedSSFree( ss );
- ::MessageBox(NULL, L"Выбраны", L"AutoCAD", MB_OK);
- // Очищаем выбор
- acedSSSetFirst( NULL, NULL );
- }
Обсуждение: http://adn-cis.org/forum/index.php?topic=410
Опубликовано 23.12.2013