【问题标题】:Autocad 2018 NETLOAD not showing my command methodAutocad 2018 NETLOAD 未显示我的命令方法
【发布时间】:2020-06-02 08:45:27
【问题描述】:

我正在尝试使用 .Net 为 Autocad 2018 和 Visual Studio 2019 制作插件 首先,当调试为“任何 CPU”时,我在 VS 中收到警告,当我切换到 x64 时,该错误就会消失。 在构建项目并拥有 .dll 文件后,我转到 Autocad 并使用 NETLOAD 命令加载它,当我尝试加载我的方法或“CommandMethod”时,它没有显示出来。

  • 我尝试将 .Net Framework 更改为我拥有的任何版本,从 4.7.2 到 4.5
  • 尝试了其他来源的不同代码,但仍然没有结果 我应该使用更高版本的 AutoCad 吗?还是我应该使用 2017 等较低版本的 VS? 可能是什么问题呢? 代码如下:

    using Autodesk.AutoCAD.ApplicationServices;
    using Autodesk.AutoCAD.DatabaseServices;
    using Autodesk.AutoCAD.Geometry;
    using Autodesk.AutoCAD.EditorInput;
    using Autodesk.AutoCAD.Runtime;
    using Autodesk.AutoCAD.ApplicationServices.Core;
    
    [assembly: CommandClass(typeof(Testing.Class1))]
       namespace Testing
    {
        public class Class1
        {
            [CommandMethod("MyFirstCommand")]
            public void my()
            {
    
            Document doc=Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor edt = doc.Editor;
    
            using (Transaction trans=db.TransactionManager.StartTransaction())
            {
                try
                {
    
                    BlockTable bt;
                    bt = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                    BlockTableRecord btr;
                    btr = trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
    
                    // send message to the user
                    edt.WriteMessage("\nDrawing a line objet");
    
                    Point3d pt1 = new Point3d(0, 0, 0);
                    Point3d pt2 = new Point3d(100, 0, 0);
    
                    Line ln = new Line(pt1, pt2);
                    ln.ColorIndex = 1;
                    btr.AppendEntity(ln);
                    trans.AddNewlyCreatedDBObject(ln, true);
                    trans.Commit();
                }
                catch (System.Exception e)
                {
                    edt.WriteMessage("Error Encountered" + e.Message);
                    trans.Abort();
                }
            }
            edt.WriteMessage("Script loaded");
    
        }
    
    }
    

    }

【问题讨论】:

    标签: c# .net autocad autocad-plugin


    【解决方案1】:

    检查您的参考资料。过去,当我的参考资料损坏或不正确时,我遇到过这个问题。

    您的 AutoCAD 参考设置是否与下图中的设置不同?

    【讨论】:

    • 您是否还有其他正在加载的 AutoCAD .NET 应用程序?您是否有可能有另一个具有相同名称的命令并导致错误?
    • 另外,使用my() 作为名称会导致问题吗?
    • 我检查了参考资料,我的输入与您的图片相同。但是,我的版本显然比你的版本有点旧。我有 18.1.0.1。另外我不认为函数名是我改了不同时间的问题,但仍然是同一个问题。
    • 通过添加名为“inc”的 ObjecrARX 文件夹中的 dll 文件解决了我有旧版本的 dll 文件,它们与 AutoCad 2018 不兼容,谢谢!
    • 很高兴我能帮上忙。
    【解决方案2】:

    你定义[CommandMethod("Command_Name")]的类必须是public

    【讨论】:

      【解决方案3】:

      Wasememe 写道:

      通过添加名为“inc”的 ObjecrARX 文件夹中的 dll 文件解决了我有旧版本的 dll 文件,它们与 AutoCad 2018 不兼容,谢谢! – Waseememe 2 月 18 日 22:38

      由于我无法添加任何 cmets,因此将其添加为答案。

      您确实应该通过 Visual Studio 中内置的 NuGet 包功能添加您的引用。这将解决与此相关的任何未来问题。

      怎么样? -→https://docs.microsoft.com/en-us/nuget/quickstart/install-and-use-a-package-in-visual-studio tldr:右键单击您的项目,单击管理 NuGet 包,单击“浏览”选项卡,然后搜索 AutoCAD API 包,使用右侧的 UI 安装它们。

      AutoCAD NuGet 在网上的什么位置? -→https://www.nuget.org/packages/AutoCAD.NET/23.1.0/

      【讨论】:

        猜你喜欢
        • 2020-10-03
        • 2023-02-05
        • 2013-06-25
        • 2021-07-06
        • 2011-09-06
        • 2021-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多