您的位置:首页 > 编程语言 > C#

CAD .NET开发 教程(C#)——第二章

2018-02-25 13:43 267 查看
2.NET AutoCAD 向导及 Editor

在第一章中,我们使用的是类库模板,这样就不得不手工加入 acdbmdg. dll 和
acmgd.dll 这两个引用。在这一章中,我们将使用 AutoCAD 托管 C#应用程序向导来创建.NET 工程,它会自动加入以上两个引用。在开始本章之前,你首先得安装 ObjectARX 向导
(ObjectARX2006 开发包的\utils\ObjARXWiz\ArxWizards.msi)。
1)启动 Visual Studio .NET,选择”文件>新建>工程”(File> New> Project)。在新建 工程对话框中选择工程类型为”Visual C#工程”,然后选择“AutoCAD Managed CS Project Application”模板。在工程名字框中输入”Lab2”,然后选择工程存放的位置。 点击确定按钮,“AutoCAD Managed CSharp Application Wizard”对话框将会出现。因为 我们不需要使用非托管代码,所以不要选择“Enable Unmanaged Debugging”项。

“Registered Developer Symbol”将会使用你在安装 ObjectARX 向导时输入的值。单
击”finish”按钮来创建工程。
2)下面来看一下向导生成的工程。在解决方案浏览器中,你会看到 acdbmgd 和 acmgd 已 经被引用了。在 Class.cs 文件中,“Autodesk.AutoCAD.Runtime”命名空间已被导入,工 程使用“Registered Developer Symbol”的名字来命名缺省的公有类。向导还为类加入了 一个 CommandMethod 属性和一个函数,它们用于 AutoCAD 命令。
3)在前一章中,我们使用一个“Autodesk.AutoCAD.EditorInput.Editor”类的实例对象 在 AutoCAD 命令行上输出文本。在这一章中,我们将使用这个类来提示用户在 AutoCAD 图形 中选择一个点,然后将用户选择的点的 x,y,z 值显示出来。和前一章一样,请导入 Autodesk.AutoCAD.ApplicationServices 和 Autodesk.AutoCAD.EditorInput 命名空间。
4)把向导生成的 CommandMethod 属性的值改为有意义一些的名字如“selectPoint”(函 数的名字可以不用修改)。PromptPointOptions 类用来设置提示字符串和其它的一些控制 提示的选项。这个类的一个实例作为参数被传入到 Editor.GetPoint 方法。在函数的开始, 实例化这个类,设置字符串参数为“Select a point”。因为 Editor.GetPoint 方法会返 回一个 PromptPointResult 类的实例对象,所以我们也要把它实例化。
PromptPointOptions prPointOptions = new PromptPointOptions("Select a point"); PromptPointResult prPointRes;
5) 接下来实例化一个 Editor 类的对象并使用参数为 PromptPointOptions 对象的 GetPoint 方法。用 GetPoint 方法的返回值来给上面声明的 PromptPointResult 对象赋值。 赋值好以后,我们可以测试 PromptPointResult 对象的状态,如果不是 OK 就返回。 prPointRes = ed.GetPoint(prPointOptions);
if (prPointRes.Status != PromptStatus.OK)
{
ed.WriteMessage("Error");
}
6)如果 PromptPointResult 对象返回了一个有效的点,我们就可以使用 WriteMessage 方法 把结果输出到命令行。PromptPointResult.Value 的 ToString 方法使输出非常容易:
ed.WriteMessage("You selected point "
prPointRes.Value.ToString)
7)按 F5 来运行一个调试 AutoCAD 的进程。(注意:向导已经设置好用 acad.exe 来调试) 在 AutoCAD 命令行中输入 NETLOAD,选择 Lab2.dll 并打开。在命令行中输入你起的命令名 字(selectPoint)。在选择点的提示下,单击图形中的任一点。如果一切正常的话,你可 以在命令行中看到你所选的点的坐标值。在 Class.cs 文件的
“ed.WriteMessage("Error");”行加入断点,然后再次运行 selectPoint 命令。这一次, 在选择点的提示下按 ESC 键而不是选择一个点。PromptPointResult 对象的状态就不是 OK 了,所以上面代码中的 if 语句就会被执行,“ed.WriteMessage("Error")”;语句就会被调 用。
8) 接下来我们将加入另外一个命令,它可以获取两个点之间的距离。向导没有添加命令 的功能,所以我们必须手工添加。在 Class.cs 文件的选择点的函数(getPoint)下面添加 一个名为 getDistance 的新命令。加入命令的方法请参考上一章的内容或本章的源代码,这 里就不列出了。使用 CommandMethod 属性并使字符串参数为“getdistance”或其它类似的 名字。在命令的函数中使用 PromptDistanceOptions 代替 PromptPointOptions。当然 GetDistance 方法的返回值是一个 PromptDoubleResult 类的实例对象,所以请用 PromptDoubleResult 来代替 PromptPointResult:

PromptDistanceOptions prDistOptions = new
PromptDistanceOptions("Find distance, select first point:");
PromptDoubleResult prDistRes;
prDistRes = ed.GetDistance(prDistOptions);
9) 和前面的命令一样,也可以测试 PromptDoubleResult 的状态,然后用 WriteMessage 方法在命令行中显示值。
if (prDistRes.Status != PromptStatus.OK)
{
ed.WriteMessage("Error");
}
else
{
ed.WriteMessage("The distance is: " + prDistRes.Value.ToString());
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