AutoCAD.NET API2018二次开发第十七章

多行文本,单行文本,文本样式,创建对齐标注,创建线性标注

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//运行时
using Autodesk.AutoCAD.Runtime;
//数据库
using Autodesk.AutoCAD.DatabaseServices;
//应用程序服务
using Autodesk.AutoCAD.ApplicationServices;
//几何
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Interop.Common;
//编辑输入
using Autodesk.AutoCAD.EditorInput;
//颜色
using Autodesk.AutoCAD.Colors;
//图形接口命名空间
using Autodesk.AutoCAD.GraphicsInterface;

namespace AutoDemo21
{
    public class Class1
    {
        //多行文本
        [CommandMethod("DHWB")]
        public static void DHWB()
        {
            //当前文档
            Document doc = Application.DocumentManager.MdiActiveDocument;
            //当前数据库
            Database db = doc.Database;
            //开始事务
            using (Transaction tran = db.TransactionManager.StartTransaction())
            {
                //声明块表
                BlockTable bt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                //声明块表记录
                BlockTableRecord btr = tran.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;

                //文本声明
                MText 文本 = new MText();

                文本.Location = new Point3d(10, 10, 0);
                文本.Width = 10;
                文本.Contents = "asdasdasdasdas";
                文本.ColorIndex = 3;
                btr.AppendEntity(文本);
                tran.AddNewlyCreatedDBObject(文本, true);
                tran.Commit();
            }
        }

        //单行文本
        [CommandMethod("CSDHWB")]
        public static void CSDHWB()
        {
            //当前文档
            Document doc = Application.DocumentManager.MdiActiveDocument;
            //当前数据库
            Database db = doc.Database;
            //开始事务
            using (Transaction tran = db.TransactionManager.StartTransaction())
            {
                //声明块表
                BlockTable bt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                //声明块表记录
                BlockTableRecord btr = tran.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;

                //文本声明
                DBText 文本 = new DBText();

                文本.Position = new Point3d(10, 10, 0);
                文本.Height = 2;
                文本.TextString = "asdasdasdasdas";
                文本.ColorIndex = 3;
                btr.AppendEntity(文本);
                tran.AddNewlyCreatedDBObject(文本, true);
                
                DBText text = 文本.Clone() as DBText;
                text.Position = new Point3d(10, 5, 0);
                //text.Height = 2;
                //弧度
                text.Oblique = 0.5;
                text.TextString = "测试单行文本";
                text.ColorIndex = 3;

                //X轴显示
                text.IsMirroredInX = true;

                btr.AppendEntity(text);
                tran.AddNewlyCreatedDBObject(text, true);
                tran.Commit();

            }
        }

        //文本样式
        [CommandMethod("WBYS")]
        public static void WBYS()
        {
            //当前文档
            Document doc = Application.DocumentManager.MdiActiveDocument;
            //当前数据库
            Database db = doc.Database;
            //开始事务
            using (Transaction tran = db.TransactionManager.StartTransaction())
            {
                //声明块表
                //BlockTable bt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                //声明块表记录
                //BlockTableRecord btr = tran.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;

                //样式表记录
                TextStyleTableRecord ts = tran.GetObject(db.Textstyle, OpenMode.ForWrite) as TextStyleTableRecord;
                //当前文本样式字体
                FontDescriptor font = ts.Font;

                //Application.ShowAlertDialog("当前字体:" + font.ToString());
                doc.Editor.WriteMessage("当前字体:" + font.ToString());
                //ziti
                FontDescriptor newFont = new FontDescriptor("仿宋", true, font.Italic, font.CharacterSet, font.PitchAndFamily);

                ts.Font = newFont;

                doc.Editor.Regen();
                doc.Editor.WriteMessage("当前字体:" + font.ToString());

                tran.Commit();
            }
        }

