Autocad 2018 NETLOAD 不显示我的命令方法
Autocad 2018 NETLOAD not showing my command method
我正在尝试使用 .Net 为 Autocad 2018 和 Visual Studio 2019 制作插件
首先,当调试为 "Any 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");
}
}
}
class 其中您定义 [CommandMethod("Command_Name")]
必须是 public
检查您的参考资料。过去,当我的引用损坏或不正确时,我遇到过这个问题。
您的 AutoCAD 参考设置是否与下图中的设置不同?
Waseememe wrote:
SOLVED by adding the dll files from ObjecrARX folder called "inc" I had older versions of the dll files which they weren't compatible with AutoCad 2018, thanks ! – Waseememe Feb 18 at 22:38
由于我无法添加任何评论,因此请将其添加为答案。
您真的应该通过内置于 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/
我正在尝试使用 .Net 为 Autocad 2018 和 Visual Studio 2019 制作插件 首先,当调试为 "Any 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"); } }
}
class 其中您定义 [CommandMethod("Command_Name")]
必须是 public
检查您的参考资料。过去,当我的引用损坏或不正确时,我遇到过这个问题。
您的 AutoCAD 参考设置是否与下图中的设置不同?
Waseememe wrote:
SOLVED by adding the dll files from ObjecrARX folder called "inc" I had older versions of the dll files which they weren't compatible with AutoCad 2018, thanks ! – Waseememe Feb 18 at 22:38
由于我无法添加任何评论,因此请将其添加为答案。
您真的应该通过内置于 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/