目录
(二)、给起点坐标、直线长度和该直线与X轴正方向的夹角绘制直线
母亲节快乐~~~祝妈妈身体健康,心想事成~
复习一下昨天学到的声明直线,在cad图形文件中显示直线
盲敲一下,如果能盲敲出来说明昨天已经掌握了:
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Yztest3
{
public class Linetest
{
[CommandMethod("Linetest1")]
public void Linetest1()
{
//声明一条直线的两种方法
Line line1 = new Line();
Point3d start = new Point3d(0, 0, 0);
Point3d end = new Point3d(100, 100, 0);
line1.StartPoint = start;
line1.EndPoint = end;
Line line2 = new Line(new Point3d(100, 100, 0), new Point3d(200, 200, 0));
//声明图形数据库对象
Document doc = Application.DocumentManager.MdiActiveDocument;
Database da = doc.Database;
//开始事务处理
using (Transaction tt = da.TransactionManager.StartTransaction())
{
//声明块表
BlockTable bb = (BlockTable)tt.GetObject(da.BlockTableId, OpenMode.ForRead);
//声明块表记录
BlockTableRecord bbr = (BlockTableRecord)tt.GetObject(bb[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
//往块表记录添加直线
bbr.AppendEntity(line1);
bbr.AppendEntity(line2);
//更新
tt.AddNewlyCreatedDBObject(line1, true);
tt.AddNewlyCreatedDBObject(line2, true);
//提交事务
tt.Commit();
}
}
}
}
一、封装事务处理函数之将一条直线添加到图形文件中
今天学到了封装事务处理函数及绘制直线的函数,开始上函数了:
首先添加一个类,就叫AddEntityTool.cs
新添了一个小技巧,#region……#endregion中间的内容可以折叠起来
下面展示的代码分别存储在两个文件中,一个是创建的Linetest.cs文件,一个是AddEntityTool.cs类文件
1、代码记录
AddEntityTool.cs代码如下:
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Yztest3
{
public static partial class AddEntityTool//让这个类成为一个部分类
{
/// <summary>
/// 将图形对象添加到图形文件中
/// </summary>
/// <param name="db">图形数据库</param>
/// <param name="ent">图形对象</param>
/// <returns>图形的ObjectId</returns>
public static ObjectId AddEntityToModelSpace(this Database db, Entity ent)
{
//声明ObjectId,用于返回
ObjectId entId = ObjectId.Null;
//既然是把图形添加到cad文件中,肯定要提供对象
//line继承于Entity,那直接封装父类,以后直线啊圆弧啊都可以用
//开启事务处理 using
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);
//添加图形到块表记录