参考自http://blog.csdn.net/sanqima/article/details/38401639C# CAD中画直线。
1.Visual C#-类库-名称为:Line2
2.引用三个dll文件,分别为acdbmgd.dll、acmgd.dll、DotNetARX.dll。其中acdbmgd.dll、acdmgd.dll是AutoCCAD托管封装类,DotNetARX.dll是一个用于.net开发AutoCAD程序的类库。前两个dll在AutoCAD的安装文件里可以找到,DotNetARX.dll可以在网上下一个,我用的是DotNetARX6.0。acdbmgd.dll、acdmgd.dll的属性有一个“复制到本地“:False。
3.禁用LoaderLock。点击”调试“--》异常--》 Managed Debugging Assistans-->去掉”LoaderLock“前面的对勾。
4.启用外部程序
5.代码
using System;
using System.Collections.Generic;
using System.Text;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
namespace Line2
{
public class Line2
{
[CommandMethod("FirstLine")]
public static void FirstLine()
{
//获取当前活动图形数据库
Database db = HostApplicationServices.WorkingDatabase;
Point3d startPoint = new Point3d(500, 500, 0); //直线起点
Point3d endPoint = new Point3d(700, 500, 0); //直线终点
Line line = new Line(startPoint, endPoint); //新建一直线对象
//定义一个指向当前数据库的事务处理,以添加直线
using (Transaction trans = db.TransactionManager.StartTransaction())
{
BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead); //以读方式打开块表.
//以写方式打开模型空间块表记录.
BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
//将图形对象的信息添加到块表记录中,并返回ObjectId对象.
btr.AppendEntity(line);
trans.AddNewlyCreatedDBObject(line, true); //把对象添加到事务处理中.
trans.Commit(); //提交事务处理
}
}
}
}
6.
按F5键启动调试,在AutoCAD的命令行窗口输入命令:
netload
找到Line2.dll(一般在工程的Debug目录里),打开Line2.dll,在AutoCAD的命令行窗口输入自定义的命令:
FirstLine