        //创建对齐标注
        [CommandMethod("DQBZ")]
        public static void DQBZ()
        {
            //当前文档
            Document doc = Application.DocumentManager.MdiActiveDocument;
            //当前数据库
            Database db = doc.Database;
            //开始事务
            using (Transaction tran = db.TransactionManager.StartTransaction())
            {
                //声明块表
                BlockTable bt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                //声明块表记录
                BlockTableRecord btr = tran.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;


                Line li = new Line(new Point3d(0,0,0),new Point3d(10,10,0));
                btr.AppendEntity(li);
                tran.AddNewlyCreatedDBObject(li, true);

                //创建点
                DBPoint P = new DBPoint(new Point3d(0, 1, 0));
                btr.AppendEntity(P);
                tran.AddNewlyCreatedDBObject(P, true);

                //对齐标注
                AlignedDimension AD = new AlignedDimension();
                //起点
                AD.XLine1Point = li.StartPoint;
                //结束点
                AD.XLine2Point = li.EndPoint;
                //对齐标注 经过的点
                AD.DimLinePoint = new Point3d(P.Position.X, P.Position.Y, 0);

                AD.ColorIndex = 3;
                //倾角
                AD.Oblique = 0.785;
                btr.AppendEntity(AD);
                tran.AddNewlyCreatedDBObject(AD, true);
                tran.Commit();
            }
        }

        //创建线性标注
        [CommandMethod("XXBZ")]
        public static void XXBZ()
        {
            //当前文档
            Document doc = Application.DocumentManager.MdiActiveDocument;
            //当前数据库
            Database db = doc.Database;
            //开始事务
            using (Transaction tran = db.TransactionManager.StartTransaction())
            {
                //声明块表
                BlockTable bt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                //声明块表记录
                BlockTableRecord btr = tran.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;


                Line li = new Line(new Point3d(0, 0, 0), new Point3d(10, 10, 0));
                btr.AppendEntity(li);
                tran.AddNewlyCreatedDBObject(li, true);

                //创建点
                DBPoint P = new DBPoint(new Point3d(5, 5, 0));
                btr.AppendEntity(P);
                tran.AddNewlyCreatedDBObject(P, true);

                //线标注
                RotatedDimension AD = new RotatedDimension();
                //起点
                AD.XLine1Point = li.StartPoint;
                //结束点
                AD.XLine2Point = li.EndPoint;
                //对齐标注 经过的点
                AD.DimLinePoint = new Point3d(P.Position.X, P.Position.Y, 0);
                //标注样式
                AD.DimensionStyle = db.Dimstyle;
               
                btr.AppendEntity(AD);
                tran.AddNewlyCreatedDBObject(AD, true);
                tran.Commit();
            }
        }

        //半径标注
        [CommandMethod("BJBZ")]
        public static void BJBZ()
        {
            //当前文档
            Document doc = Application.DocumentManager.MdiActiveDocument;
            //当前数据库
            Database db = doc.Database;
            //开始事务
            using (Transaction tran = db.TransactionManager.StartTransaction())
            {
                //声明块表
                BlockTable bt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                //声明块表记录
                BlockTableRecord btr = tran.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
                using (Circle c = new Circle())
                {
                    //定义园
                    c.Center = new Point3d(0, 0, 0);
                    c.Radius = 10;
                    c.ColorIndex = 3;

                    RadialDimension rd = new RadialDimension();
                    rd.Center = c.Center;
                    rd.ChordPoint = new Point3d(0, 10, 0);
                    rd.LeaderLength = 5;

                    btr.AppendEntity(c);
                    tran.AddNewlyCreatedDBObject(c, true);
                    btr.AppendEntity(rd);
                    tran.AddNewlyCreatedDBObject(rd, true);
                }

                tran.Commit();
            }
        }

