Игры с CUI - Страница 5
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Игры с CUI

Игры с CUI

Ответ
Поиск в этой теме
Непрочитано 29.03.2008, 05:09
Игры с CUI
Vova
 
Engineer
 
New-York
Регистрация: 05.09.2003
Сообщений: 10,288

2008.
Свое меню можно загрузить как внутри диалогового окна CUI так и командой CUIload. А вот выгрузить меню этой командой нельзя. Странно. Окно, так сказать, гребет под себя и обратно не пущает. Я решил, это потому, что в нем нет кнопки ОК.
Пишите сюда, если удалось накопать чего-нибудь полезного или бесполезного про это го CUI.
Просмотров: 77340
 
Непрочитано 18.05.2008, 19:54
#81
BarbiЁ

блондинка
 
Регистрация: 27.11.2007
Планета Плюк 215 в центуре, галактика Кин-Дза-Дза
Сообщений: 25


Продолжение бреда сивой блондинки.

А теперь, специально для отцов, упорно держащихся за MNU, привожу преимущества CUI. "Оно конешно, ране лучше было, привышнее, а теперича, тудыть ее в качель, напридумывали". Я тоже MNU еще с Автокад-10 редактировала и привыкла.
Но давайте разберемся.

1. В MNU-файле была "рыхлая", но в то же время "жесткая" структура. Фиксированные имена разделов и фактически невозможно добавить что-то в будущем.

XML позволяет создавать древовидную структуру и открыт для расширения. Конечно, ветеранам это не надо, но расширения-то интерфейса появляются. Вот рабочие пространства ввели, Пульт управления, потом еще что-то будет.

2. Обычно редактирование MNU сводилось к созданию или изменению новых пунктоф меню и кнопок с макросами. Написал макрос, вставляем куда-нибудь пункт меню в один из разделов ***POP*. Потом в раздел ***TOOLBARS снова тот же макрос прописать. А в ***HELPSTRINGS надо подсказку написать. Может быть еще и в ***SCREEN макрос надо, и в ***IMAGE.

Если же макрос (команда) изменился, то надо его изменить в нескольких местах. Это накладно и чревато ошибками. У нас в ruCAD, например, одни и те же команды встречаются в нескольких местах, для разных разделов проектов. Неизбежно возникали ошибки - где-то изменили, а где-то забыли.

