Тогда начинаем исследовательскую работу

Открываем cui в том же notepad++ и ищем первое вхождение, например, MMU_0001:
Код
<MenuMacro UID="MMU_0001">
<Macro type="Any">
<Revision MajorVersion="16" MinorVersion="2" UserVersion="1" />
<Name xlate="true" UID="XLS_1703">сварные швы</Name>
<Command>^C^C_.-vbarun оформление.dvb!Module1.сварные_швы</Command>
<HelpString xlate="true" UID="XLS_1704">Проставление обозначения сварного шва</HelpString>
<SmallImage Name="C:\Program Files\AutoCAD 2006\Support\оформление\сварные_швы.bmp" />
<LargeImage Name="C:\Program Files\AutoCAD 2006\Support\оформление\сварные_швы.bmp" />
</Macro>
</MenuMacro>
Ага, пути до картинок снесем, но слегка попозже.
Следующее вхождение будет уже в
Код
<ToolbarRoot>
<Toolbar ToolbarOrient="floating" ToolbarVisible="show" xval="200" yval="200" rows="1" UID="TBU_0001">
<Revision MajorVersion="16" MinorVersion="2" UserVersion="1" />
<Alias>Toolbar1</Alias>
<Name xlate="true" UID="XLS_0001">Risovanie</Name>
<ToolbarButton IsSeparator="false" UID="TBBU_0032">
<Revision MajorVersion="16" MinorVersion="2" UserVersion="1" />
<Name xlate="true" UID="XLS_1783">сварные швы</Name>
<MenuItem>
<MacroRef MenuMacroID="MMU_0001" />
</MenuItem>
</ToolbarButton>
И больше их нет. ЯТД, это просто аналог ID в mnu-файле. А вот XLS_* и TBBU_* отдельно посмотрим (но потом).
Меняем MNU_0001, допустим, по правилам таким:
Код
ID_<Author>_<Doing>
То есть сначала ставим ID_, потом имя автора меню (ssn), затем чего кнопарь делает. Получим, например:
Код
ID_SSN_WELD_SEAM_POS
Судя по всему (я просто, если честно, все время пишу mnu-файл, и с cui стараюсь без особой нужды не связываться - кто его знает, чего я там порушу своими экспериментами;)), XLS_* - это указатель на владельца (toolbar) кнопки. Для чего и кем используется TBBU_*, не очень понятно - прямого повтора я не нашел. Но, поскольку оно тоже нумеруется, можно и ему сделать уникальный ID:
Код
TBBU_SsM_WELD_SEAM_POS
Можно попробовать сделать mnu-файлик и его конвертнуть. А потом в нем поковыряться.
К примеру, такой:
Код
//
// AutoCAD menu file
//
***MENUGROUP=kpblc-CAD
***TOOLBARS
**KPBLC-CAD_ОБЩИЕ
**TB_KPBLC-CAD_ОБЩИЕ
**TB_CADWARE_ОБЩИЕ
[_Toolbar("CADWare Общие", _Bottom, _Show, 1, 1, 1)]
ID_CADWARE_WHE_orderup [_Button("Перенос объекта на самый верх", "16_order", "32_order")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (kpblc-layer-front nil));cadware;
ID_CADWARE_WHE_TubeMark [_Button("Обозначение трубопровода", "16_tube", "32_tube")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-block-insert-tube-mark));cadware;
ID_CADWARE_WHE_TubeCross [_Button("Визуальное перекрестие труб", "16_tubecover", "32_tubecover")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-block-insert-tube-cutter));cadware;
[--]
ID_CADWARE_WHE_UKLON [_Button("Обозначение уклона", "16_gradient", "32_gradient")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (kpblc-insert-gradient));cadware;
ID_CADWARE_COMMON_Level [_Button("Отметка", "16_level", "32_level")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (kpblc-block-level-insert nil));cadware;
ID_CADWARE_COMMON_LEVEL_PLAN [_Button("Отметка, план", "16_level_plan", "16_level_plan")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (kpblc-block-level-insert t));cadware;
**KPBLC-CADC_МАСШТАБЫ
**TB_KPBLC-CADC_МАСШТАБЫ
**TB_CADWARE_МАСШТАБЫ
[_Toolbar("CADWare Масштабы", _Bottom, _Show, 4, 1, 1)]
ID_CADWARE_SCALE_1 [_Button("1:1", "16_SC_1_001", "ICON_16_BLANK")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 1) (princ));cadware;
ID_CADWARE_SCALE_5 [_Button("1:5", "16_SC_1_005", "ICON_16_BLANK")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 5) (princ));cadware;
ID_CADWARE_SCALE_10 [_Button("1:10", "16_SC_1_010", "ICON_16_BLANK")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 10) (princ));cadware;
ID_CADWARE_SCALE_25 [_Button("1:25", "16_SC_1_025", "ICON_16_BLANK")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 25) (princ));cadware;
ID_CADWARE_SCALE_50 [_Button("1:50", "16_sc_1_050", "ICON_16_BLANK")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 50) (princ));cadware;
ID_CADWARE_SCALE_100 [_Button("1:100", "16_sc_1_100", "ICON_16_BLANK")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 100) (princ));cadware;
ID_CADWARE_SCALE_200 [_Button("1:200", "16_sc_1_200", "ICON_16_BLANK")]^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 200) (princ));cadware;
преобразовывается в аттач.
Смотрим и анализируем. Например, ID_CADWARE_SCALE_100 :
Код
<MenuMacro UID="ID_CADWARE_SCALE_100">
<Macro type="Any">
<Revision MajorVersion="16" MinorVersion="2" UserVersion="1" />
<Name xlate="true" UID="XLS_0025">1:100</Name>
<Command>^C^C^P(defun c:cadware() (if (not *kpblc-activedoc*) (kpblc-loader)) (_kpblc-scale-set 100) (princ));cadware; </Command>
<SmallImage Name="16_sc_1_100" />
<LargeImage Name="ICON_16_BLANK" />
</Macro>
</MenuMacro>
Промежуток нам сейчас неинтересен, идем дальше.
Код
<ToolbarButton IsSeparator="false" UID="TBBU_0013">
<Revision MajorVersion="16" MinorVersion="2" UserVersion="1" />
<Name xlate="true" UID="XLS_0026">1:100</Name>
<MenuItem>
<MacroRef MenuMacroID="ID_CADWARE_SCALE_100" />
</MenuItem>
</ToolbarButton>
Как видно, XLS_* и TBBU_* приняли значения по умолчанию, а вот MenuMacro UID приняло те значения, которые прописаны были в mnu. При этом конвертация проводилась в 2006 и 2007, результаты лично у меня получились аналогичные (цифры только менялись и все). Добавление / удаление кнопок проблем (пока?) не вызывало.