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

ADN Club => AutoCAD .NET API => Тема начата: Ese от 24-04-2018, 16:42:16

Название: Ошибки при переносе проекта с 2008 на 2014
Отправлено: Ese от 24-04-2018, 16:42:16
Пытаюсь адаптировать пример cui из sdk2008, Visual studio  при замене сборок автокада подчеркивает отсутствующие свойства:

Код - C# [Выбрать]
  1. Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; // DocumentManager
  2.  
  3. string mainCuiFile = (string)Application.GetSystemVariable("MENUNAME"); // GetSystemVariable

... и почему-то подчеркивает атрибуты:
Код - C# [Выбрать]
  1. [CommandMethod("savecui")]
  2. [LispFunction("savecui")]

Пытался сам найти  DocumentManager через Object browser, но он отсутсвует в 2014 сборках
Только начинаю разбираться с API, спасибо.
Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: avc от 24-04-2018, 16:58:42
Проверьте наличие using Autodesk.AutoCAD.ApplicationServices;
А в ссылках проекта acmgd
Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: Ese от 24-04-2018, 17:04:32
Проверьте наличие using Autodesk.AutoCAD.ApplicationServices;
А в ссылках проекта acmgd
Добавлена ссылка. Autodesk.AutoCAD.ApplicationServices.Application он видит а дальше нет (DocumentManager не видит).

Когда подключаю с 2008 те же сборки то все без ошибок
Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: Александр Ривилис от 24-04-2018, 17:06:09
Ese
1. Прочитай у меня в подписи о форматировании кода у нас на форуме и соблюдай это правило!
2. В  AutoCAD 2014 и дальше (точнее начиная с AutoCAD 2013) необходимо подключать три сборки:
acdbmgd.dll
accoremgd.dll
acmgd.dll
Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: avc от 24-04-2018, 17:07:50
Наверняка ссылки на accoremgd.dll  не хватет
Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: Ese от 24-04-2018, 17:53:00
1. Прочитай у меня в подписи о форматировании кода у нас на форуме и соблюдай это правило!
Хорошо, прочитаю

2. В  AutoCAD 2014 и дальше (точнее начиная с AutoCAD 2013) необходимо подключать три сборки:
acdbmgd.dll
accoremgd.dll
acmgd.dll

Это помогло. Спасибо.  (avc, тоже спасибо)

Теперь это подсвечивает:

Код - C# [Выбрать]
  1.  WorkspacePanel wsPan = new WorkspacePanel(newWs, newPan);

AcCui.dll подключено

Добавил
Код - C# [Выбрать]
  1. using Autodesk.AutoCAD.Customization;
Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: Александр Ривилис от 24-04-2018, 19:07:55
А этот класс упразднили. И вообще в AutoCAD 2009 появилась Лента (Ribbon). Так что структура CUIx изменилась и соответственно и структура AcCui.dll изменилась. Осталось понять что именно ты собираешься делать и как это можно осуществить в AutoCAD 2014 и новее...
Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: Александр Ривилис от 24-04-2018, 19:48:18
На всякий случай уточняю, что этот класс был только для "внутреннего использования":

(https://farm1.staticflickr.com/959/40963790654_ef0804a487_o.png)

И уже в AutoCAD 2009 его не стало...

Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: Ese от 25-04-2018, 10:01:30
Осталось понять что именно ты собираешься делать и как это можно осуществить в AutoCAD 2014 и новее...

1) Хочу сделать, чтобы когда включено рабочее пространство Классический автокад, создавались Toolbar. Когда Ribbon, тогда Ribbon.  Про то как создавать Ribbon статью нашел, как Toolbar пытаюсь разобраться.

2) Не по теме вопрос, а как можно определить какое из Cui включено (и соответственно что подгружать).

