.NET
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
Outputting a dxf file from an active drawing.
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
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.
Re: Outputting a dxf file from an active drawing.
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
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.

