Esempio n. 1
0
        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);
            }
        }