        //角度标注
        [CommandMethod("JDBZ")]
        public static void JDBZ()
        {
            //当前文档
            Document doc = Application.DocumentManager.MdiActiveDocument;
            //当前数据库
            Database db = doc.Database;
            //开始事务
            using (Transaction tran = db.TransactionManager.StartTransaction())
            {
                //声明块表
                BlockTable bt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                //声明块表记录
                BlockTableRecord btr = tran.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
                //定义xian
                Line li = new Line(new Point3d(0, 0, 0), new Point3d(0, 5, 0));

                Line li2 = new Line(new Point3d(0, 0, 0), new Point3d(5, 5, 0));

                DBPoint rd = new DBPoint(new Point3d(2,1,0));

                LineAngularDimension2 ad = new LineAngularDimension2();

                ad.XLine1Start = li.StartPoint;
                ad.XLine1End = li.EndPoint;

                ad.XLine2Start = li2.StartPoint;
                ad.XLine2End = li2.EndPoint;

                ad.ArcPoint = new Point3d(rd.Position.X, rd.Position.Y,0);

                btr.AppendEntity(li);
                tran.AddNewlyCreatedDBObject(li, true);

                btr.AppendEntity(li2);
                tran.AddNewlyCreatedDBObject(li2, true);

                btr.AppendEntity(rd);
                tran.AddNewlyCreatedDBObject(rd, true);

                btr.AppendEntity(ad);
                tran.AddNewlyCreatedDBObject(ad, true);

                tran.Commit();
            }
        }


        //弧长标注 坐标标注
        [CommandMethod("HCBZ")]
        public static void HCBZ()
        {
            //当前文档
            Document doc = Application.DocumentManager.MdiActiveDocument;
            //当前数据库
            Database db = doc.Database;
            //开始事务
            using (Transaction tran = db.TransactionManager.StartTransaction())
            {
                //声明块表
                BlockTable bt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                //声明块表记录
                BlockTableRecord btr = tran.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
                //定义x弧长
                Arc a = new Arc();
                a.Center = new Point3d(0, 0, 0);
                a.Radius = 5;
                a.StartAngle = 0;
                a.EndAngle = 1.57;
                DBPoint p = new DBPoint(new Point3d(5, 4, 0));
                ArcDimension ad = new ArcDimension(a.Center,a.StartPoint,a.EndPoint,new Point3d(p.Position.X,p.Position.Y,0),"<>",db.Dimstyle);

                btr.AppendEntity(a);
                tran.AddNewlyCreatedDBObject(a, true);
                btr.AppendEntity(p);
                tran.AddNewlyCreatedDBObject(p, true);
                btr.AppendEntity(ad);
                tran.AddNewlyCreatedDBObject(ad, true);

                tran.Commit();
            }
        }

        //坐标标注
        [CommandMethod("BZZB")]
        public static void BZZB()
        {
            //当前文档
            Document doc = Application.DocumentManager.MdiActiveDocument;
            //当前数据库
            Database db = doc.Database;
            //开始事务
            using (Transaction tran = db.TransactionManager.StartTransaction())
            {
                //声明块表
                BlockTable bt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                //声明块表记录
                BlockTableRecord btr = tran.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
                //声明坐标标注
                OrdinateDimension od = new OrdinateDimension();
                od.UsingXAxis = false;
                od.DefiningPoint = new Point3d(5,4,0);
                od.LeaderEndPoint = new Point3d(10, 8, 0);

                btr.AppendEntity(od);
                tran.AddNewlyCreatedDBObject(od, true);
                tran.Commit();
            }
        }

        //创建标注样式
        [CommandMethod("BZYS")]
        public static void BZYS()
        {
            //当前文档
            Document doc = Application.DocumentManager.MdiActiveDocument;
            //当前数据库
            Database db = doc.Database;
            //开始事务
            using (Transaction tran = db.TransactionManager.StartTransaction())
            {
                //样式表
                DimStyleTable dst = tran.GetObject(db.DimStyleTableId, OpenMode.ForWrite) as DimStyleTable;
                //样式表记录
                DimStyleTableRecord dstr = new DimStyleTableRecord();
                //声明坐标标注
                dstr = db.GetDimstyleData();
                dstr.Name = "新样式";

                Application.SetSystemVariable("DIMBLK1","_DOT");
                dstr.Dimblk1 = db.Dimblk1;
                Application.SetSystemVariable("DIMBLK2","_CLOSEDBLANK");
                dstr.Dimblk2 = db.Dimblk2;
                dstr.Dimsah = true;

                dst.Add(dstr);
                tran.AddNewlyCreatedDBObject(dstr, true);

                //声明块表
                BlockTable bt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                //声明块表记录
                BlockTableRecord btr = tran.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
                //对齐标注
                AlignedDimension ad = new AlignedDimension();
                ad.XLine1Point = new Point3d(0,0,0);
                ad.XLine2Point = new Point3d(5,0,0);
                ad.DimLinePoint = new Point3d(1,1,0);
                ad.DimensionStyle = dst["新样式"];
                btr.AppendEntity(ad);
                tran.AddNewlyCreatedDBObject(ad, true);

                tran.Commit();
            }
        }

