создать файл АПИ (cui) со своей лентой и подгружать его. На мой взгляд самый плохой и проблемный вариант. ИМХОА на мой взгляд - это самый простой и целесообразный вариант. Вот (http://bushman-andrey.blogspot.ru/2013/08/dll-partial-cui.html) глянь.
А на мой взгляд - это самый простой и целесообразный вариант. Вот глянь.Изучил. Но там скорее подспорье для того, чтоб создать ленту другим способом и подробное описание настроек, но ни одной строчки кода. Название говорит само за себя "Создание DLL файла ресурсов для Partial CUI файла", об этом пока речь не идет. Моя задача гораздо скромнее: "Занести в значение переменной vb.net информацию объекта типа "icon.png", который изначально хранится на жестком диске, но так чтоб он остался в сборке .dll "
В качестве первой программы я для себя выбрал "Создание собственной вкладки на ленте".Возможно я тебя не верно понял, а понял я тебя сначала так: мол тебе нужно, наиболее простым и быстрым способом [не важно каким], создать для своего плагина файл меню с лентами, "туллбарами", "палетками" и т.д. который будет подгружаться в AutoCAD. Это легко и быстро делается при помощи "родного" визуального инструмента (т.н. "батоно-кидательство"), имеющегося в AutoCAD (присутствует на скринах в моей заметке) без какого-либо программирования. На выходе, всего за пару-тройку минут работы, получаем файл CUI или CUIX (зависит от версии AutoCAD). Моя заметка предполагает, что читатель знаком с этим "родным" функционалом AutoCAD, а если нет, то в состоянии нажать F1 и прочитать об этом в справке AutoCAD.
Но там скорее подспорье для того, чтоб создать ленту другим способом и подробное описание настроек, но ни одной строчки кода.Нет, это подспорье на тему того, как все ресурсы, необходимые CUI файлу запихнуть в один DLL, вместо того, чтобы держать рядом кучу bmp и прочих картинок.
New Uri("pack://application:,,,/ACadRibbon;component/" + ImageName + ".png")Ошибка в этой строке, т.к. неправильно задан путь. В моем примере картинки лежали в корневом каталоге, а у вас в папке Resources...
Modis, Прекрасная статья!Тогда плюсуй мне карму ;D ;D ;D
С наскока от VBA сразу на C# оказалось сложновато, пока решил подняться на промежуточную ступеньку vb.netЯ это проходил - тоже сначала на VB.Net пробовал. Результат один - потеря времени ))
Это легко и быстро делается при помощи "родного" визуального инструмента (т.н. "батоно-кидательство"), имеющегося в AutoCAD (присутствует на скринах в моей заметке) без какого-либо программирования.Все верно. И мне эта тема неплохо знакома (как пример, прикрепляю старый скрин ленты). Но для среднестатистического пользователя это темный лес. А должно быть так.. я отправляю .dll-файл стороннему пользователю и при загрузке через "netload" все панели и кнопки создаются сами, все готово к работе.
Немного не понимаю, чем же этот способ вы сочли неэффективным, код составляет с десяток строк, а функционал что надо!Я не писал, что он "неэффективен". Я писал, что создать меню "родными" средствами акада будет быстрее и проще, если знаком с родным, акадовским дизайнером меню. Во всяком случае мне это проще и видится более удобным способом.
Но для среднестатистического пользователя это темный лес.У тебя какое-то невесёлое мнение о "среднестатестическом пользователе". :) Тёмный лес это только для деревянного пользователя. Почти все мои юзеры (около 300 человек) знают как загружать менюшки.
А должно быть так.. я отправляю .dll-файл стороннему пользователю и при загрузке через "netload" все панели и кнопки создаются сами, все готово к работе.Ты легко можешь сделать так, что в твоём коде загрузка (http://through-the-interface.typepad.com/through_the_interface/2006/11/loading_a_parti.html) твоей менюшки будет выполняться автоматически, при загрузке твоей DLL.
Хотя наверное это зависит ситуацииНапример от такой: AutoCAD 2009 не умеет работать с CUIX. Именно эта версия акада используется в нашей организации. Я указывал на это в заметке, на которую давал ссылку.
Не только. У меня, например, надстройка (ну мой ModPlus) сделана в виде плагиного приложения - функции подключаются/отключаются. Поэтому обойтись одним файлом cui(x) не получится... А файлы иконок так вообще хранятся в самих подключаемых функцияхХотя наверное это зависит ситуацииНапример от такой: AutoCAD 2009 не умеет работать с CUIX. Именно эта версия акада используется в нашей организации. Я указывал на это в заметке, на которую давал ссылку.
У вас проект называется ну никак не art_Ribbon ;)Спасибо за бесценные советы. Но переименование к результату не привело. Может быть у кого-то есть возможность мой код у себя для теста запустить?
Может быть у кого-то есть возможность мой код у себя для теста запустить?Так вы не картинку прикладывайте, а архив с проектом...
Может быть у кого-то есть возможность мой код у себя для теста запустить?Ну дык - давай проект)
А на мой взгляд - это самый простойНе соглашусь, в этом варианте тоже есть много неочевидных сложностей. Как раз недавно плотно работал с этими CUIX. Была мысль, что если бы я программно формировал ленту, было бы гораздо легче справиться с некоторыми проблемами.
и целесообразный вариант.А вот тут обеими руками "за" :)
Я не очень опытен и мне казалось, что текстового кода из поста №1 достаточно. Теперь понял, что был не прав :) Вот архив.А самого файла art_Ribbon.vb и нету.... :)
Была мысль, что если бы я программно формировал ленту, было бы гораздо легче справиться с некоторыми проблемами.А поконкретней? :) Насколько я понимаю, автору не требуется, чтобы кнопочки играли в футбол и бегали за пивом.
Так а чем, если не секрет, всё же не устроил вариант создания менюшки вручную с последующей её автоматической подгрузкой при загрузке DLL в AutoCAD? Я как-то пока не увидел в данной теме объективных причин для отказа от такого способа решения... За то время, что ты потратил на данную тему (пытаясь сделать это программно), уже можно было раз 10 решить это обозначенным мною способом (и это вместе с "попить кофе").Начну из далека. Перед началом написания кода, читал много литературы/статей и форумов. Ближе к делу смотрел конкретные примеры по программному созданию элементов ленты, вникал в матчасть, запоминал как называются элементы, компилировал и запускал чужие коды на С# (в котором понимаю только интуитивно, так что исправления вносил методом тыка). Вникал архитектуру классов с подобным функционалом. Наконец, на основе полученной информации написал свою процедуру, но споткнулся в одном незначительном моменте, который я думал подскажут буквально одним двумя постами (кто бы мог подумать, что тут холивар на пол дня разгорится :) ). В общем я тут почти осилил первый этап, а тут Вы мне говорите, что все не так, нужно в корне поменять подход. Конечно мне хочется сначала все закончить, а уже потом смотреть по сторонам. Это вам, зная плюсы и минусы, можно с высока рассуждать как лучше. У меня пока задачи разобраться с синтаксисом и т.п.
Напоминаю. Как нужно форматировать код для форума указано у меня в подписи.Прошу прощения, я новичек на форуме. Предательски сбила с толку кнопка "код". Теперь буду форматировать как надо.
Вот так нужно строку было написатьСупер! Буду сейчас пробовать и уверен, что все получится!