热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

visualstudio代码实例_基于C#的AutoCAD开发实例

HelloWorld:访问ObjectARX.NET封装类在这一章中,我们将使用VisualStudio.NET来创建一个新的类库工程。通过这个工程&#
ef8b79848319944fb67de06333defedb.png

Hello World:访问 ObjectARX .NET 封装类

在这一章中,我们将使用Visual Studio .NET 来创建一个新的类库工程。通过这个工程,你可以创建一个能被AutoCAD 装载的 .NET dll文件。这个dll文件会向AutoCAD 加入一个名为“HelloWorld”的新命令。当用户运行这个命令后,在AutoCAD命令行上将显示“Hello World”文本。

1d6ea2b81c19c40b2d366f8043cf8a59.png

1) 启动 Visual Studio .NET,选择“文件>新建>工程”(File> New> Project)。在新建工程对话框中选择工程类型为“Visual C#工程”,然后选择“类库”模板,在工程名字框中输入“Lab1”,然后选择工程存放的位置。点击确定按钮来创建工程。

2) 在工程的 Class1.cs 文件中,一个公有类“Class1”已经被系统自动创建了。接下来向这个类加入命令。要加入命令,你必须使用 AutoCAD .NET 托管封装类。这些托管封装类包含在两个托管模块中。要加入对这两个托管模块的引用,请用鼠标右键单击”引用”然后选择“添加引用”。在弹出的“添加引用”对话框中选择“浏览”。在”选择组件”对话框中,选择AutoCAD 2006的安装目录(这里假定为 C:Program FilesAutoCAD 2006)在这个目录下找到“acdbmgd.dll”然后选择并打开它。再一次选择“浏览”,在 AutoCAD 2006 的安装目录下找到“acmgd.dll”并打开它。当这两个组件被加入后,请单击“添加引用”对话框中的“确定”按钮。正如它们的名字所表示的,acdbmgd.dll 包含ObjectDBX 托管类,而acmgd.dll 包含AutoCAD托管类。

3) 使用对象浏览器(Visual http://Studio.NET 的”查看>其它窗口>对象浏览器”菜单项)来浏览加入的两个托管模块所提供的类。请展开“AutoCAD .NET Managed Wrapper”对象(在对象浏览器中显示为 acmgd),在整个教程中我们将使用这个对象中的类。在本章中,我们将使用“Autodesk.AutoCAD.EditorInput.Editor”类的一个实例来在 AutoCAD 命令行中显示文本。请再展开“ObjectDBX .NET Managed Wrapper”对象(在对象浏览器中显示为acdbmgd),这个对象中的类将被用来访问和编辑AutoCAD图形中的实体(这部分内容将在以后的章节中介绍)。

4)引用了ObjectARX .NET 封装类后,我们就可以导入它们。在 Class1类的声明语句(位于Class1.cs 文件的顶部的)之前,导入 Application Services,EditorInput和Runtime命名空间。

using Autodesk.AutoCAD.ApplicationServices;

using Autodesk.AutoCAD.EditorInput;

using Autodesk.AutoCAD.Runtime;

5)接下来在类 Class1 中加入命令。要加入能在 AutoCAD 中调用的命令,你必须使用“Command Method”属性。这个属性由 Runtime 命名空间提供。在类Class1 中加入下列属性和函数。

[CommandMethod("HelloWorld")]

public void HelloWorld()

{ }

6)当“HelloWorld”命令在 AutoCAD 中运行的时候,上面定义的 HelloWorld 函数就会被调用。在这个函数中,一个 Editor 类的实例将被创建。Editor 类拥有访问 AutoCAD 命令行的相关方法,它还包括选择对象和其它一些重要的功能。AutoCAD 当前活动文档的 Editor 对象可以使用 Application 类来访问。当 Editor 对象被创建后,你可以使用它的 WriteMessage 方法在命令行中显示“Hello World” 文本。在HelloWorld 函数中加入以下代码:

Editored=Application.DocumentManager.MdiActiveDocument.Editor;

ed.WriteMessage("Hello World");

7)要在AutoCAD中调试这个程序,你可以让 Visual http://Studio.NET 启动一个 AutoCAD 进程。在解决方案管理器中右键单击“Lab1”,然后选择“属性”。在 Lab1 的属性页对话框中,选择“ 配置属性>调试”。在“启动”项中,选择“调试模式”为“程序”,在“启动程序”的右边单击省略号按钮然后选择 AutoCAD 2006 安装目录下的 acad.exe。设置好以后,按 F5 来启动一个 AutoCAD 进程。这样就会编译你的程序然后自动启动 AutoCAD,而当编译后有错误的时候就会停止。请修正你可能碰到的任何错误。

8)“NETLOAD”命令被用来装载托管程序。在 AutoCAD 命令行中输入 NETLOAD,会出现“选择 .NET 组件”的对话框。选择上面生成的“lab1.dll”然后打开它。

9)在命令行中输入“HellowWorld”。如果一切顺利的话,命令行中将显示“Hello World”文本。切换到Visual Studio .NET,在ed.WriteMessage (“Hello World”);语句处加入一个断点。在 AutoCAD 中再次运行 Hello World 命令,你会注意到你可以跟踪代码的运行。 Visul http://Studio.NET 的“调试”菜单有好几项可以用来跟踪程序的运行。

aef3710cb3c5ad4765123afca9f9a6a2.png

如果有时间的话,请浏览一下

CommandMethod 属性。你会发现它有七种不同的形式。在上面的例子中,我们使用了最简单的形式,它只有一个输入参数(命令的名字)。 你可以使用其它的形式来控制命令的工作方式,例如你可以确定命令组的名字、全局和局部名字、命令标识(命令如何来运行)等。

7bcf298d2f1a6cdd38cea95bb65acc89.gif



推荐阅读
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
  • 我有一个从C项目编译的.o文件,该文件引用了名为init_static_pool ... [详细]
  • 本文总结了Java初学者需要掌握的六大核心知识点,帮助你更好地理解和应用Java编程。无论你是刚刚入门还是希望巩固基础,这些知识点都是必不可少的。 ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • C# 中 SQLite 报错:在 "\\s\\" 附近出现语法错误,如何解决? ... [详细]
  • 本文对SQL Server系统进行了基本概述,并深入解析了其核心功能。SQL Server不仅提供了强大的数据存储和管理能力,还支持复杂的查询操作和事务处理。通过MyEclipse、SQL Server和Tomcat的集成开发环境,可以高效地构建银行转账系统。在实现过程中,需要确保表单参数与后台代码中的属性值一致,同时在Servlet中处理用户登录验证,以确保系统的安全性和可靠性。 ... [详细]
  • 2009年12月28日,易语言公司正式推出了“易语言5.0静态编译测试版1”,这一版本标志着易语言在技术上的重要突破。与之前的4.x版本相比,5.0测试版1引入了静态编译功能,显著提升了程序的运行效率和安全性。此外,新版本还优化了代码生成机制,增强了语言的表达能力和兼容性。自发布以来,用户反馈非常积极,普遍认为新功能带来了更加流畅的开发体验。 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 本文探讨了如何在C#应用程序中通过选择ComboBox项从MySQL数据库中检索数据值。具体介绍了在事件处理方法 `comboBox2_SelectedIndexChanged` 中可能出现的常见错误,并提供了详细的解决方案和优化建议,以确保数据能够正确且高效地从数据库中读取并显示在界面上。此外,还讨论了连接字符串的配置、SQL查询语句的编写以及异常处理的最佳实践,帮助开发者避免常见的陷阱并提高代码的健壮性。 ... [详细]
author-avatar
宠医_臻爱一生_156
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有