В CUI-файле макрос описывается только один раз! Все макросы описаны в одном месте. Описали в элементе MacroGroup, а во все другие места (Toolbars, меню, и еще хоть куда, прописываются только ссылки.

Синтаксис макроса в CUI более понятен. Знать бы еще точно значения непонятных атрибутов.

Код:
[Выделить все]
      <MenuMacro UID="ALERT_2">
        <Macro type="Any">
          <Name xlate="true" UID="XLS_002">Сообщение-2</Name>
          <Command>^C^C^P(alert "Это мое сообщение") </Command>
          <HelpString xlate="true" UID="XLS_0019">Вывод диалогового окна для пробы</HelpString>
          <SmallImage Name="002.BMP" />
          <LargeImage Name="003.BMP" />
        </Macro>
      </MenuMacro>
Этот макрос я написала один раз. Теперь я его могу вставить в меню (причем несколько раз в разные места в виде)

Код:
[Выделить все]
          <PopMenuItem IsSeparator="false" hasDiesel="false" UID="PMI_02_">
            <NameRef UID="XLS_005" xlate="false">Сообщение-2 в меню</NameRef>
            <MenuItem>
              <MacroRef MenuMacroID="ALERT_2" />
            </MenuItem>
          </PopMenuItem>
Здесь главное - сылка на UID макроса. Элемент <MacroRef MenuMacroID="ALERT_2" /> говорит, чтобы в это место был вставлен макрос с UID="ALERT_2".

То же самое, если надо кнопку вставить:

Код:
[Выделить все]
          <ToolbarButton IsSeparator="false" UID="TBBU_0002">
            <Name xlate="true" UID="XLS_007">Сообщение-2 на кнопке</Name>
            <MenuItem>
              <MacroRef MenuMacroID="ALERT_2" />
            </MenuItem>
          </ToolbarButton>
3. Рабочие пространства в MNU не опишешь. А вещь-то очень хорошая! Мы в ruCAD с этим давно столкнулись - есть единая система, в которой
работают разные специалисты: топографы, генпланисты, АС, ОВ, ВК, ГАЗ и прочие. У всех много своих пунктов меню. Да еще квалификация разная. Да еще кто работает только в модели, кто в 2D, а кто и все возможности использует.

Если собрать все в одно меню, получается слишком сложно. Вот и пришлось выдумывать набор "комплектов", которым можно управлять. А с появлением рабочих пространств можно все привязать к ним и легко переключаться стандартными действиями. В MNU этого не опишешь.

4. "Частичный" (по терминологии русского Автокада) файл CUI.
Загрузка описана с CUI так:

Код:
[Выделить все]
    <CommonConfiguration>
      <CommonItems>
        <ModifiedRev MajorVersion="17" MinorVersion="1" UserVersion="1" />
        <PartialMenuFile>rucad-3d.cui</PartialMenuFile>
      </CommonItems>
    </CommonConfiguration>
Опосля включения PartialMenuFile его содержимое становится доступно. Пункты этого меню можно включать в рабочее пространство.
Но, к сожалению, не получается просто отдельные пункты PartialMenu включить по ссылке - в редакторе CUI надо предварительно перетащить отдельные пункты меню в основной CUI, а потом только делать их доступными в рабочем пространстве. Но тогда макросы из PartialMenuFile будут продублированы в элементе MacroGroup. Это не есть хорошо.

Но можно в рабочее пространство включать разделы из PartialMenu в описание рабочего пространства. Вот это и дает хорошие возможности.
Ранее в ruCAD (для совместимости с ранними версиями AutoCAD) мы рабочие пространства не использовали. Приходилось программным путем формировать набор пунктов меню и различные виды интерфейса. Теперь мы окончательно перешли на работу с AutoCAD не древнее 2006 и это дает возможность сделать необходимое количество тематических PartialMenu, подгружать их в основной CUI и использовать рабочие пространства.

В PartialMenu могут находиться специальные пункты, например, какая-то технология. Такие меню вместе с прочими компонентами (программы, библиотеки блоков и прочее) могут поставляться в виде отдельных инсталляций. Не установлен определенный комплект - просто нет и пунктов меню. К счастью, если AutoCAD не находит PartialMenu, описанное в CUI-файле, загрузка не прерывается и не выводится никаких сообщений. Но в CUI-редакторе отсутствующие PartialMenu видны. И это даже хорошо

В результате основной CUI-файл может быть простым и коротким и состоять из одних конфигураций рабочих пространств.

Теперь по поводу картинок для панелей. Вообще-то, когда у нас было одно меню, картинки мы хранили в DLL. Как-то это кошернее было, чем отдельные BMP-файлы. Но если делать несколько CUI-файлов, то надо иметь одноименные DLL. Пока мы обходились тем, что просто копировали DLL под соответствующими именами. Это уже нехорошо.
Делать много DLL как-то неохота. Процедура несложная, но занудная. Картинки все равно надо рисовать, потом формировать ресурс, компилировать и прочее.

Что-то мне кажется, что надо вернуться к отдельным BMP. Все равно они потом все собираются в откомпилированный файл ресурсов MNR. А вот для замены ссылок в CUI-файле с

Код:
[Выделить все]
          <SmallImage Name="002_16" />
          <LargeImage Name="003_24" />
на

Код:
[Выделить все]
          <SmallImage Name="002_16.BMP" />
          <LargeImage Name="003_24.BMP" />
как раз и пригодится обычный текстовый редактор. Ну, в самом деле, не делать же 377 раз кучу щелчков мышкой в гуёвом CUI-диалоге для замены сылок на картинки?

Продолжение следует. Доберемся и до описания элементов и атрибутов.
__________________
Ох, как иногда хочется подумать!
BarbiЁ вне форума  
 
Непрочитано 18.05.2008, 20:12
#82
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Цитата:
Что-то мне кажется, что надо вернуться к отдельным BMP.
Вот и мне так кажется. Было время, когда я вообще свои пиктограммы запихивал в acadbtn.xmx, потом одумался.
Profan вне форума  
 
Непрочитано 28.05.2008, 13:51
#83
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


BarbiЁ,исследование конечно мощное и фундаментальное. Инфа очень ценная и думаю что вряд ли в где либо можно найти более подробное описание формата CUI. За это спасибо. Но всё же ,как мне кажется, эта информация несёт чисто академический характер. Я всё равно не понимаю, зачем писать CUI вручную, а не генерировать его с помощью диалогового окна настройки интерфейса пользователя?
BarbiЁ, скажи, какие в итоге преимущества ручное написание и редактирование дают перед пользовательским подходом настройки интерфейса в самом Автокаде?

Ситуация мне видится так.
Раньше все нормальные люди писали свой MNU, ну или как минимум редактировали MNS. Тогда были на это веские причины, потому что в стандартном окне настройки в Автокаде нельзя было добавить ни пункты меню, ни графические меню, ни экранное меню, ни контекстные и т.д. Можно было только делать кнопки, тулбары, флайоуты и назначать комбинации клавиш. Да и то, сделав кнопку с картинкой, оставалось только гадать, куда Автокад её (картинку) сохранил и под каким именем? Без конкретной ручной правки MNS было просто не обойтись.
Вот так дело и обстояло. Может я подзабыл некоторые нюансы, но в целом тенденция была такая.
Сейчас же всё это можно сделать в окне настройки интерфейса пользователя, не прибегая к ручному редактированию. Недостатки конечно есть. Это тормоза при вызове окна настройки, да и в принципе сама реализация этого окна. Но всё же ИМХО это несравнимо быстрее, чем писать, или даже редактировать CUI вручную.
Makswell вне форума  
 
Непрочитано 28.05.2008, 15:36
#84
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


BarbiЁ тут опубликовала только часть своих исследований. Полностью наберется еще постов на 20. Но все публиковать, наверное, не стоит. Тем более, что она в отпуск ушла.

Что касается CUI-диалога (гуёвого, по еёной классификации), то в AutoCAD 2008 он стал вполне работоспособным. Без него, конечно, не обойтись. В формате многое недокументировано, просто так не напишешь.

Но и только диалога мало. Если надо добавить несколько своих "кнопок" с командами, создать панельки, меню, пульт управления - это всё прекрасно можно сделать в диалоге. А вот если команд побольше (сегодня внес в CUI-файл команду #8504), то здесь приходится вручную. Это гораздо быстрее. Да и не все в диалоге отображается. Например, список команд линейный. Работать с ним тяжело. Предусмотрена фильтрация только по AcadCommands, ExpressCommands, CustomCommands и Controls. Да и то, если это не штатный файл, все окажется в Custom. А на самом деле, в CUI-файле для команд можно создать сколько угодно групп - в элементах MacroGroup.

CUI-редактор Автокада их не видит, а вот в Notepad++ MacroGgroup превосходно сворачиваются, что позволяет очень удобно двигаться по структуре. На рисунке показана одна развернутая группа и много свернутых, отображаемых одной строчкой.

А присоединение иконок к команде? Попробуйте-ка в диалоге много раз их подключить из файла. Мышка сломается, да и к тому же картинки могут прописаться с абсолютными путями. Вытравить это можно легко в Notepad++.

А еще штатная команда имеет привычку оставлять мусор. Команду в диалоге удалили, а в файле она может остаться. Если же сам диалог попортит структуру, то и загрузить файл не сможет. Тут нужно хирургическое вмешательство, а для этого надо знать структуру CUI-файла.

В общем, и одним CUI-редактором не обойтись, и одним Блокнотом - то же.
Миниатюры
Нажмите на изображение для увеличения
Название: notepad_cui.jpg
Просмотров: 231
Размер:	72.7 Кб
ID:	6886  

Последний раз редактировалось ShaggyDoc, 28.05.2008 в 15:41. Причина: Забыл приложить картинку
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 28.05.2008, 20:16
#85
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
А присоединение иконок к команде? Попробуйте-ка в диалоге много раз их подключить из файла. Мышка сломается.
Жмешь на команду, затем на Small image, затем на три точечки и открывается окно со списком заранее приготовленных иконок (если, конечно, это не первая процедура такого рода. Первый заход к списку икон на пару кликов дольше). Далее щелчек по иконе и усе.
Vova вне форума  
 
Непрочитано 28.05.2008, 20:26
#86
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


И каждый раз надо урезать полный путь к файлу пиктограммы до одного только имени.
Profan вне форума  
 
Автор темы   Непрочитано 28.05.2008, 21:01
#87
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Цитата:
Сообщение от Profan Посмотреть сообщение
И каждый раз надо урезать полный путь к файлу пиктограммы до одного только имени.
Why? I don't do that
Vova вне форума  
 
Непрочитано 28.05.2008, 22:25
#88
proekt_mep

(ГС, ТМ, ОВ)
 
Регистрация: 14.03.2008
Харьков
Сообщений: 101


Vova!
Огромное Вам спасибо за статью.
Для меня Ваша статья - познавательна и интересна. Изложена (статья) на доступном, нет - внятном языке (все ясно, понятно и не размазано). У Вас талант.
И если можно - не останавливайтесь на достигнутом - пишите еще.
proekt_mep вне форума  
 
Непрочитано 29.05.2008, 08:38
#89
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Цитата:
Сообщение от Vova Посмотреть сообщение
Why? I don't do that
Как Why? Если стоит полный путь, система теряет гибкость. Если стоит только одно имя, то путь к иконкам прописывается один раз (Настройка/Файлы/Файлы настройки/Папка для вспомогательных значков) и всё. Если вдруг папку с иконками по каким-либо причинам надо переместить или переименовать, то для получения рабочей системы достаточно только изменить этот путь в окне настройки. Ну или лиспом например:
Код:
[Выделить все]
(vla-put-CustomIconPath
  (vla-get-Files (vla-get-Preferences (vlax-get-acad-object)))
  "D:\\New_Path\\Icon"
)
Одно движение руки!
А если путь полный, то придется менять его для каждой команды, т.е. n-ое количество раз.
Makswell вне форума  
 
Непрочитано 29.05.2008, 08:49
#90
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Makswell совершенно правильно написал.
Profan вне форума  
 
Непрочитано 29.05.2008, 09:38
#91
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Вписывание полных путей картинок - как раз один из глюков диалога. Причем результаты, если быть невнимательным, можно обнаружить только если CUI-файл переедет не на такое место, как у автора. И обнаружить это в самом диалоге очень трудно - надо внимательно присматриваться.

Более того, если просто в поле убрать полный путь вручную, то диалог может всё равно оставить в CUI-файле полный путь. Вот здесь и поможет текстовый редактор. Уж на что мы всегда внимательно смотрим за этим делом, но все равно иногда выявляются козни диалога.

По идее, если уж есть кнопка для выбора файлов, то навигация должна быть ограничена путями поиска, а в результат заносить только короткое имя.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 31.05.2008, 15:40
#92
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


1. У меня папка с картинками много автокадов подряд находится в одном и том же месте, поэтому я не озаботился вопросом гибкости. Придется подкорректировать текст в статье. Удалять путь, оставив только имя файла иконы, несколько морочней, но это мелочь для пользователя, только-что сделавшего очередную самодельную кнопку. Он их скорее всего делает в час по чайной ложке. Штуку в месяц. Ручное написание меню будет недоступно рядовым пользователям, а только либо сильно продвинутым (для себя) или CAD-manager-ам для которых обслуживание десятков пользователей это их хлеб.
2.
Цитата:
Сообщение от Proekt_mep
Vova!
Огромное Вам спасибо за статью.
Для меня Ваша статья - познавательна и интересна. Изложена (статья) на доступном, нет - внятном языке (все ясно, понятно и не размазано).
Спасибо за твой пост. А сам ты только прочитал, или сделал меню?
Vova вне форума  
 
Непрочитано 03.06.2008, 04:59
#93
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,536
<phrase 1= Отправить сообщение для wetr с помощью Skype™


to Vova! Присоединяюсь к proekt_mep. Спасибо большое за статью. Все по полочкам. От себя отвечу - прочитал, попробовал и ... о, ужас! сколько времени можно было съэкономить, сделай я все сразу по-человечески!
Offtop: Кстати, мне показалось, что во 2 части статьи, в п.7.
"(не забудьте сохранить свою работу нажатием кнопки ОК)" всместо "OK" надо "Apply"
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Автор темы   Непрочитано 03.06.2008, 07:06
#94
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Окончательный (на сегодняшний день) вариант представлен здесь http://dwg.ru/art/2 Если будет обнаружено что-либо, требующее исправления или дополнения, подправим. Мне как автору хотелось бы иметь отзывы от тех, кто не только прочитал, а сам сделал себе меню.
Offtop: Wetr> ОК включает в себя Apply. Apply жмут если надо сохранить что-то одно, затем другое, затем третье и затем окончательно ОК. Имхо
Vova вне форума  
 
Непрочитано 04.06.2008, 14:14
#95
Ddjo

архитектор
 
Регистрация: 01.04.2008
СПб
Сообщений: 296


Vova,
Статья весьма хороша, все действия описаны довольно подробно, на мой взгляд, даже не зная автокада вполне можно сделать свое собственное меню. Большое спасибо, за работу.
Правда, мне и до этого приходилось создавать свои панели инструментов (из существующих), но вот с новыми командами, дело иметь не приходилось.
Мое меню было выполнено строго по Вашей статье, заняло 10 мин.
Другое дело, что у меня макрос :
Цитата:
• Макрос, позволяющий поворачивать объекты на заданный угол один за другим
• *^C^C_ROTATE;\\;\90
не хочет поворачивать на 90 ( и вообще на сколько-нибудь) градусов автоматически, а просит ввести угол)))
Миниатюры
Нажмите на изображение для увеличения
Название: 11.jpg
Просмотров: 162
Размер:	69.4 Кб
ID:	7143  Нажмите на изображение для увеличения
Название: 12.jpg
Просмотров: 132
Размер:	2.3 Кб
ID:	7144  
Ddjo вне форума  
 
