I have several closed ployline shapes in a particular layer, I need to know a way to:
a) pick all the entites on that layer
b) export to a dxf file each individual entity on the layer (yes, each entity saved to a separate dxf)
Any help would be great. I am almost positive I can answer 'a' on my own using an object collection and a conditional statement? I am really more interested in how to export an entity from current open drawing to a dxf file in .net
Solved! Go to Solution.
Solved by norman.yuan. Go to Solution.
Try this code:
using System.IO; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.Runtime; [assembly: CommandClass(typeof(DxfOut.MyCommands))] namespace DxfOut { public class MyCommands { [CommandMethod("MyDxfOut")] public static void RunMyCommand() { Document dwg = Application.DocumentManager.MdiActiveDocument; Editor ed = dwg.Editor; PromptSelectionResult res = ed.GetSelection(); if (res.Status != PromptStatus.OK) { ed.WriteMessage("\n*Cancel*"); return; } string folderPath = @"C:\Temp\ExportedFiles"; try { ExportEntityToDxf(dwg.Database, res.Value.GetObjectIds(), folderPath); ed.WriteMessage("\nSelected entities exported"); } catch (System.Exception ex) { ed.WriteMessage("\nError: {0}", ex.ToString()); ed.WriteMessage("\n*Cancel*"); } Autodesk.AutoCAD.Internal.Utils.PostCommandPrompt(); } private static void ExportEntityToDxf( Database sourceDB, ObjectId[] entIds, string folderName) { int i=0; foreach (ObjectId id in entIds) { i++; string fileName = folderName + "\\Test" + i + "_" + id.ObjectClass.DxfName + ".dxf"; if (File.Exists(fileName)) File.Delete(fileName); using (Database db = new Database(true, true)) { ObjectIdCollection ids = new ObjectIdCollection(new ObjectId[]{id}); sourceDB.Wblock(db, ids, Point3d.Origin, DuplicateRecordCloning.Ignore); db.DxfOut(fileName, 16, DwgVersion.Current); } } } } }
I use AutoCAD2012. I started a drawing, drew a few entities (lines, circles...), placed them in different layers, colors. Then run the command "MyDxfOut". I ended up with a bunch of *.dxf files in C:\temp folder, which I opened in AutoCAD, and saw each Dxf file has a single entity with its layer/color being the same as the source entity.
HTH.
Norman Yuan