btraemoore 发表于 2022-7-6 22:20:08

简单简单。。。正在连接到

好的,我试着连接到2006年,我有问题。我使用了keen(通过接口)示例,它引发了一个COM异常,但它正在创建autocad实例。我不认为这与它有关,但它创造了它。
 
现在,当我下载2006年的objectARX时,那里没有互操作。dll只是3个“acdbmgd”变体。。。我只是在学习如何使用c。有人能扔我一点骨头吗?这是我的代码。
 


public MainForm() {
                InitializeComponent();
                IMessageFilter oldFilter = default(IMessageFilter);
                CoRegisterMessageFilter(this, oldFilter);
               
                AcadApplication acApp = GetAcApp("AutoCAD.Application.16.2");
               
        }
       
        public AcadApplication GetAcApp(string progID){
        AcadApplication acApp = null;
        try {
                acApp = (AcadApplication)Marshal.GetActiveObject(progID);
        } catch {
                try {
                        Type acType = Type.GetTypeFromProgID(progID);
                        acApp = (AcadApplication)Activator.CreateInstance(acType,true);
       
                } catch {
                        MessageBox.Show("Cannot create object of type \"" + progID + "\"");
                }
        }
        if (acApp != null) {
                // By the time this is reached AutoCAD is fully
                // functional and can be interacted with through code
                acApp.Visible = true;
                return acApp;
        }
        return null;
}

BlackBox 发表于 2022-7-6 23:05:18

听起来您试图创建一个独立的EXE,而不是插件(加载到AutoCAD活动会话中的程序集),是否正确?
 
如果您正在寻找一个插件,并且已经在用C#进行编码,那么为什么不直接使用。NET API(AcDbMgd.dll,AcMgd.dll)代替COM?

btraemoore 发表于 2022-7-6 23:46:58

我想学习两者都使用。NET API和COM。我真的很难找到一些很好的例子来详细解释这两者。如果你知道我在哪里可以找到,我将非常感激。
页: [1]
查看完整版本: 简单简单。。。正在连接到