Непрочитано 05.06.2008, 03:08
#96
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Vova, статья, действительно, написана очень понятно и об основном, без воды. Своим умением с легкостью создавать кнопки (их у меня уже порядка 50-ти) я обязан именно Вам, дай Бог Вам здоровья и близким Вашим. Когда я начинал изучать АвтоКАД (немногим менее года назад), одной из первых была Ваша статья. Она вызвала во мне глубокий интерес. И меня сейчас греет мысль, что я пишу ее автору(!). Я узнал, что есть целая книга об этом, видел на форуме ее обсуждение....Скачал отсюда версию в djvu, но, по-моему, это все баловство. Если есть еще возможность ее купить, дайте пожалуйста знать, все-таки, книга есть книга.......
Имею мысли по поводу дополнения статьи.
1. Можно добавить описание возможности делать выпадающие кнопки, путем добавления Панели в Панель (это я сам смекнул, но наверняка Вы знаете). Очень экономит место и удобно группировать по функциям. Прошу прощения, если повторюсь, не хватило сил прочитать всю ветку.
2. Не помешало бы добавить описание создания кнопок с макросами для запуска функций на лиспе, например:
Код:
[Выделить все]
^C^C(if(null C:команда)(Load "команда.lsp"))команда;
и с возможностью автоматического ввода запрашиваемых лиспом действий. Если кому надо, кстати, могу поделиться иконками для многих лиспов с этого сайта и с caduser.ru.
3. Очень полезен на мой взгляд макрос зацикивания Break at point (Разорвать в точке):
Код:
[Выделить все]
*^C^C_break;\_f;\@
а также макрос для соединения отрезков в точке пересечения:
Код:
[Выделить все]
'_filletrad 0 _fillet
Можно их добавить в качестве учебных примеров, которые будут очень useful. Можно вообще их побольше добавить и поразнее, для закрепления
4. В списке спец. символов не хватает ^P. Я и сам забыл, что это такое
5. Нашел опечатку в слове Prifile, видимо, Вы имели в виду Profile. (Не забудьте, что в браузере есть поиск, на всякий пожарный)
6. Но даже если ничего этого не делать, полезной информации там полно
Еще хотелось бы узнать, существует ли возможность вызывать панель в центр экрана комбинацией клавиш? И если существует, то тоже может быть интересна Вашим читателям. И не планируется ли выход новой версии "Языка макрокоманд....."?