        //标注显示内容和小数点
        [CommandMethod("BZXS")]
        public static void BZXS()
        {
            //当前文档
            Document doc = Application.DocumentManager.MdiActiveDocument;
            //当前数据库
            Database db = doc.Database;
            //开始事务
            using (Transaction tran = db.TransactionManager.StartTransaction())
            {
                //声明块表
                BlockTable bt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                //声明块表记录
                BlockTableRecord btr = tran.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
                //对齐标注

                AlignedDimension ad = new AlignedDimension();
                //起始点
                ad.XLine1Point = new Point3d(0, 0, 0);
                //终止点
                ad.XLine2Point = new Point3d(5, 0, 0);
                //经过点
                ad.DimLinePoint = new Point3d(1, 1, 0);
                //显示两位小数
                ad.Dimdec = 2;
                //标注内容
                ad.DimensionText = "线的长度 <>";
                btr.AppendEntity(ad);
                tran.AddNewlyCreatedDBObject(ad, true);

                tran.Commit();
            }
        }


        //创建多重引线
        [CommandMethod("DCYX")]
        public static void DCYX()
        {
            //当前文档
            Document doc = Application.DocumentManager.MdiActiveDocument;
            //当前数据库
            Database db = doc.Database;
            //开始事务
            using (Transaction tran = db.TransactionManager.StartTransaction())
            {
                //声明块表
                BlockTable bt = tran.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                //声明块表记录
                BlockTableRecord btr = tran.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
                
                //创建多重引线
                MLeader ML = new MLeader();
                int l = ML.AddLeader();
                int ln = ML.AddLeaderLine(l);

                ML.AddFirstVertex(ln,new Point3d(0,0,0));
                ML.AddLastVertex(ln,new Point3d(10,10,0));
                ML.ContentType = ContentType.MTextContent;

                MText mt = new MText();

                mt.Height = 2;
                mt.Location = new Point3d(10, 10, 0);
                mt.Contents = "测试";

                ML.MText = mt;


                btr.AppendEntity(ML);
                tran.AddNewlyCreatedDBObject(ML, true);

                tran.Commit();
            }
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AutoCAD .NET API(应用程序编程接口)是用于在AutoCAD软件中定制和扩展功能的编程工具。它提供了一组功能强大的类和方法,使开发人员能够通过编程方式访问和操作AutoCAD的各种对象和功能。 要下载AutoCAD .NET API,可以按照以下步骤进行操作: 1. 打开Autodesk官方网站,进入AutoCAD的下载页面。 2. 在页面上,找到AutoCAD .NET API的下载选项。通常可以在“附加工具”或“开发者工具”部分中找到。 3. 单击下载链接,选择适用于您的操作系统版本的AutoCAD .NET API软件包。 4. 点击下载按钮,等待下载完成。 在下载完成后,您可以按照以下步骤安装AutoCAD .NET API: 1. 打开下载文件的位置,双击运行安装程序。 2. 遵循安装程序的指示,选择您想要安装的文件夹和配置选项。 3. 完成安装后,您可以在指定的文件夹中找到安装文件和示例代码。 安装完成后,您可以开始使用AutoCAD .NET API来开发自定义功能。您可以使用.NET编程语言(如C#或VB.NET)来编写代码,并使用AutoCAD .NET API中的类和方法来访问和操作AutoCAD中的对象,如图形、图层、块等。您还可以创建自定义命令、工具栏、菜单和对话框,以及执行各种操作,如绘制、修改、查询和导出CAD数据。 总之,要下载AutoCAD .NET API,只需前往官方网站下载页面,并按照指示进行下载和安装即可。安装完成后,您可以使用AutoCAD .NET API进行自定义开发和定制AutoCAD软件的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值