using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;

namespace _01_LineD
{
    public class Class1
    {
        [CommandMethod("LineDemo")]
        public void LineDemo()
        {
            Line line1 = new Line();//声明一个直线对象
            Point3d startPoint3D = new Point3d(100, 100, 0);//创建两个点
            Point3d endPoint3D = new Point3d(100, 200, 0);
            line1.StartPoint = startPoint3D;//设置属性
            line1.EndPoint = endPoint3D;
            //声明图形数据库对象
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;

            Line line2 = new Line(new Point3d(100, 200, 0), new Point3d(200, 200, 0));
            Line line3 = new Line(new Point3d(200, 200, 0), new Point3d(200, 100, 0));
            Line line4 = new Line(new Point3d(200, 100, 0), new Point3d(100, 100, 0));
            //开启事务处理
            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);//打开块表记录
                btr.AppendEntity(line1);//加直线到块表记录
                btr.AppendEntity(line2);//加直线到块表记录
                btr.AppendEntity(line3);//加直线到块表记录
                btr.AppendEntity(line4);//加直线到块表记录
                trans.AddNewlyCreatedDBObject(line1, true);//更新数据
                trans.AddNewlyCreatedDBObject(line2, true);//更新数据
                trans.AddNewlyCreatedDBObject(line3, true);//更新数据
                trans.AddNewlyCreatedDBObject(line4, true);//更新数据
                trans.Commit();//提交事务
            }
        }

    }
}