基本信息
源码名称:CAD图框外扩
源码大小:0.02M
文件格式:.rar
开发语言:C#
更新时间:2020-08-14
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 10 元×
微信扫码支付:10 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
using System; using System.Collections.Generic; using System.Linq; using System.Text; //用于图形文件中对对象的操作 //当处理图形文件中存储的对象中 //acdbmgd.dll using Autodesk.AutoCAD.Colors; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.Runtime; //using Autodesk.AutoCAD.GraphicsInterface; using Autodesk.AutoCAD.LayerManager; //用于对AutoCad应用程序进行操作 //当处理AutoCad应用程序和用户接口时引用 //acmgd.dll using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Windows; using Autodesk.AutoCAD.Windows.ToolPalette; using Autodesk.AutoCAD.Internal.Windows; using Autodesk.AutoCAD.Internal.Forms; namespace NetCad { public static class AddEntity { #region /// <summary> /// 向图形中添加单个实体 /// </summary> /// <param name="db">图形数据库</param> /// <param name="ent">图形对象</param> /// <returns>返回图形objectid</returns> public static ObjectId AddEntityToModelSpass(Database db, Entity ent) { //声明一个objectid,用于返回,以便后期修改图形的颜色等等。 ObjectId entId = ObjectId.Null; //开启事务处理 Transaction trans = db.TransactionManager.StartTransaction(); using (trans) { //打开块表 BlockTable blkTbl = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; //打开块表记录 BlockTableRecord blkTbRec = trans.GetObject(blkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; //添加图形到块表记录 //AppendEntity()返回值是objectid entId = blkTbRec.AppendEntity(ent); //更新数据信息 trans.AddNewlyCreatedDBObject(ent, true); //提交事务 trans.Commit(); } return entId; } #endregion #region /// <summary> /// 向图形中添加多个实体 /// </summary> /// <param name="db">图形数据库</param> /// <param name="ent">图形对象,可变参数</param> /// <returns>objectID,数组返回</returns> public static ObjectId[] AddEntityToModelSpace(Database db, params Entity[] ent) { ObjectId[] entId = new ObjectId[ent.Length]; Transaction trans = db.TransactionManager.StartTransaction(); using (trans) { BlockTable blkTbl = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; BlockTableRecord blkTblRec = trans.GetObject(blkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; for (int i = 0; i < ent.Length; i ) { entId[i] = blkTblRec.AppendEntity(ent[i]); trans.AddNewlyCreatedDBObject(ent[i], true); } trans.Commit(); } return entId; } #endregion #region /// <summary> /// 已知两点向图形中添加直线 /// </summary> /// <param name="db">图形数据库</param> /// <param name="startPoint">起点</param> /// <param name="endPoint">终点</param> /// <returns>直线实体id</returns> public static ObjectId AddLineToModelSpace(this Database db, Point3d startPoint, Point3d endPoint) { return AddEntity.AddEntityToModelSpass(db, new Line(startPoint, endPoint)); } #endregion #region /// <summary> /// 绘制多段线 /// </summary> /// <param name="db">图形数据库</param> /// <param name="Width">线宽</param> /// <param name="isClosed">是否闭合</param> /// <param name="vertices">多段线节点数</param> /// <returns>返回的objectId</returns> public static ObjectId PolyLineToModelSpace(Database db, double Width, bool isClosed, params Point2d[] vertices) { //首先判断多段线节点是否小于2 if (vertices.Length < 2) { return ObjectId.Null; } Polyline pLine = new Polyline(); //循环每个多段线节点 for (int i = 0; i < vertices.Length; i ) { pLine.AddVertexAt(i, vertices[i], 0, 0, 0); } //是否闭合 if (isClosed) { pLine.Closed = true; } //设置线宽 pLine.ConstantWidth = Width; //返回的objectId return AddEntity.AddEntityToModelSpass(db, pLine); } #endregion #region /// <summary> /// 绘制矩形 /// </summary> /// <param name="db">图形数据库</param> /// <param name="minpt2d">左下角点</param> /// <param name="maxpt2d">右上角点</param> /// <returns>返回的objectId</returns> public static ObjectId RectangularToModelSpace(Database db, Point2d minpt2d, Point2d maxpt2d) { Polyline PLine = new Polyline(); PLine.AddVertexAt(0, minpt2d, 0, 0, 0); PLine.AddVertexAt(1, new Point2d(maxpt2d.X, minpt2d.Y), 0, 0, 0); PLine.AddVertexAt(2, maxpt2d, 0, 0, 0); PLine.AddVertexAt(3, new Point2d(minpt2d.X, maxpt2d.Y), 0, 0, 0); PLine.Closed = true; return AddEntity.AddEntityToModelSpass(db, PLine); } #endregion public static void AddPline3D(Database db, Point3dCollection pt3Ction, bool isClosed) { Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor; //PromptPointResult prPtRes = ed.GetPoint(""); Polyline3d pl3d = new Polyline3d(Poly3dType.SimplePoly, pt3Ction, isClosed); AddEntity.AddEntityToModelSpace(db, pl3d); } } }