实例介绍
【实例截图】
【核心代码】
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); } } }
标签: cad开发
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论