Exemplo n.º 1
0
        public static void save(MyDB2 mydb)
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db  = doc.Database;
            Editor   ed  = doc.Editor;

            try
            {
                using (Transaction trans =
                           db.TransactionManager.StartTransaction())
                {
                    // Find the NOD in the database

                    DBDictionary nod = (DBDictionary)trans.GetObject(
                        db.NamedObjectsDictionaryId, OpenMode.ForWrite);

                    BinaryFormatter bf = new BinaryFormatter();
                    MemoryStream    ms = new MemoryStream();
                    bf.Serialize(ms, mydb);
                    ResultBuffer rf        = new ResultBuffer();
                    byte[]       buf       = ms.GetBuffer();
                    int          position  = 0;
                    int          remaining = buf.Length;
                    while (remaining > 0)
                    {
                        if (remaining >= 255)
                        {
                            byte[] chunk = new byte[255];
                            Buffer.BlockCopy(buf, position, chunk, 0, 255);
                            rf.Add(new TypedValue((int)DxfCode.BinaryChunk, chunk));
                            remaining -= 255;
                            position  += 255;
                        }
                        else
                        {
                            byte[] chunk = new byte[remaining];
                            Buffer.BlockCopy(buf, position, chunk, 0, remaining);
                            rf.Add(new TypedValue((int)DxfCode.BinaryChunk, chunk));
                            remaining = 0;
                        }
                    }

                    Xrecord myXrecord = new Xrecord();

                    myXrecord.Data = rf;

                    nod.SetAt("TerrainComputeC", myXrecord);

                    trans.AddNewlyCreatedDBObject(myXrecord, true);

                    trans.Commit();
                } // using
            }

            catch (System.Exception e)
            {
                ed.WriteMessage(e.ToString());
            }
        }
Exemplo n.º 2
0
        public static MyDB2 load()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db  = doc.Database;
            Editor   ed  = doc.Editor;

            try
            {
                using (Transaction trans = db.TransactionManager.StartTransaction())
                {
                    // Find the NOD in the database
                    DBDictionary nod = (DBDictionary)trans.GetObject(

                        db.NamedObjectsDictionaryId, OpenMode.ForWrite);

                    BinaryFormatter bf = new BinaryFormatter();
                    MemoryStream    ms = new MemoryStream();

                    Xrecord myXrecord = new Xrecord();

                    ObjectId myDataId = nod.GetAt("TerrainComputeC");

                    Xrecord readBack = (Xrecord)trans.GetObject(

                        myDataId, OpenMode.ForRead);
                    BinaryWriter bw = new BinaryWriter(ms);
                    foreach (TypedValue value in readBack.Data)
                    {
                        if (value.TypeCode == (int)DxfCode.BinaryChunk)
                        {
                            bw.Write((byte[])value.Value);
                        }
                    }
                    bw.Flush();
                    trans.Commit();
                    ms.Position = 0;
                    MyDB2 mydb = bf.Deserialize(ms) as MyDB2;
                    if (mydb != null)
                    {
                        mydb.init();
                    }
                    return(mydb);
                } // using
            }

            catch (System.Exception e)
            {
                System.Diagnostics.Debug.Print(e.ToString());
            }
            return(null);
        }
Exemplo n.º 3
0
 public UserCmd()
 {
     mydb = MyDB2.load();
     if (mydb == null)
     {
         mydb = new MyDB2();
         //reset();
         resetLine();
     }
     else
     {
         resetLine();
     }
     UserCmd.CurCmd = this;
     coord          = new CoordinateView(mydb);
     //this.contColorize = new ContourColorize2();
 }
Exemplo n.º 4
0
 void db_BeginSave(object sender, DatabaseIOEventArgs e)
 {
     MyDB2.save(this);
 }
Exemplo n.º 5
0
 public CoordinateView(MyDB2 db)
 {
     mydb = db;
 }