龙空技术网

CAD二发开发学习记录3-学习编写.NET初始化程序

文人十一刀 58

前言:

现时姐妹们对“网页自动提交vbnet”大概比较讲究,我们都需要剖析一些“网页自动提交vbnet”的相关资讯。那么小编同时在网摘上汇集了一些关于“网页自动提交vbnet””的相关资讯,希望我们能喜欢,我们快快来学习一下吧!

跟随教材《AUTOCAD VBA&VB.NET开发基础与实例教程(C#版) 第2版》进行编程学习第1.2章节,对.NET程序的初始化、载入其他的.NET程序、异常处理,能够按照教材内容完成编写程序,;但其中发现一些问题,就是有一些异常很莫名其妙,重新写一个一模一样的就没有异常了,不知道什么原因,这种很耗费时间。打算针对各种异常先不管了,有问题就照着教材重新抄一遍,能够生成成功就行。

后面第1.3章节,学习用向导创建AutoCAD程序,需要下载AutoCAD 2020 .NET Wizards的安装包,去官网下载,发现无法正常打开下载.NET Wizards链接,于是去百度了下,找到了黎明科技分项的下载链接,里面有各个版本,不过需要注册下阿里云盘的账号:,提取码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;

}

}

}

}

}

标签: #网页自动提交vbnet #vbnet经典自学 #vbnet制作安装程序 #autocadnet #vbnet文本转数字