Как сделать отдельное приложение AutoCAD.NET

Я пытаюсь сделать приложение, что часть его нуждается в некоторых функциях AutoCAD. Так что я попробовал что-нибудь в интернете для отдельного приложения, но ничего не произошло, и я всегда возвращаю ошибку. (Это не плагин, просто откройте предустановленный AutoCAD и нарисуйте что-нибудь) Моя первая попытка:

AcadApplication gbl_app = new AcadApplication();
AcadDocument gbl_doc = gbl_app.ActiveDocument;
gbl_app.Application.Visible = true;

И это ошибка, которая возникает в первой строке.

An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in SBDesign.exe

Additional information: 
Retrieving the COM class factory for component with CLSID {0D327DA6-B4DF-4842-B833-2CFF84F0948F} 
failed due to the following error: 80040154 
Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Моя вторая попытка:

 AcadApplication acAppComObj = null;
            const string strProgId = "AutoCAD.Application.20";

            // Get a running instance of AutoCAD
            try
            {
                acAppComObj = (AcadApplication)Marshal.GetActiveObject(strProgId);
            }
            catch // An error occurs if no instance is running
            {
                try
                {
                    // Create a new instance of AutoCAD
                    acAppComObj = (AcadApplication)Activator.CreateInstance(Type.GetTypeFromProgID(strProgId), true);
                }
                catch(Exception er)
                {
                    // If an instance of AutoCAD is not created then message and exit
                    System.Windows.Forms.MessageBox.Show("Instance of 'AutoCAD.Application'" +
                                                         " could not be created.");

                    return;
                }
            }

            // Display the application and return the name and version
            acAppComObj.Visible = true;
            System.Windows.Forms.MessageBox.Show("Now running " + acAppComObj.Name +
                                                 " version " + acAppComObj.Version);

И это ошибка:

Unable to cast COM object of type 'System.__ComObject' to interface type 'Autodesk.AutoCAD.Interop.AcadApplication'. 
This operation failed because the QueryInterface call on the COM component for 
the interface with IID '{10E73D12-A037-47E5-8464-9B0716BE3990}' 
failed due to the following error: 
No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

Так на самом деле, как я могу сделать отдельное приложение?

Спасибо ах

1 ответ

Решение

IID {10E73D12-A037-47E5-8464-9B0716BE3990} - это IID приложения AutoCAD 2017 AcadApplication, который, кажется, установлен неправильно.

Вам нужно использовать ProgId: AutoCAD.Application.20 и использовать Autodesk.AutoCAD.Interop.dll и Autodesk.AutoCAD.Interop.Common.dll 20.0.51.0 для ваших ссылок на использование вашей установки AutoCAD 2015. Я думаю, что вы на самом деле используете 21.0.52.0 (AutoCAD 2017).

Другие вопросы по тегам