ADN Club > ObjectARX

Перевод приложения на AutoCAD 2015, или – исключение при редактировании CUI

(1/3) > >>

Дмитрий Гилин:
Здравствуйте, коллеги!

По работе возникла необходимость адаптировать приложение под AutoCAD 2015.
Если коротко – после выполнения всех рекомендаций, приложение успешно загружается и работает. Но, при попытке вызвать редактор CUI, происходит исключение:
System.ArgumentNullException: Значение не может быть неопределенным.
Имя параметра: stream
   в System.Resources.ResourceSet..ctor(Stream stream)
   в Autodesk.AutoCAD.Customization.MyResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
   в System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
   в Autodesk.AutoCAD.Customization.CustomizationSection.FillPropertyBag(IPropertyBag bag)
   в Autodesk.AutoCAD.Customization.PropertyControl.SetCustomizationSectionProperties(CustomizationSection cs, CUITreeNode node)
   в Autodesk.AutoCAD.Customization.MainForm.handleTreeNodeItemSelected(Boolean recreateToolbarPreview)
   в Autodesk.AutoCAD.Customization.MainForm.tabControl_SelectedIndexChanged(Object sender, EventArgs e)/
   в System.Windows.Forms.TabControl.OnSelectedIndexChanged(EventArgs e)
   в System.Windows.Forms.TabControl.WmSelChange()
   в System.Windows.Forms.TabControl.set_SelectedIndex(Int32 value)
   в Autodesk.AutoCAD.Customization.MainForm.OnLoad(EventArgs e)
   в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   в System.Windows.Forms.Control.CreateControl()
   в System.Windows.Forms.Control.WmShowWindow(Message& m)
   в System.Windows.Forms.Control.WndProc(Message& m)
   в System.Windows.Forms.Form.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Теперь подробнее.
Приложение существует уже долгие годы, и мне не в первый раз приходится переводить его на очередную версию AutoCAd’а.
Приложение состоит из нескольких частей.
ARX-часть написана на Unmanaged C++ & ObjectARX, через COM-интерфейс она связана с .Net-частью, реализующей пользовательский интерфейс на WinForms. Исторически, .Net-часть реализована на MS Framework 3.5.

Судя по исключению, ошибка происходит при чтении ресурсов при загрузке формы редактора. Возможно проблема с тем, что не совпадают культуры AutoCAD и Windows. У меня установлен AutoCAD 2015 SP1, English. Windows 7 Корпоративная, Русская.

Я попытался найти информацию об ошибке в интернете.
Вот здесь, автор neyton_ (примерно в середине страницы) описывает очень похожую ошибку - Bug after CUI command - http://forums.autodesk.com/t5/autocad-civil-3d-general/c3d-2015-list-of-current-bugs-issues/td-p/5012764/page/7 , но информации об исправлении нет.

В конфигурационном файле acad.exe.config пробовал в различных комбинациях такие атрибуты как <supportedRuntime>, <generatePublisherEvidence>, <loadFromRemoteSources>, <legacyUnhandledExceptionPolicy>, не помогает.

Пробовал отключать функциональность приложения, реагирующую на события AutoCAD, да и просто большие куски кода, которые предположительно могли повлиять – не помогло.

Рассматривал вариант увеличения версии Framework нашей .Net-части с версии 3.5 до 4.0, но это довольно большой объем работы, по-быстрому не получилось.

Александр Ривилис:
Надеюсь, что в .NET части нет обращения к AutoCAD никоим образом - ни AutoCAD .NET API, ни ActiveX/COM, ни AutoCAD .NET API

Дмитрий Гилин:
Александр,
в .Net-части обращений к Autocad нет.

P.S. впервые встречаю столь серьезную защиту от роботов при публикации сообщений ;)

Александр Ривилис:

--- Цитата: Дмитрий Гилин от 27-08-2014, 16:35:44 ---Александр,
в .Net-части обращений к Autocad нет.

P.S. впервые встречаю столь серьезную защиту от роботов при публикации сообщений ;)

--- Конец цитаты ---
1. Забыл поприветствовать на форуме - исправляюсь. :)
2. Про ботов-роботов - это правда. У нас нет ни времени, ни желания с ними бороться, а прецеденты уже были. Но это только первые два (или три) сообщения - потом вопросов не будет.
3. Боюсь что здесь проблема не из-за версии AutoCAD. Если бы причина была в этом, то и в 2014-ом, который использует .NET 4.0 она бы проявлялась. Скорее причина в том, что начиная с AutoCAD 2015 используется FIBERLESS-среда.
4. Боюсь что помочь так не получится - с такой технологией я не сталкивался. Да и вряд ли кто-то из ребят такое использовал.
Предположений может быть масса - вплоть до того, что какие-то ресурсы не переключаются/не закрываются. Или действительно переключается язык, а AutoCAD в 2015 обратно не переключает. Так что возможно это тебе нужно делать самому.
5. Что еще я могу порекомендовать? Нужно сделать с нуля отдельный минимальный пример native arx и .NET COM и проверить с ними. Если будет та же ошибка с CUI - отправим в ADN DevHelp.

Дмитрий Гилин:
Александр, спасибо за ответ.
Может подскажете где почитать про FIBERLESS и как это отражается на программирование под AutoCAD2015?

'...сделать с нуля отдельный минимальный пример' - непростая задачка, буду думать.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии