Добрый день!
Суть проекта - выполнение исходного кода на C# в AutoCAD (динамическая компиляция и всё такое...).
Есть сборка на C# с классом от IExtensionApplication. Грузится в AutoCAD при его запуске (через реестр).
В ней в Initialize и DocumentManager_DocumentCreated подписываемся на нужные события. Здесь ничего особенного...
В итоге имеем обработчики событий типа
doc.CommandEnded += Doc_CommandEnded;
В таких обработчиках код типа:
compile_and_load_module(ctx);
В ctx всякие параметры для компиляции - пути к исходникам, пути к ссылкам, тип, запускаемый метод и т.п.
compile_and_load_module выполняет компиляцию исходников (CSharpCodeProvider.CompileAssemblyFromFile), сохраняет сборку на диске, загружает её в текущий AppDomain (т.е. в AutoCAD), ищет тип (из ctx) и выполняет метод (из ctx).
Скомпилированный метод делает какую-либо полезную работу, например вызывает другие команды AutoCAD...
var dm = Application.DocumentManager; var doc = dm.MdiActiveDocument; var ed = doc.Editor; ctx.acad_dwg.Editor.WriteMessage("Перед Editor.Command() 5 ..."); await dm.ExecuteInCommandContextAsync(async (obj) => { ed.WriteMessage("10000000000000000..."); ed.Command("_ATTSYNC", "_N", n); ed.WriteMessage("20000000000000000..."); }, null );
Вызов команды я пытался сделать и как await ed.CommandAsync и через ExecuteInCommandContextAsync и без неё.
Читал это и это и много чего ещё.
Там написано, что так всё должно работать и работает, но у меня не работает. Возможно это из-за более длинной цепочки компиляции, загрузки, выполнения и т.п. Раньше это всё у меня работало через acedCmd...
Может кто-нибудь подскажет куда копать?..
Решено! Перейти к решению.
Решено: Alexander.Rivilis. Перейти к решению.
Переходи сюда: http://adn-cis.org/forum/index.php?board=4.0
Постараемся помочь.
Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"
Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Похоже решение найдено: http://adn-cis.org/forum/index.php?topic=3346.msg14286#msg14286
Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"
Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.