public static string GetXML(this SvgDocument doc) { var ret = string.Empty; using (var ms = new MemoryStream()) { doc.Write(ms); ms.Position = 0; using (var sr = new StreamReader(ms)) ret = sr.ReadToEnd(); } return(ret); }
//Does not update dynamic blocks public static void exportblockstosvg() { DocumentCollection docCol = Application.DocumentManager; Database localDb = docCol.MdiActiveDocument.Database; Document doc = docCol.MdiActiveDocument; CivilDocument civilDoc = Autodesk.Civil.ApplicationServices.CivilApplication.ActiveDocument; Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; try { using (Transaction tx = localDb.TransactionManager.StartTransaction()) //using (Database symbolerDB = new Database(false, true)) { try { System.Data.DataTable fjvKomponenter = IntersectUtilities.CsvReader.ReadCsvToDataTable( @"X:\AutoCAD DRI - 01 Civil 3D\FJV Komponenter.csv", "FjvKomponenter"); //symbolerDB.ReadDwgFile(@"X:\0371-1158 - Gentofte Fase 4 - Dokumenter\01 Intern\" + // @"02 Tegninger\01 Autocad\Autocad\01 Views\0.0 Fælles\Symboler.dwg", // System.IO.FileShare.Read, true, ""); BlockTable bt = tx.GetObject(localDb.BlockTableId, OpenMode.ForRead) as BlockTable; foreach (oid Oid in bt) { BlockTableRecord btr = tx.GetObject(Oid, OpenMode.ForRead) as BlockTableRecord; if (ReadStringParameterFromDataTable(btr.Name, fjvKomponenter, "Navn", 0) != null)// && //btr.Name == "DN32 90gr twin") { Extents3d bbox = new Extents3d(); bbox.AddBlockExtents(btr); float width = ts(Math.Abs(bbox.MaxPoint.X - bbox.MinPoint.X)); float height = ts(Math.Abs(bbox.MaxPoint.Y - bbox.MinPoint.Y)); //PP = None, NP = Vertical flip, PN = Horizontal flip, NN = Vertical and Horizontal flip //NN is the same as rotating 180° Flip[] flips = new Flip[4] { Flip.PP, Flip.PN, Flip.NN, Flip.NP }; string[] flipNames = new string[] { "_PP", "_PN", "_NN", "_NP" }; for (int i = 0; i < flips.Length; i++) { Svg.SvgDocument svg = new Svg.SvgDocument() { Width = width, Height = height, ViewBox = new Svg.SvgViewBox(ts(bbox.MinPoint.X), ts(-bbox.MaxPoint.Y), width, height) }; var group = new Svg.SvgGroup(); svg.Children.Add(group); //WCS ORIGO transform matrix double[] dMatrix = new double[16] { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 }; Matrix3d transform = new Matrix3d(dMatrix); DrawOrDiscardEntity(btr, tx, transform, group);//, upscale); AddTransforms(group, flips[i]); svg.Write(@"X:\AutoCAD DRI - 01 Civil 3D\Svg\" + btr.Name + flipNames[i] + ".svg"); } } } } catch (System.Exception ex) { tx.Abort(); ed.WriteMessage(ex.Message); throw; } tx.Commit(); }; } catch (System.Exception ex) { ed.WriteMessage(ex.Message); } }