Тема: как запустить автокад?

доброе утро. никогода бы не обратился с таким тупым вопросом, но, как это ни удивительно, понятного ответа не смогй найти. вопрос из самого начала: как запустить автокад из .net приложения?
теоретически вот такой код:
using Autodesk.AutoCAD.Interop.Common;
using Autodesk.AutoCAD.Interop;
class main
{
    static void Main()
    {
        AcadApplication a = new AcadApplication { };
        a.Visible = true;
    }
}
должен создавать activeX объект с запущенным автокадом, и показывать его пользователю, и он это делает, но свежезапущенный автокад не способен реагировать на новые комманды по activeX и приложение выдает ошибку (что-то типа, процесс слишком занят, чтобы обработать вашу задачу). получется автокад запускается, по быстрому передает в приложение адресс на activeX объект, но при этом продолжает загружаться и занят своими делами... а приложене то уже дает ему следующую комманду. как организовать ожидание пока автокад будет готов?

Re: как запустить автокад?

http://through-the-interface.typepad.co … ation.html

Re: как запустить автокад?

сей пример я видел - не могу применять, так как он мне не понятен. я вот короче сделал:
static class m
{
    static void Main()
    {
        Autodesk.AutoCAD.Interop.AcadApplication acApp = new Autodesk.AutoCAD.Interop.AcadApplication();
        bool b = true;
        while (b)
        {
            try { acApp.Visible = true; b = false; }
            catch { b = true; }
        }
    }
}
чем плохо?

Re: как запустить автокад?

Плохо тем, что
1) твоё приложение займёт все ресурсы процессор.
2) окно твоего приложения не сможет обновляться.
3) думаешь дальше ты не можешь получить ошибку о том что AutoCAD занят?
4) и т.д.

Re: как запустить автокад?

ну да - это все правда. и если первый пункт не так страшен, то последний уже имеет место.
а вопрос не по этой теме: получив таким образом объект типа acadapplication приходится работать с автокадом по интерфейсу activeX, а он не очень хорошь, можно ли перейти на объекты objectARX завернутые в сборки .NET? есть же возможность делать DLL для автокада с помощью .NET, и работает это все с элементами через нечто на 90% совпадающее с objectARX.

Re: как запустить автокад?

todesengel пишет:

можно ли перейти на объекты objectARX завернутые в сборки .NET?

Если это внешнее (по отношению к AutoCAD) приложение - нельзя.

todesengel пишет:

есть же возможность делать DLL для автокада с помощью .NET, и работает это все с элементами через нечто на 90% совпадающее с objectARX.

???????????????

Re: как запустить автокад?

по перовой части ответ ясен. по второй: есть же возможность писать DLL на CS или VB с использованием сборок автокада, а потом загружать их в автокад через netload. так вот они работают с объектами автокада как objectARX, ну или очень похоже. когда загружаешь DLL в автокад - это все понятно, но хочется чтобы такоже доступ к объектам автокада ПО получало являясь именно внешним приложением.

(изменено: Александр Ривилис, 5 ноября 2013г. 20:39:53)

Re: как запустить автокад?

Внешнее приложение может использовать только COM/ActiveX интерфейс AutoCAD. Альтернатива - сделать сборку (DLL), которую грузить в AutoCAD и которой управлять из своего внешнего приложения.

Re: как запустить автокад?

ну спасибо - ответ полный и ясный