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

14/05/2014

Внутри палитр инструментов AutoCAD часть 2 - Объединение в группы

Попробуем объединить палитры в группы и посмотрим, что и где меняется. Для полноты картины одни и те же палитры добавим в разные группы, плюс группы сделаем в несколько уровней (думаю, что 2 уровней будет достаточно)

AutoCAD 2009, добавление и заполнение собственной группы. Пока AutoCAD работает, изменений не обнаружено. После закрытия изменения вносятся в Profile.aws и FixedProfile.aws.

В узле
Код - XML: [Выделить]
  1. <Profile>
  2.   <StorageRoot>
  3.     <AcApData>
  4.       <AdUiTools>
  5.         <ToolsInfo>
  6.           <Tool ...

Появляется элемент <ToolPaletteGroup>, в котором в <Contents> перечисляются все имеющиеся группы по принципу:
Код - XML: [Выделить]
  1. <ToolPaletteGroup>
  2.   <Name>Имя группы</Name>
  3.   <Contents>
  4.     <ToolPalette ID="{...}"/>
  5.     <ToolPalette ID="{...}"/>
  6.     <ToolPalette ID="{...}"/>
  7.   </Contents>
  8.   <CustomData/>
  9.   <ActivePaletteIndex>0</ActivePaletteIndex>
  10. </ToolPaletteGroup>

Здесь "Имя группы" - то имя, которое задавалось пользователем, а в ToolPalette под ID указывается ID палитры. Названия не показываются и не дублируются.

Подузел <CustomData/> существует только для пользовательских групп: в группах, созданных самой Autodesk, этого подузла нет. Явного и внятного смысла этого кусочка я не уловил :(

Стоит помнить, что с узлом Tools не все так просто: Почему-то узлов Tool три штуки, две - пустые; изменения попадают только в последнюю, или имеющую подузлы вида
Код - XML: [Выделить]
  1. <CAcTcUiToolPaletteSet ID='{...}'>
  2.   <ToolPalettes>


Если мы добавляем подгруппу, то узел <ToolPaletteGroup> получает подчиненный подузел <ToolPaletteGroup> с аналогичной структурой. Положение подузла в принципе ни на что не влияет и определяется только порядком, определенным в окне настройки палитр.

В AutoCAD 2010, 2013б 2015 ситуация уже немного другая: во-первых, изменения вносятся только в файл Profile.aws. Во-вторых, структура положения ToolPaletteGroup> уже другая:

Код - XML: [Выделить]
  1. <Profile>
  2.   <StorageRoot>
  3.     <ToolPaletteScheme>
  4.       <ToolPaletteSets>
  5.         <ToolPaletteSet>
  6.           <CAcTcUiToolPaletteSet>
  7.             <ToolPaletteGroup>
Т.е. путь вполне однозначен. Во всем остальном никаких изменений по сравнению с AutoCAD 2009 нет: точно так же организовывается ToolPaletteGroup, точно так же внутри перечисляются ID палитр.

Автор: Алексей Кулик

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

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