jhanel 发表于 2012-6-12 11:42:41

插件可以在一台计算机上工作,但不能在另一台上工作。困惑的

**** Hidden Message *****

Keith™ 发表于 2012-6-12 11:45:27

我也刚刚检查过。=)看起来我们在同一页上。两者都设置为零。

jhanel 发表于 2012-6-12 12:16:18

[主持人,看起来这篇文章发布到了错误的组中。]
并不总是有活动文档,因此如果您解释一下为什么在执行此代码时您认为应该有一个活动文档,可能会有所帮助。你提到有一个文件打开了。当至少存在一个文档时,您是否错误地假设必须存在活动文档?

owenwengerd 发表于 2012-6-12 17:24:15

AutoCAD是应用程序的宿主还是程序是单独的.exe?

owenwengerd 发表于 2012-6-12 17:53:13

当你说你有“插件目录中的以下文件”时,你到底是什么意思?插件目录也是 AutoCAD 目录吗?如果没有,您需要从插件目录中删除除插件DLL之外的所有插件DLL。

jhanel 发表于 2012-6-12 18:36:56


是的。AutoCAD正在通过NETLOAD托管插件。
我相信应该有一个活动文档,因为它在加载DWG时崩溃。同样,在一台PC上执行以下步骤可以工作,但在不同的PC上执行相同的步骤(包括打开文档并从该文档中发出命令)不会。

jhanel 发表于 2012-6-14 09:12:52

不知道这是否会导致它,但他们建议使用Application.ShowModalDialog(frm);
不确定这是否会导致它,但我看到的唯一区别是第一个将值存储在变量中,然后使用变量作为参数,第二个使用将函数放在参数中。

Keith™ 发表于 2012-6-14 09:56:52


什么形式?我不是想呈现一种形式。刚刚使用 MessageBox 向用户显示快速消息。如果没有 MessageBox,它仍然会因为同样的原因而崩溃。我

jhanel 发表于 2012-6-14 10:00:33

我现在已经读了一些关于这个问题的内容,似乎MdiActiveDocument在某些情况下返回null是有问题的。建议(至少根据ADN)是添加对system.enterpriceservices.dll的引用,并让命令从系统继承。enterprise services . serviced component
我不知道这是否能解决您的问题,但是谁知道呢...

owenwengerd 发表于 2012-6-14 10:19:56


我已经绕过了这个错误。你说得对,基思。MdiActiveDocument在我的电脑上工作得非常好,但在其他任何人的电脑上都不工作(原因不明)。我已经包括了这个系统。EnterpriseServices作为参考,因此这没有帮助,但现在它取代了Application.DocumentManager。MdiActiveDocument,我在类中使用以下属性来为我获取活动文档。
      public Document ActiveDocument
      {
            get
            {
                // This is the CORRECT way to get the active document. Application.MdiActiveDocument is fried!!!
                Database db = HostApplicationServices.WorkingDatabase;
                try
                {
                  Document d = Application.DocumentManager.GetDocument(db);
                  return d;
                }
                catch
                {
                  System.Windows.Forms.MessageBox.Show("Cannot connect to AutoCAD document.");
                  return null;
                }
            }
      }

页: [1] 2
查看完整版本: 插件可以在一台计算机上工作,但不能在另一台上工作。困惑的