Playing with the next step .. adding multiple Entities to the Database in one Transaction
Any Comments ?
The Tester :
using System;
using System.Diagnostics;
using System.Collections;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using AcadApplication = Autodesk.AutoCAD.ApplicationServices.Application;
using AcadDatabase = Autodesk.AutoCAD.DatabaseServices.Database;
using AcadEditor = Autodesk.AutoCAD.EditorInput.Editor;
using AcadTransaction = Autodesk.AutoCAD.DatabaseServices.Transaction;
using AcadTransactionManager = Autodesk.AutoCAD.DatabaseServices.TransactionManager;
using KdubTest.Util;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Colors;
// NOTE: LoaderLock exception break toggled OFF to suit vs2005 in AC2006. kwb
[assembly: CommandClass(typeof(KdubTest.TestClass))]
namespace KdubTest
{
public class TestClass
{
//----------------------------
[CommandMethod("TestCircles", CommandFlags.Modal)]
static public void TestCircles()
{
AcadDatabase db = AcadApplication.DocumentManager.MdiActiveDocument.Database;
// These points are in World UCS, irrespective of current UCS
// Look at Matrix translations
Point3d centerPoint_01 = new Point3d(70.0, 70.0, 0.0);
Vector3d normalZ = new Vector3d(0.0, 0.0, 1.0);
double radius_01 = 20.0;
double radius_02 = 30.0;
double radius_03 = 40.0;
double radius_04 = 50.0;
double radius_05 = 60.0;
double radius_06 = 70.0;
Circle circle_01 = new Circle(centerPoint_01, normalZ, radius_01);
Circle circle_02 = new Circle(centerPoint_01, normalZ, radius_02);
Circle circle_03 = new Circle(centerPoint_01, normalZ, radius_03);
Circle circle_04 = new Circle(centerPoint_01, normalZ, radius_04);
Circle circle_05 = new Circle(centerPoint_01, normalZ, radius_05);
Circle circle_06 = new Circle(centerPoint_01, normalZ, radius_06);
Tbl.AddEntities(db, new Entity[] {circle_01, circle_02, circle_03, circle_04, circle_05, circle_06 });
}
////----------------------------
}
}
From the Library <snipped> :
using System;
using System.Diagnostics;
using System.Collections;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using AcadApplication = Autodesk.AutoCAD.ApplicationServices.Application;
using AcadDatabase = Autodesk.AutoCAD.DatabaseServices.Database;
using AcadEditor = Autodesk.AutoCAD.EditorInput.Editor;
using AcadTransaction = Autodesk.AutoCAD.DatabaseServices.Transaction;
using AcadTransactionManager = Autodesk.AutoCAD.DatabaseServices.TransactionManager;
namespace KdubTest.Util
{
public sealed class Tbl
{
public Tbl()
{
}
//-----------------------------
public static ObjectIdCollection AddEntities(Database db, params Entity[] ents)
{
ObjectIdCollection collection = new ObjectIdCollection();
using (Transaction tr = db.TransactionManager.StartTransaction()) {
BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead, false);
BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite); ;
Entity[] entityArray = ents;
foreach (Entity ent in ents) {
collection.Add(btr.AppendEntity(ent));
tr.AddNewlyCreatedDBObject(ent, true);
}
tr.Commit();
}
return collection;
}
//-----------------------------
}
}