3) А в версиях выше 2014 классическое Cui c toolbar`ами есть?   
Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: avc от 25-04-2018, 10:53:08
Мое сугубо личное мнение, что колдовать со всеми этими панелями в программе - это зло. API неполноценные, без CUIX-файлов все равно не обойтись. Так и зачем мучится? Пишите свой CUIX в котором и меню, и панели, и ленты. Ненужное пользователь сам выключит - делов-то - крестик кликнуть. Классического ворк-спейса в Автокаде давно нет. Но включить руками меню и тулбары - секундное дело. Большинство по прежнему включают, потому что ленту настраивать гораздо муторнее. Так что менюшки в комплекте с плагином по прежнему нужны.
Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: Александр Ривилис от 25-04-2018, 11:40:39
2) Не по теме вопрос, а как можно определить какое из Cui включено (и соответственно что подгружать).
В основном CUIx есть ссылки на те, которые подгружены: CustomizationSection.PartialCuiFiles
P.S.: Полностью согласен с avc - не следует программно генерировать CUIx. Если можно подготовить файл "вручную", то это и следует делать.
Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: avc от 25-04-2018, 11:52:58
насчет программной загрузки файлов кастомизации и проверки какие уже подключены: вот примерчик кода который я использую:
Код - C# [Выбрать]
  1.     /// <summary>
  2.     /// загрузка CUIX если его еще нет в загруженных. проверяет обновление файла
  3.     /// </summary>
  4.     public static void LoadMenu(string path, string name)
  5.     {
  6.       try
  7.       {
  8.         string cuix = name + ".cuix";
  9.         string file = Path.Combine(path, cuix);
  10.         if (!File.Exists(file))
  11.         {
  12.           Cns.Warning("нет файла " + file);
  13.           return;
  14.         }
  15.         string mainCui = Application.GetSystemVariable("MENUNAME") + ".cuix";
  16.         CustomizationSection cs = new CustomizationSection(mainCui);
  17.         if (cs == null) return;
  18.         PartialCuiFileCollection pcfc = cs.PartialCuiFiles;
  19.         if (pcfc.Contains(cuix))
  20.         {        //уже загружен
  21.           FileInfo inf = new FileInfo(file);
  22.           FileInfo infMain = new FileInfo(mainCui);
  23.           if (inf.LastWriteTime > infMain.LastWriteTime)
  24.           {
  25.             Cns.Info("Обновление меню "+ name);
  26.             cs.RemovePartialMenu(cuix, name);
  27.             if (cs.IsModified == true) { cs.Save(); }
  28.           }
  29.           else
  30.             return;
  31.         }
  32.  
  33.         if (cs.AddPartialMenu(file))
  34.         {
  35.           if (cs.IsModified == true)
  36.           {
  37.             cs.Save();
  38.             Application.ReloadAllMenus();
  39.           }
  40.         }
  41.         else
  42.           Cns.Err("Не удалось загрузить меню " + name);
  43.       }
  44.       catch (System.Exception e)
  45.       {
  46.         Cns.Err(e, "Не удалось загрузить меню " + name);
  47.       }
  48.     }

ну мои функции вывода сообщений можете поудалять. Главное подключить Autodesk.AutoCAD.Customization и ссылку на AcCui.
Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: Debalance от 25-04-2018, 13:50:53
... без CUIX-файлов все равно не обойтись
Ну если использовать только ленту - то CUIX в общем-то не нужен. А что, неужели прогреcсивное AutoCAD-человечество ещё тяготеет к рудиментарным тулбарам? Уже 10 лет Autodesk пытается нас отучить от их использования.
Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: avc от 27-04-2018, 14:10:04
человечество ещё тяготеет к рудиментарным тулбарам?
Из десятков Автокадчиков с которыми я общаюсь риббонками пользуются от силы 1 из 5и. И те оставляют ленту на экране, но дополнительно открывают тулбары. Запрос "Как вернуть классический интерфейс в Автокаде" в топах гугла из всех со словом Автокад. Люди вообще консервативны, а профессионалы жестко консервативны. Любое изменение требует времени на привыкание - а время - деньги. Тем более, что ленты увеличивают количество кликов или требуют капитальной долгой и сложной перенастройки, чтоб собрать все нужное в одну ленту. Я на это убил уйму времени. Интерфейс настройки крайне глючный, не удобный, перетаскивание не работает. Так что ничего удивительного. Еще лет 10 тулбары будут доминировать. Примите как данность.
Вот не поверите, но на 2019 не хотят переходить по убийственно простой причине - Subtract был нарисован всегда кружочками, а стал вдруг квадратиками!! Глаз не цепляется. Все! В топку 2019! А вы говорите тулбары...
Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: Debalance от 27-04-2018, 14:35:06
... риббонками пользуются от силы 1 из 5и.
Охотно доверяю вашей статистике. Слава богу, что "профессионалов" всё-таки удалось перевести с MS-DOS и бокового меню в AutoCAD на Windows и тулбары. Как говориться решительный шаг вперёд - это следствие волшебного пинка под зад.

... Глаз не цепляется. Все! В топку 2019!
Совсем разбаловались ребята! Похоже такой аудитории наши жалкие программки и вовсе не нужны, когда в их арсенале есть такие замечательные инструменты как _LINE, _ARC и _CIRCLE...
Название: Re: Ошибки при переносе проекта с 2008 на 2014
Отправлено: Ese от 27-04-2018, 16:41:33
Александр Ривилис, avc, спасибо за совет