Тема: Доступ к AutoCad из внешнего Windows-приложения

Доброго времени суток!
Недавно начал изучать программирование .NET для AutoCad. В Интернете большая часть информации на эту тему
относится к созданию библиотек dll. Мне интересен вопрос, возможно ли управлять AutoCad из внешнего приложения.

Создал простейшее приложение на WindowsFormApplication. В нем одна форма и одна кнопка button1.
К кнопке привязан следующий обработчик события:

private void button1_Click(object sender, EventArgs e)
        {
            var editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
            editor.WriteMessage("Привет из Autocad плагина");
        }

В файл Form1.cs добавлены следующие ссылки:

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;

В программу добавлены следующие ссылки:
accoremgd.dll, acdbmgd.dll, acmgd.dll

При нажатии на кнопку приложение выводит ошибку:
"System.IO.FileNotFoundException: "Не удалось загрузить файл или сборку "accoremgd.dll" либо одну из их зависимостей. Не найден указанный модуль."
Ошибка возникает в строке 

Application.Run(new Form1());

метода Main класса Program в файле Program.cs

подскажите пожалуйста в чем дело и реализуема ли вообще моя задумка?

Заранее Спасибо!

Re: Доступ к AutoCad из внешнего Windows-приложения

antonksp пишет:

Мне интересен вопрос, возможно ли управлять AutoCad из внешнего приложения.

Да. Через COM/ActiveX.

antonksp пишет:

подскажите пожалуйста в чем дело и реализуема ли вообще моя задумка?

В таком виде - нет. accoremgd.dll, acdbmgd.dll, acmgd.dll  можно использовать только (!!!) из dll-файла,
загруженного внутрь AutoCAD.
Приглашаю сюда: https://adn-cis.org/forum/index.php?board=4.0

Re: Доступ к AutoCad из внешнего Windows-приложения

Спасибо за ответ!

Насколько я понимаю ActiveX - это объектная модель во главе которой стоит объект Application и  имея ссылку на этот объект можно получить доступ к любому объекту ( в т.ч. к примитивам ) AutoCad.

Если это так, остается один вопрос: "Как получить ссылку на этот объект Application из вешнего по отношению к AutoCad приложения типа WindowsFormApplication написанного на C#"

Заранее Спасибо!

Re: Доступ к AutoCad из внешнего Windows-приложения

Пример: https://adn-cis.org/chtenie-i-izmenenie … tocad.html

Re: Доступ к AutoCad из внешнего Windows-приложения

Ваш пример на языках VBA и C++. Я, к сожалению, почти не знаю эти языки.

Если я правильно разобрался, в примере с VBA использован метод GetObject(String,String) класса Iteraction.
В интернете нашел, что этот класс есть в VBA. В C# этого класса нет. Не могли бы Вы подсказать есть ли аналог
данного класса в C#.

Если есть примеры доступа к Autocad из внешнего приложения на C#, дайте пожалуйста ссылку.
Сам я пока таких примеров не нашел.

Заранее Спасибо!

Re: Доступ к AutoCad из внешнего Windows-приложения

antonksp пишет:

Ваш пример на языках VBA и C++. Я, к сожалению, почти не знаю эти языки.

Если я правильно разобрался, в примере с VBA использован метод GetObject(String,String) класса Iteraction.
В интернете нашел, что этот класс есть в VBA. В C# этого класса нет. Не могли бы Вы подсказать есть ли аналог
данного класса в C#.

Если есть примеры доступа к Autocad из внешнего приложения на C#, дайте пожалуйста ссылку.
Сам я пока таких примеров не нашел.

Заранее Спасибо!

https://knowledge.autodesk.com/ru/searc … 0-htm.html
P.S.: Дальше буду продолжать отвечать только здесь: https://adn-cis.org/forum/index.php?board=4.0

Re: Доступ к AutoCad из внешнего Windows-приложения

Добрый вечер, Александр!
Я оставил вчера запрос на регистрацию на форуме по указанной Вами ссылке, но его еще не одобрили.
Поэтому пишу здесь, если можете - помогите.


Пытаюсь получить доступ к объектам Autocad из внешнего приложения WindowsFormApplication на C#.  Действую согласно http://help.autodesk.com/view/OARX/2018 … 5FB300EB70

В программе сделал ссылки на файлы: acax22enu.tlb и axdb22enu.tlb (AutoCad 2018 )
В файл Form1.cs добавил ссылки

using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Interop.Common;

Возникает ошибка: “Не удалось найти тип или имя пространства имен "Autodesk" (возможно, отсутствует директива using или ссылка на сборку)”
После загрузки файлов acax22enu.tlb и axdb22enu.tlb стали доступны пространства имен AutoCAD и AXDBLib, но в них не содержится объект

ApplicationServices.Application.AcadApplication

, на который мне нужна ссылка.
Подскажите пожалуйста, что я делаю не так.

Заранее Спасибо!

Re: Доступ к AutoCad из внешнего Windows-приложения

antonksp пишет:

Я оставил вчера запрос на регистрацию на форуме по указанной Вами ссылке, но его еще не одобрили.

Она была одобрена в течении 10 минут после вашей регистрации. Проверьте.
По поводу остального на том форуме опишите более подробно. Думаю, что tlb-файлы вам не понадобятся. Лучше использовать Autodesk.AutoCAD.Interop.dll и Autodesk.AutoCAD.Interop.Common.dll из ObjectARX SDK или из самого AutoCAD (они в каталоге с acad.exe)