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

28/01/2021

Как определить включен ли режим крупных кнопок панелей инструментов?

Вопрос: Как определить включен ли режим крупных кнопок панелей инструментов?

Ответ: Для этой цели следует воспользоваться COM/ActiveX моделью AutoCAD. С помощью ObjectARX/C++ это будет выглядеть так:

Код - C++: [Выделить]
  1. //-----------------------------------------------------------------------------
  2. //----- acrxEntryPoint.cpp
  3. //-----------------------------------------------------------------------------
  4. #include "StdAfx.h"
  5. #include <acadi.h>
  6. #include "resource.h"
  7.  
  8. //-----------------------------------------------------------------------------
  9. #define szRDS _RXST("")
  10.  
  11. //-----------------------------------------------------------------------------
  12. //----- ObjectARX EntryPoint
  13. class CGetLargeButtonsApp : public AcRxArxApp {
  14.  
  15. public:
  16.   CGetLargeButtonsApp() : AcRxArxApp() {}
  17.  
  18.   virtual AcRx::AppRetCode On_kInitAppMsg(void* pkt) {
  19.     AcRx::AppRetCode retCode = AcRxArxApp::On_kInitAppMsg(pkt);
  20.     return (retCode);
  21.   }
  22.  
  23.   virtual AcRx::AppRetCode On_kUnloadAppMsg(void* pkt) {
  24.     AcRx::AppRetCode retCode = AcRxArxApp::On_kUnloadAppMsg(pkt);
  25.     return (retCode);
  26.   }
  27.  
  28.   virtual void RegisterServerComponents() {  }
  29.  
  30.   static void RivilisGetButtonSize()
  31.   {
  32.     CComQIPtr<IAcadApplication> acad(acedGetAcadWinApp()->GetIDispatch(TRUE));
  33.     if (acad) {
  34.       CComQIPtr<IAcadMenuGroups> menuGroups;
  35.       if (acad->get_MenuGroups(&menuGroups) == S_OK)
  36.       {
  37.         CComQIPtr<IAcadMenuGroup> menuACAD;
  38.         if (menuGroups->Item(_variant_t("ACAD"), &menuACAD) == S_OK)
  39.         {
  40.           CComQIPtr<IAcadToolbars> toolbars;
  41.           if (menuACAD->get_Toolbars(&toolbars) == S_OK)
  42.           {
  43.             VARIANT_BOOL bLargeButtons = VARIANT_FALSE;
  44.             if (toolbars->get_LargeButtons(&bLargeButtons) == S_OK)
  45.             {
  46.               acutPrintf(_T("\nКнопки панелей инструментов: %s"),
  47.                 bLargeButtons == VARIANT_TRUE ? _T("Крупные") : _T("Мелкие"));
  48.             }
  49.           }
  50.         }
  51.       }
  52.     }
  53.   }
  54. };
  55.  
  56. //-----------------------------------------------------------------------------
  57. IMPLEMENT_ARX_ENTRYPOINT(CGetLargeButtonsApp)
  58.  
  59. ACED_ARXCOMMAND_ENTRY_AUTO(CGetLargeButtonsApp, Rivilis, GetButtonSize, GetButtonSize, ACRX_CMD_MODAL, NULL)





Автор: Александр Ривилис
Опубликовано 28.01.2021