Окно, а точнее UserForm можно зпихнуть в палитру,На палитрах AutoCAD можно размещать как элементы управления WinForm, так и элементы управления WPF.
Подскажите пожалуйста,в каком направлении мне двигаться.Два нюанса:
WPF лучше) ИМХО
WPF лучшее ::)
WPF приложения кушают больше памяти.(вычитал в каком-то форуме)На заборах тоже пишут... WPF выполняет прорисовку графики при помощи видеокарты, посредством DirectX. WinForms рисует за счёт ЦП. Т.о. прорисовка графики WPF выполняется шустрее, причём чем больше рисовать, тем разница заметней. Насчёт объёмов памяти - я не замерял, ибо не критично (не ест он столько памяти, чтобы компьютер на лопатки ложился, а ловить блох не вижу смысла).
И еще вопрос, кто пробовал применить WPF в палитре PaletteSet?Плохо пробовал. Я в 2009-м акаде на палитрах размещаю преимущественно WPF контент. Контрол WPF следует размещать на палитре опосредованно, через контрол ElementHost, специально для этих целей существующий. Здесь (http://adn-cis.org/forum/index.php?topic=364.msg803#msg803)можешь глянуть мой пример кода.
В 2009 когда-то пробовал добавить через Add(), но кроме Windows.Forms.Control он ничего не принимал.
С какой версии автокада добавили поддержку WPF в PaletteSet?
На заборах тоже пишут... WPF выполняет прорисовку графики при помощи видеокарты, посредством DirectX. WinForms рисует за счёт ЦП.При помощи чего и так понятно. И что есть ускорение прорисовки тоже понятно.
Плохо пробовал. Я в 2009-м акаде на палитрах размещаю преимущественно WPF контент. Контрол WPF следует размещать на палитре опосредованно, через контрол ElementHost, специально для этих целей существующий. Здесь можешь глянуть мой пример кода.А за ссылку спасибо!
Открывать в AutoCAD окна Form (WinForms) следует при помощи статических методов:Я, например, это тоже знаю - но не знаю почему - кто нибудь мне может сказать что теоретически (или практически) может произойти если я буду использовать .Show и .ShowDialog.
то нибудь мне может сказать что теоретически (или практически) может произойти если я буду использовать .Show и .ShowDialog.Я в таких случаях сталкивался с аварийным завершением работы AutoCAD 2009. Происходило это не стабильно, но достаточно часто. Замена вызова на альтернативу от Autodesk устранило проблему. Считаю, что лучше перестраховаться и дёргать "кукол" за обозначенные кукловодом "верёвочки", дабы "пьеса" не завершилась неожиданным финалом. :) Причём в официальной документации автодеск эти методы долгие годы отсутствовали (некоторые их перегруженные версии отсутствуют до сих пор).
Есть "падающий" пример с WinForms - я "подергаю" - мне не лень. ИХМО данный функционал (сейчас говорю только касательно WinForms - WPF в автокаде практически не использую) похоже задел на будующее которое не настанет (хотели, но "ниосилили"). Я вставлял готовые WinForm модули (dll) в плагин автокада (часть функционала продублированная в другом месте, которую для удобства можно вызывать и из под акада) она активно работает с формами, естественно вызывая их обычными методами - работают с ними достаточно плотно и сейчас - пока чего-то не падало (хотя я и не исключаю, что может). В общем если есть конкретные примеры (а еще лучше причины) - то я крайне заинтересован.Я сейчас не помню, какую именно решал задачу, в процессе которой открывал окошки, и какие именно дальнейшие манипуляции приводили к Fatal Error (это было давно, в 2009-м году). :( На старом сайте себе "зарубок" на эту тему не сделал видимо, т.к. найти сейчас не смог. Если я верно помню, то на наличие обозначенных не документированных методов мне указал А.Н. Ривилис. Помню, что после внесённых обозначенных изменений фатал прекратил появляться.
editor.WriteMessage()
Или для этих целей нужно WinForm использовать?Чем не подошли стандартные?
Чем не подошли стандартные?Устраивает полностью, но мучает вопрос, не будет ли конфликта с автокадом, связанного с:
Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog("");
после запуска netload вываливаются ошибки о том,что нельзя загрузить этот файлДавай полное сообщение сюда и укажи версию AutoCAD и Visual Studio.
после запуска netload вываливаются ошибки о том,что нельзя загрузить этот файлГрузишь-то хоть из локального каталога, не из сетевого?
Я, например, это тоже знаю - но не знаю почему - кто нибудь мне может сказать что теоретически (или практически) может произойти если я буду использовать .Show и .ShowDialog.Иконка в заголовке диалога будет неправильная :)
А если серьезно, то акадовские методы назначают владельцем окошка автокад-приложение, со всеми вытекающими последствиями.Далеко не только это. Reflector или ILSpy помогут понять в чем особенность.
Reflector или ILSpy помогут понять в чем особенность.
Я извиняюсь за вопрос не в тему,ноНе извиняйся. Просто создай отдельную тему.
Я может быть не правильно поставил вопрос. У меня появился выбор шаблона с выбором языка программирования. Вопрос в том как открыть форму в автокаде?
скачал чужой проект на С++ буду разбираться.На C++? Сочувствую.
На C++? Сочувствую.Вот в этом проекте форма с расширением *.cs то есть если не ошибаюсь то это класс.