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

ADN Club => ObjectARX => Тема начата: Алексей Кузин от 15-11-2018, 19:09:06

Название: tool palette - редактирование View Option
Отправлено: Алексей Кузин от 15-11-2018, 19:09:06
Собственно тема содержит весь вопрос, ну да ладно, продолжим   :D
Как кодом изменить View Option в tool palette?
Желательно .NET, но буду рад подсказкам и в сторону ObjectARX.
Спасибо.
Название: Re: tool palette - редактирование View Option
Отправлено: Александр Ривилис от 15-11-2018, 22:41:01
Если ты об этом, то нет никакого публичного API для его изменения: Был не прав. В ObjectARX есть такая возможность. Подготовлю пример и выложу. Тему соответственно перенесу в раздел ObjectARX.

(https://lh3.googleusercontent.com/-JeWV_apWpsY/W-3KVeqpUyI/AAAAAAAAPQ0/wWTQaOobJ_smLEAumQYAnc_l85675tSKACHMYCw/s0/clipboard.png)

На всякий случай - значения хранятся в файле Profile.aws. Это xml-файл, так что с ним можно поработать и из .NET. Только вот значения из него налету подхватываться не будут.

Название: Re: tool palette - редактирование View Option
Отправлено: Алексей Кузин от 16-11-2018, 02:26:02
Да, именно это.  Про файл я знаю, тоже налету ничего не получилось. Буду благодарен за пример. Большое спасибо.
Название: Re: tool palette - редактирование View Option
Отправлено: Александр Ривилис от 16-11-2018, 19:51:17
Код - C++ [Выбрать]
  1. static void RivilisSetToolsViewOptions(void)
  2. {
  3.   CAcTcUiManager *pTcMng = AcTcUiGetManager();
  4.   CAcTcUiToolPaletteSet *pTcPalSet = AcTcUiGetToolPaletteWindow();
  5.   CAcTcUiToolPaletteGroup *pTcPalGrp = pTcPalSet->GetActivePaletteGroup();
  6.   acutPrintf(_T("\nActivePaletteGroup=%s"), LPCTSTR(pTcPalGrp->GetName()));
  7.   int iActivePal = pTcPalGrp->GetActivePalette();
  8.   if (pTcPalGrp->IsItemPalette(iActivePal))
  9.   {
  10.     CAcTcUiToolPalette *pTcPal = NULL;
  11.     if (pTcPalGrp->GetItem(pTcPalGrp->GetActivePalette(), pTcPal) && pTcPal)
  12.     {
  13.       acutPrintf(_T("\nActivePalette=%s %d"), LPCTSTR(pTcPal->GetName()), pTcPalGrp->GetActivePalette());
  14.       pTcPalGrp->SetActivePalette(pTcPalGrp->GetActivePalette());
  15.       CAcTcUiPaletteView *pTcView = pTcPal->GetView();
  16.       // Допустимые размеры иконок
  17.       const SIZE sizeArray[] =
  18.       {
  19.         {16, 16}, {24, 24}, {32, 32}, {40, 40},
  20.         {48, 48}, {56, 56}, {64, 64}
  21.       };
  22.       // Меняем размер иконок на следующий
  23.       SIZE curSize;  pTcView->GetImageSize(&curSize);
  24.       int iSize = 0;
  25.       for (iSize = 0; iSize < count(sizeArray); iSize++)
  26.       {
  27.         if (curSize.cx <= sizeArray[iSize].cx && curSize.cy <= sizeArray[iSize].cy)
  28.         {
  29.           iSize = (iSize + 1) % count(sizeArray);
  30.           break;
  31.         }
  32.       }
  33.       pTcView->SetImageSize(sizeArray[iSize]);
  34.       DWORD dwStyle = pTcView->GetCatalogViewStyle();
  35.       dwStyle ^= ACTCUI_CVSTYLE_LISTVIEW; // Устанавливаем или снимаем флаг ListView
  36.       // dwStyle ^= ACTCUI_CVSTYLE_SHOWTEXT; // Устанавливаем или снимаем флаг текста
  37.       pTcView->SetCatalogViewStyle(dwStyle);
  38.       pTcView->Update(); // Обновляем вид палитры
  39.     }
  40.   }
  41. }
  42.  

Название: Re: tool palette - редактирование View Option
Отправлено: Алексей Кузин от 20-11-2018, 12:35:57
Спасибо