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

23/12/2013

Добавление и удаление примитивов из набора предварительного выбора в ObjectARX

Вы можете воспользоваться функцией “acedSSSetFirst” для создания набора (с «ручками») предварительного выбора. Ниже пример команды, которая запрашивает выбор примитивов и помещает их в набор предварительного выбора. Код также показывает окно сообщений, и как только нажимаете «Да», набор удаляется из набора предварительного выбора. Заметим, что команда позволяющая выбирать и устанавливать набор предварительного выбора должна иметь флаги ACRX_CMD_USEPICKSET и ACRX_CMD_REDRAW

Код - C++: [Выделить]
  1. void selectTest()
  2. {
  3.     int nReturn ;
  4.     ads_name name;
  5.     ads_point pt;
  6.  
  7.     nReturn = acedEntSel(_T("\nВыберите примитив: "), name, pt);
  8.  
  9.     if(nReturn != RTNORM)
  10.      return;
  11.     // Получаем ObjectId примитива
  12.     AcDbObjectId Id;
  13.     if(acdbGetObjectId(Id, name) != Acad::eOk)
  14.      return;
  15.  
  16.     // Из ObjectId в набор выбора
  17.     ads_name ss, ename;
  18.  
  19.     // Создаём набор
  20.     acedSSAdd( NULL, NULL, ss );
  21.  
  22.     // Получаем имя из objectID
  23.     acdbGetAdsName( ename, Id );
  24.  
  25.     // добавляем имя в набор
  26.     acedSSAdd( ename, ss, ss );
  27.  
  28.     // выбираем вместе с ручками
  29.     acedSSSetFirst( ss, NULL );
  30.  
  31.     acedSSFree( ss );
  32.  
  33.     ::MessageBox(NULL, L"Выбраны", L"AutoCAD", MB_OK);
  34.     // Очищаем выбор
  35.     acedSSSetFirst( NULL, NULL );
  36. }

Источник: http://adndevblog.typepad.com/autocad/2012/05/adding-and-removing-the-entities-from-pick-first-selection-set-using-objectarx.html

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

Опубликовано 23.12.2013