2

在 vs2008 C# 上工作,需要帮​​助连接 autocad 2010,我按照以下步骤连接,但它给了我一个错误。

我必须添加引用,所以我转到引用>>添加引用>>[COM TAB]>>Autocad 2010 类型库>>[OK]

我使用两个库:

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

然后我使用以下代码连接 AutoCAD 2010:

namespace Sample_CSharp_Acad_connect
{


 class Program
    {
        private static IAcadApplication oAcadApp = null;
        private static string sAcadID = "AutoCAD.Application.18";

        static void Main()
        {
            try  //get a running AutoCAD instance if avaialbale
            {
                oAcadApp = (IAcadApplication)System.Runtime.InteropServices.Marshal.GetActiveObject(sAcadID);
            }
            catch(Exception) //none found so start a new instance
            {
                System.Type AcadProg = System.Type.GetTypeFromProgID(sAcadID);
                oAcadApp = (IAcadApplication)System.Activator.CreateInstance(AcadProg);
            }
            if (oAcadApp != null)
            {
                oAcadApp.Visible = true; //could leave this false to hide Acad from the user
                //do whatever with Acad
                //oAcadApp.Quit();
            }
        }
    }

错误消息:获取组件 CLSID 的对象类 COM 时出错 在此处输入图像描述

4

2 回答 2

1

通讯?不要这样做。

AutoCAD 有一个 .NET API。有关来自 Autodesk 的资源,请参见http://usa.autodesk.com/adsk/servlet/index?id=1911627&siteID=123112。另请参阅此处的 wiki 以获取更多信息和大量链接:https ://stackoverflow.com/tags/autocad/info

于 2012-07-22T12:54:22.257 回答
0

你如何运行这段代码?是exe文件吗?据我所知,使用外部程序控制 AutoCAD 并不容易。通常存在阻止此类操作的 lizening 问题。

使用 DLL 访问 AutoCAD 功能可能更容易。在这种情况下,可以直接访问 AutoCAD 的对象模型:

Dim theApp as Autodesk.AutoCAD.Interop.AcadApplications = Autodesk.AutoCAD.Interop.AcadApplication()
Debug.Print(theApp.Caption)

SDK 包含大量可加载到 AutoCAD 中的 DLL 示例。

并且:如果没有必要,请考虑使用 .NET!

于 2012-07-23T09:54:10.780 回答