public static void LoopSurfaces(string originalname, string filename, string coursecode, string hole, bool Is2013DXF) { string name = ""; Autodesk.AutoCAD.DatabaseServices.Database db = Application.DocumentManager.MdiActiveDocument.Database; try { //change working database HostApplicationServices.WorkingDatabase = db; //select objects from that database ObjectIdCollection collection = GetAllSurfaces(); //save objects to side database using (Transaction trans = db.TransactionManager.StartTransaction()) { foreach (ObjectId surfaceId in collection) { TinSurface surface = trans.GetObject(surfaceId, OpenMode.ForRead) as TinSurface; var facecol = ExtractFaces(surface); CreateFaces(facecol, filename, db); } trans.Commit(); } using (Transaction trans = db.TransactionManager.StartTransaction()) { db.SaveAs(filename, DwgVersion.Current); trans.Commit(); } if (IsZDrawing(filename)) { name = string.Format("z_{0}_{1}.dxf", coursecode, hole); filename = Path.Combine(Path.GetDirectoryName(filename), name); } if (!Is2013DXF) { db.DxfOut(filename.Replace(".DWG", ".dxf"), 16, DwgVersion.Current); } else { db.DxfOut(filename.Replace(".DWG", ".dxf"), 16, DwgVersion.AC1027); } } catch (System.Exception ex) { PGA.MessengerManager.MessengerManager.LogException(ex); } }
public static void AsyncDXFCall(string originalname, string filename, string coursecode, string hole, bool Is2013DXF, Autodesk.AutoCAD.DatabaseServices.Database db) { if (String.IsNullOrEmpty(filename)) { throw new ArgumentNullException(nameof(filename)); } if (String.IsNullOrEmpty(coursecode)) { throw new ArgumentNullException(nameof(coursecode)); } string name = ""; var doc = Application.DocumentManager.MdiActiveDocument; //Autodesk.AutoCAD.DatabaseServices.Database db = // Application.DocumentManager.MdiActiveDocument.Database; try { //Todo: A possible bug in IsZDrawing DXF //Todo: originalname to name ? if (IsZDrawing(filename)) { name = string.Format("z_{0}_{1}.dxf", coursecode, hole); filename = Path.Combine(Path.GetDirectoryName(filename), name); COMS.AddLog("Creating file Z-Surface DXF: " + name); originalname = filename; } else { COMS.AddLog("Creating file S-Surface DXF: " + name); } if (!Is2013DXF) { db.DxfOut(originalname.Replace(".DWG", ".dxf"), 16, DwgVersion.Current); } else { db.DxfOut(originalname.Replace(".DWG", ".dxf"), 16, DwgVersion.AC1027); } } catch (System.Exception ex) { PGA.MessengerManager.MessengerManager.LogException(ex); } }