马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
原文地址
我们一般都是把图元添加到模型空间,但是有时候我们需要添加到布局中,那如何做的,见下面代码,不多说,大家一看就明白。 使用到了扩展方法,这样就像给ent加了个方法一用,用起来比较方便。(当然如果你不想用,也行)- /// <summary>
- /// 开始当前事务处理
- /// </summary>
- /// <returns>开始当前事务处理</returns>
- public static Autodesk.AutoCAD.DatabaseServices.Transaction StartTransaction
- {
- get
- {
- return Application.DocumentManager.MdiActiveDocument.TransactionManager.StartTransaction();
- }
- }
首先是定义一个静态属性,这样就不需要每次都输入那一长串的字母了。接下来就是那个添加到任意空间的代码了。
- /// <summary>
- /// 图元添加到任意空间
- /// </summary>
- public static ObjectId AddToSomeSpace(this Autodesk.AutoCAD.DatabaseServices.Entity ent, string LayoutName)
- {
- ObjectId entId = ObjectId.Null;
- using (Transaction trans = StartTransaction)
- {
- DBDictionary dict = (DBDictionary)trans.GetObject(CurrentDatabase.LayoutDictionaryId, OpenMode.ForRead);//得到所有空间,包括模型及布局
- ObjectId lyid = dict.GetAt(LayoutName);
- Layout ly = (Layout)trans.GetObject(lyid, OpenMode.ForRead);
- BlockTableRecord btr = (BlockTableRecord)trans.GetObject(ly.BlockTableRecordId, OpenMode.ForWrite);
- entId = btr.AppendEntity(ent);
- trans.AddNewlyCreatedDBObject(ent, true);
- trans.Commit();
- }
- return entId;
- }
举个例子,如果需要添加到模型空间,那就需要上面LayoutName输入"Model",但是我们一般都是写入模型空间,所以为了方便,就再弄一个扩展方法:如下
- /// <summary>
- /// 图元添加到模型空间
- /// </summary>
- public static ObjectId AddToModelSpace(this Autodesk.AutoCAD.DatabaseServices.Entity ent)
- {
- return ent.AddToSomeSpace("Model");
- }
如果添加到别的布局,直接ent.AddToSomeSpace("Model"),把"Model"改为其他布局名就OK了。
|