Последний раз редактировалось skkkk, 05.06.2008 в 03:38. Причина: Дополнения
skkkk вне форума  
 
Непрочитано 06.06.2008, 19:15
#97
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Столкнулся с такой проблемой. Решил перенести некоторые собственноручно созданные панели на другой комп. Через НПИ-перенос создал новый .CUI-файл, открыл его на компе-приемнике, перетащил панели. Скопировал папку с иконами, прописал ее в путях доступа (причем вставил в то же место, что и у меня, на всякий случай), и вместо иконок увидел симпатичные такие вопросикее Пришлось вручную все иконки переопределять. Кто знает, в чем затык?
skkkk вне форума  
 
Непрочитано 06.06.2008, 19:23
#98
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Попробуйте удалить файл acad.mnr.
Profan вне форума  
 
Непрочитано 06.06.2008, 19:55
#99
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Profan, попробовал сейчас специально, хоть уже все сделал(), не помогло, все равно вопросики. При перезапуске КАДа этот файл появился, а иконки - нет. Но все пояснительные надписи есть, и лиспы все работают, то есть макросы перенеслись адекватно. Я в недоумении
skkkk вне форума  
 
Автор темы   Непрочитано 06.06.2008, 20:22
#100
Vova

Engineer
 
Регистрация: 05.09.2003
New-York
Сообщений: 10,288


Может ответ в н-р 89?
Vova вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Игры с CUI



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игры в AutoCAD Red Nova AutoCAD 11 30.07.2015 22:46
Из CUI в MNU nikolaev AutoCAD 14 20.08.2009 14:20
CUI – не могу адаптироваться. mmax AutoCAD 15 07.08.2007 10:11
CUI - Структура и редактирование Никита В. AutoCAD 13 28.02.2006 00:37
Как пользовать Enterprize CUI ???????? Startrek AutoCAD 8 23.09.2005 17:23