AutoCAD2019+vs2019+C# 二次开发学习笔记day03(持续更新)

目录

母亲节快乐~~~祝妈妈身体健康,心想事成~

一、封装事务处理函数之将一条直线添加到图形文件中

1、代码记录

 2、代码讲解

二、封装事务处理函数之将多条直线添加到图形文件中

1、代码记录

2、代码讲解 

三、封装事务处理函数之将一条直线添加到图形文件中

(一)、提供两个点坐标绘制直线

1、代码记录

2、代码讲解

(二)、给起点坐标、直线长度和该直线与X轴正方向的夹角绘制直线

1、代码记录

2、代码讲解


~~~~

复习一下昨天学到的声明直线,在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);
                //添加图形到块表记录
              
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值