前沿拓展:
vb.net 数据库
你再添加一个导航条.bindingnavigator. 第二将它绑定你的textbox,修改后按导航条的保存就能保存.按导航条的上下就能读取前后数据.
跟随教材《AUTOCAD VBA&VB.NET开发基础与实例教程(C#版) 第2版》进行编程学习第1.2章节,对.NET程序的初始化、载入其他的.NET程序、异常处理,能够按照教材内容完成编写程序,;但其中发现一些问题,就是有一些异常很莫名其妙,重新写一个一模一样的就没有异常了,不知道什么原因,这种很耗费时间。打算针对各种异常先不管了,有问题就照着教材重新抄一遍,能够生成成功就行。
后面第1.3章节,学习用向导创建AutoCAD程序,需要下载链接,于是去百度了下,找到了黎明科技分项的下载链接,里面有各个版本,不过需要注册下阿里云盘的账号:https://www.aliyundrive.com/s/LGZKsZqJyaR,提取码07mv,可以正常下载。当然大家也可以自己搜索,网上的资源应该挺多的。
下面分项下1.2章节涉及的一些源程序
1.1章节的Hello程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
namespace Chap01
{
public class Chap01
{
[CommandMethod("Hello")]
public void Hello()
{
//获取当前活动文档的 Editor 对象,也就是命令行
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
//调用 Editor 对象的 Writemessage 函数在命令行上显示文本
ed.WriteMessage("\n欢迎进入.NET开发AutoCAD世界!");
}
}
}
1.2章节的InitClass程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
[assembly: ExtensionApplication(typeof(InitAandOpt.InitClass))]
[assembly: CommandClass(typeof(InitAandOpt.Optimize))]
namespace InitAandOpt
{
public class InitClass: IExtensionApplication
{
//初始化
public void Initialize()
{
Editor ed=Application.DocumentManager.MdiActiveDocument.Editor;
//在AutoCAD命令行上显示一些内容,他们会在程序载入时被显示
ed.WriteMessage("程序开始初始化");
}
//终止化
public void Terminate()
{
//在Visua Studio 2022 的输出窗口上显示程序结束的信息
System.Diagnostics.Debug.WriteLine("程序结束,你可以在内做一些程序的清理工作,如关闭AutoCAD文档");
}
[CommandMethod("InitCommand")]
public void InitCommande()
{
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
ed.WriteMessage("Test");
}
}
}
1.2章节的Optimize程序
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace InitAandOpt
{
internal class Optimize
{
[CommandMethod("OptCommand")]
public void OptCommand()
{
//获取当前活动文档的 Editor 对象,也就是命令行
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
string fileName = "C:\\Hello.dll";//Hello.dll程序集文件名
try
{
ExtensionLoader.Load(fileName);//载入Hell.dll程序集
//在命令行上显示信息,提示用户Hello.dll程序集已经被载入
ed.WriteMessage("\n" + fileName + "被载入,请输入Hello进行测试!");
}
catch (System.Exception ex)//捕捉程序异常
{
ed.WriteMessage(ex.Message);//显示异常信息
}
finally
{
ed.WriteMessage("\nfinally语句:程序执行完毕!");
}
}
[CommandMethod("ChangeColor")]
public void ChangeColor()
{
//获取当前图形数据库
Database db = HostApplicationServices.WorkingDatabase;
//获取命令行对象
Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
try
{
//提示用户选择对象
ObjectId id = ed.GetEntity("\n请选择要改变颜色的对象").ObjectId;
//开启事务处理,以改变对象颜色
using (Transaction trans = db.TransactionManager.StartTransaction())
{
//以写的方式打开对象
Entity ent = (Entity)trans.GetObject(id, OpenMode.ForWrite);
ent.ColorIndex = 8;//为测试异常,设置对象为不合法的颜色
trans.Commit();//提交事务处理,颜色更改完成
}
}
catch (Autodesk.AutoCAD.Runtime.Exception ex)//捕捉异常
{
switch (ex.ErrorStatus)//对不同的异常分别进行处理
{
case ErrorStatus.InvalidIndex://输入错误的颜色值
ed.WriteMessage("\n输入的颜色值有误");
break;
case ErrorStatus.InvalidObjectId://未选择对象
ed.WriteMessage("\n未选择对象");
break;
default://其他异常
ed.WriteMessage(ex.ErrorStatus.ToString());
break;
}
}
}
}
}
拓展知识:
原创文章,作者:九贤生活小编,如若转载,请注明出处:http://www.wangguangwei.com/22937.html