Esempio n. 1
0
 public void DeleteTest()
 {
     DBDictionary dbDictionary = new DBDictionary();
     dbDictionary.Connection = GetConnection();
     dbDictionary.Delete("AEF29AAA-0F23-4ba3-AA10-BAE05B3E4503");
     dbDictionary.Load("AEF29AAA-0F23-4ba3-AA10-BAE05B3E4503");
     Assert.IsNull(dbDictionary.BusinessObject);
 }
Esempio n. 2
0
        public static ObjectId CreateDivision(String division, String manager)
        {
            Database db = HostApplicationServices.WorkingDatabase;
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                //Define a corporate level dictionary
                DBDictionary acmeDict;
                //First, get the NOD...
                DBDictionary NOD = (DBDictionary)trans.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForRead, false);
                try
                {
                    //if it	exists,	just get it
                    acmeDict = (DBDictionary)trans.GetObject(NOD.GetAt("ACME_DIVISION"), OpenMode.ForRead);
                }
                catch
                {
                    //Doesn//t exist, so create	one
                    NOD.UpgradeOpen();
                    acmeDict = new DBDictionary();
                    NOD.SetAt("ACME_DIVISION", acmeDict);
                    trans.AddNewlyCreatedDBObject(acmeDict, true);
                }

                //Now get the division we want from	acmeDict
                DBDictionary divDict;
                try
                {
                    divDict = (DBDictionary)trans.GetObject(acmeDict.GetAt(division), OpenMode.ForWrite);
                }
                catch
                {
                    acmeDict.UpgradeOpen();
                    divDict = new DBDictionary(); //Division	doesn//t exist,	create one
                    acmeDict.SetAt(division, divDict);
                    trans.AddNewlyCreatedDBObject(divDict, true);
                }

                //Now get the manager info from	the	division
                //We need to add the name of the division supervisor.  We//ll do this with another XRecord.
                Xrecord mgrXRec;
                try
                {
                    mgrXRec = (Xrecord)trans.GetObject(divDict.GetAt("Department	Manager"), OpenMode.ForWrite);
                }
                catch
                {
                    mgrXRec = new Xrecord();
                    mgrXRec.Data = new ResultBuffer(new TypedValue((int)DxfCode.Text, manager));
                    divDict.SetAt("Department Manager", mgrXRec);
                    trans.AddNewlyCreatedDBObject(mgrXRec, true);
                }

                trans.Commit();

                //return the department	manager	XRecord
                return mgrXRec.ObjectId;
            }
        }
Esempio n. 3
0
 public void CollectionTest()
 {
     InsertTest();
     DBDictionary dbDictionary = new DBDictionary();
     dbDictionary.Connection = GetConnection();
     DictionaryEntry entry = new DictionaryEntry();
     entry.Active = true;
     entry.Guid = "69E68ADF-A083-4889-BC11-8353B8CA5EAD";
     entry.Name = "Test";
     entry.Type = MWRCommonTypes.Enum.ObjectType.State;
     dbDictionary.Save(entry);
     DBDictionaryCollection collection = new DBDictionaryCollection(new SqlDataProvider());
     collection.Connection = GetConnection();
     collection.Load();
     Assert.IsTrue(collection.List.Count == 2);
     dbDictionary.Delete();
     dbDictionary.Delete("AEF29AAA-0F23-4ba3-AA10-BAE05B3E4503");
 }
Esempio n. 4
0
        /// <summary>
        /// Agrega un diccionario al diccionario de extensión de una entidad
        /// </summary>
        /// <param name="dictionaryName">El nombre del diccionario</param>
        /// <param name="ent">La entidad agregar el diccionario</param>
        /// <returns>El object id del diccionario recien creado</returns>
        public static ObjectId AddDictionary(Entity ent, String dictionaryName)
        {
            Database db = AcadApp.DocumentManager.MdiActiveDocument.Database;
            ObjectId id = new ObjectId();

            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                try
                {
                    Entity       e = (Entity)ent.ObjectId.GetObject(OpenMode.ForRead);
                    DBDictionary extDic;
                    if (e.ExtensionDictionary.IsValid)
                    {
                        extDic = (DBDictionary)e.ExtensionDictionary.GetObject(OpenMode.ForWrite);
                    }
                    else
                    {
                        e.UpgradeOpen();
                        e.CreateExtensionDictionary();
                        extDic = (DBDictionary)e.ExtensionDictionary.GetObject(OpenMode.ForWrite);
                    }
                    DBDictionary d = new DBDictionary();
                    extDic.SetAt(dictionaryName, d);
                    tr.AddNewlyCreatedDBObject(d, true);
                    id = d.ObjectId;
                    tr.Commit();
                }
                catch (AcadExc exc)
                {
                    ed.WriteMessage(exc.Message);
                    tr.Abort();
                }
                catch (System.Exception exc)
                {
                    ed.WriteMessage(exc.Message);
                    tr.Abort();
                }
            }
            return(id);
        }
Esempio n. 5
0
        // show all attributes of group object
        // just for debug
        // <param name="groupId">group id of object</param>
        public static void showAttr(ObjectId groupId)
        {
            Editor      ed    = Application.DocumentManager.MdiActiveDocument.Editor;
            Transaction trans = ed.Document.Database.TransactionManager.StartTransaction();

            try
            {
                Group ent = (Group)trans.GetObject(groupId, OpenMode.ForRead);
                // test the IsNull property of the ExtensionDictionary of the ent.
                if (ent.ExtensionDictionary.IsNull)
                {
                    return;
                }
                // variable as DBDictionary.
                DBDictionary extensionDict = (DBDictionary)trans.GetObject(ent.ExtensionDictionary, OpenMode.ForRead);
                DBObject     dbObj;
                foreach (System.Collections.DictionaryEntry dEntry in extensionDict)
                {
                    dbObj = (DBObject)trans.GetObject((ObjectId)dEntry.Value, OpenMode.ForRead, false);
                    if (dbObj is DBDictionary)
                    {
                    }
                    else if (dbObj is Xrecord)
                    {
                        foreach (TypedValue value in (Xrecord)dbObj)
                        {
                            ed.WriteMessage("\n" + value.TypeCode.ToString() + " . " + value.Value.ToString());
                        }
                    }
                }
            }
            catch (System.Exception e)
            {
                ed.WriteMessage("\n" + e.Message);
            }
            finally
            {
                trans.Dispose();
            }
        }
Esempio n. 6
0
        public override void Run(string filename, Database db)
        {
            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                try
                {
                    if (db.TileMode)
                    {
                        DBDictionary layoutDictionary = (DBDictionary)tr.GetObject(db.LayoutDictionaryId, OpenMode.ForRead);
                        if (layoutDictionary.Count != 0)
                        {
                            foreach (DBDictionaryEntry entry in layoutDictionary)
                            {
                                Layout layout = tr.GetObject(entry.Value, OpenMode.ForRead, false) as Layout;
                                if (layout == null || layout.LayoutName == "Model" || layout.GetViewports().Count == 0)
                                {
                                    continue;
                                }
                                else
                                {
                                    db.TileMode = false;

                                    BlockTable       bt  = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                                    BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.PaperSpace], OpenMode.ForWrite);
                                    btr.LayoutId = layout.Id;

                                    break;
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    OnError(ex);
                }

                tr.Commit();
            }
        }
Esempio n. 7
0
        /// <summary>
        /// objectIds에 들어있는 객체들로 group 객체를 생성합니다.
        /// </summary>
        /// <param name="groupName">Group의 이름입니다.</param>
        /// <param name="objectIds">객체의 ID들 입니다.</param>
        /// <returns></returns>
        public static ObjectId CreateGroup(string groupName, ObjectIdCollection objectIds)
        {
            Document doc      = DatabaseUtil.GetActiveDocument();
            Database db       = doc.Database;
            ObjectId idResult = ObjectId.Null;

            try
            {
                using (doc.LockDocument())
                {
                    using (Transaction tr = DatabaseUtil.GetTransaction(db))
                    {
                        DBDictionary oGroupDict = tr.GetObject(db.GroupDictionaryId, OpenMode.ForWrite) as DBDictionary;
                        Group        oGrp       = null;

                        if (oGroupDict.Contains(groupName))
                        {
                            oGrp = oGroupDict[groupName] as Group;
                            oGrp.Clear();
                        }

                        oGrp     = new Group(groupName, false);       // 새로운 그룹생성
                        idResult = oGroupDict.SetAt(groupName, oGrp); // 그룹을 그룹DB에 등록하고, ObjectId를 저장한다.
                        tr.AddNewlyCreatedDBObject(oGrp, true);       // 트랜잭션에 새로 추가

                        oGrp.InsertAt(0, objectIds);                  // 그룹에 객체를 추가합니다.

                        oGrp.Selectable = true;                       // 선택가능하게.

                        tr.Commit();
                    }
                }

                return(idResult);
            }
            catch (System.Exception ex)
            {
                return(ObjectId.Null);
            }
        }
 public void Write(Database db, Transaction t)
 {
     try
     {
         DBDictionary parentDict   = base.ParentDataset.Open(db, t, this.DictionaryName, (OpenMode)1);
         DBDictionary dBDictionary = this.WriteMapDictionary(parentDict, t);
         if (dBDictionary != null && this.Layers.Count > 0)
         {
             DBDictionary dBDictionary2 = new DBDictionary();
             dBDictionary.SetAt("ESRI_Layers", dBDictionary2);
             dBDictionary2.DisableUndoRecording(true);
             t.AddNewlyCreatedDBObject(dBDictionary2, true);
             foreach (MSCMapLayer current in this.Layers)
             {
                 current.WriteMapLayer(dBDictionary2, t);
             }
         }
     }
     catch
     {
     }
 }
Esempio n. 9
0
        public void Insert()
        {
            //ed.WriteMessage("Go to Insert \n");

            Database db = Application.DocumentManager.MdiActiveDocument.Database;

            using (DocumentLock docLock = Application.DocumentManager.MdiActiveDocument.LockDocument())
            {
                using (Transaction tr = db.TransactionManager.StartTransaction())
                {
                    DBObject dbObject = tr.GetObject(SelectedObjectId, OpenMode.ForRead);
                    if (dbObject.ExtensionDictionary == ObjectId.Null)
                    {
                        dbObject.UpgradeOpen();
                        dbObject.CreateExtensionDictionary();
                    }


                    //ed.WriteMessage(" AT ParentCode : {0} \n", ParentCode);
                    //ed.WriteMessage(" AT NodeCode : {0} \n", NodeCode);
                    //ed.WriteMessage(" AT NodeType : {0} \n", NodeType);
                    //ed.WriteMessage(" AT ProductCode : {0} \n", ProductCode);
                    //ed.WriteMessage(" AT Angle : {0} \n", Angle);

                    DBDictionary ExtensionDictionary = (DBDictionary)tr.GetObject(dbObject.ExtensionDictionary, OpenMode.ForWrite);
                    Xrecord      xrec = new Xrecord();
                    xrec.Data = new ResultBuffer(
                        new TypedValue((int)DxfCode.Text, ParentCode),
                        new TypedValue((int)DxfCode.Text, NodeCode),
                        new TypedValue((int)DxfCode.Int32, NodeType),
                        new TypedValue((int)DxfCode.Int32, ProductCode),
                        new TypedValue((int)DxfCode.Real, Angle));

                    ExtensionDictionary.SetAt("AT_INFO", xrec);
                    tr.AddNewlyCreatedDBObject(xrec, true);
                    tr.Commit();
                }
            }
        }
Esempio n. 10
0
        public bool HitDataFilter(ObjectId oid, Transaction tr)
        {
            bool dataFlag = true;
            var  data     = GetData();

            if (data.Any())
            {
                dataFlag = false;
                var obj = tr.GetObject(oid, OpenMode.ForRead);
                if (obj != null)
                {
                    if (!obj.ExtensionDictionary.IsNull && obj.ExtensionDictionary.IsValid)
                    {
                        using (DBDictionary dbextdic = tr.GetObject(obj.ExtensionDictionary, OpenMode.ForRead) as DBDictionary)
                        {
                            dataFlag = data.All(kv => IfEntityContainsKeyValue(dbextdic, kv, tr));
                        }
                    }
                }
            }
            return(dataFlag);
        }
Esempio n. 11
0
 /// <summary>
 /// 将图形数据库与tdGenParas中的数据同步
 /// </summary>
 /// <param name="db">图形数据库</param>
 /// <param name="tdGenParas">程序中的tdGenParas类</param>
 public static void SyncDwgToTdGenParas(this Database db, TendonGeneralParameters tdGenParas)
 {
     using (Transaction trans = db.TransactionManager.StartTransaction())//开始事务处理
     {
         // 获取当前图形数据库的有名对象字典
         DBDictionary dicts     = db.NamedObjectsDictionaryId.GetObject(OpenMode.ForWrite) as DBDictionary;
         ObjectId     tdsDictId = new ObjectId();             //
         if (!dicts.Contains("DA_Tendons"))                   //如果字典中不含DA_Tendons的字典项
         {
             tdsDictId = db.AddNamedDictionary("DA_Tendons"); //则添加该字典项
         }
         else//如果字典中含有DA_Tendons的字典项
         {
             tdsDictId = dicts.GetAt("DA_Tendons");//则获取该字典项
         }
         //将字典项内容与tdGenParas同步
         //管道偏差系数
         TypedValueList values = new TypedValueList();
         values.Add(DxfCode.Real, tdGenParas.Kii);
         tdsDictId.AddXrecord2DBDict("kii", values);
         //摩阻系数
         values = new TypedValueList();
         values.Add(DxfCode.Real, tdGenParas.Miu);
         tdsDictId.AddXrecord2DBDict("miu", values);
         //钢束弹性模量
         values = new TypedValueList();
         values.Add(DxfCode.Real, tdGenParas.Ep);
         tdsDictId.AddXrecord2DBDict("Ep", values);
         //张拉控制应力
         values = new TypedValueList();
         values.Add(DxfCode.Real, tdGenParas.CtrlStress);
         tdsDictId.AddXrecord2DBDict("ctrlStress", values);
         //张拉端工作长度
         values = new TypedValueList();
         values.Add(DxfCode.Real, tdGenParas.WorkLen);
         tdsDictId.AddXrecord2DBDict("workLen", values);
         trans.Commit();//执行事务处理
     }
 }
Esempio n. 12
0
        GetRecursiveDictionaryEntries(ObjectId dictId, ref ObjectIdCollection objIds, ref ArrayList names)
        {
            // NOTE: when recursively processing items in a dictionary
            // we may encounter things that are not derived from DBDictionary.
            // In that case, the cast to type DBDictionary will fail and
            // we'll just return without adding any nested items.
            DBObject     tmpObj = m_trHlp.Transaction.GetObject(dictId, OpenMode.ForRead);
            DBDictionary dbDict = tmpObj as DBDictionary;

            if (dbDict != null)
            {
                foreach (DictionaryEntry curEntry in dbDict)
                {
                    objIds.Add((ObjectId)curEntry.Value);
                    names.Add((string)curEntry.Key);

                    // if this is a dictionary, it will recursively add
                    // all of its children to the tree
                    GetRecursiveDictionaryEntries((ObjectId)curEntry.Value, ref objIds, ref names);
                }
            }
        }
Esempio n. 13
0
 /// <summary>
 /// 获取对象的扩展字典中的扩展记录
 /// </summary>
 /// <param name="objId">对象的id</param>
 /// <param name="xRecordSearchKey">扩展记录名称</param>
 /// <returns></returns>
 public static ResultBuffer GetObjXrecord(ObjectId objId, string xRecordSearchKey)
 {
     try
     {
         Document     doc            = Application.DocumentManager.MdiActiveDocument;
         Database     db             = doc.Database;
         DocumentLock m_DocumentLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument();
         using (Transaction tr = db.TransactionManager.StartTransaction())
         {
             DBObject obj    = objId.GetObject(OpenMode.ForRead); //以读的方式打开对象
             ObjectId dictId = obj.ExtensionDictionary;           //获取对象的扩展字典的id
             if (dictId.IsNull)
             {
                 tr.Commit();
                 m_DocumentLock.Dispose();
                 return(null);                                                       //若对象没有扩展字典,则返回null
             }
             DBDictionary dict = dictId.GetObject(OpenMode.ForRead) as DBDictionary; //获取对象的扩展字典
             if (!dict.Contains(xRecordSearchKey))
             {
                 tr.Commit();
                 m_DocumentLock.Dispose();
                 return(null);//如果扩展字典中没有包含指定关键字的扩展记录,则返回null;
             }
             //先要获取对象的扩展字典或图形中的有名对象字典,然后才能在字典中获取要查询的扩展记录
             ObjectId     xrecordId = dict.GetAt(xRecordSearchKey);                     //获取扩展记录对象的id
             Xrecord      xrecord   = xrecordId.GetObject(OpenMode.ForRead) as Xrecord; //根据id获取扩展记录对象
             ResultBuffer values    = xrecord.Data;
             tr.Commit();
             m_DocumentLock.Dispose();
             return(values);
         }
     }
     catch (System.Exception ex)
     {
         System.Windows.Forms.MessageBox.Show("扩展属性读" + ex.Message);
         return(null);
     }
 }
Esempio n. 14
0
        /// <summary>
        /// 创建组
        /// </summary>
        /// <param name="db">数据库对象</param>
        /// <param name="groupName">组名</param>
        /// <param name="ids">要加入实体的ObjectId集合</param>
        /// <returns>返回组的Id</returns>
        public static ObjectId CreateGroup(this Database db, string groupName, ObjectIdList ids)
        {
            //打开当前数据库的组字典对象
            DBDictionary groupDict = (DBDictionary)db.GroupDictionaryId.GetObject(OpenMode.ForRead);

            //如果已经存在指定名称的组,则返回
            if (groupDict.Contains(groupName))
            {
                return(ObjectId.Null);
            }
            //新建一个组对象
            Group group = new Group(groupName, true);

            groupDict.UpgradeOpen(); //切换组字典为写的状态
            //在组字典中加入新创建的组对象,并指定它的搜索关键字为groupName
            groupDict.SetAt(groupName, group);
            //通知事务处理完成组对象的加入
            db.TransactionManager.AddNewlyCreatedDBObject(group, true);
            group.Append(ids);         // 在组对象中加入实体对象
            groupDict.DowngradeOpen(); //为了安全,将组字典切换成写
            return(group.ObjectId);    //返回组的Id
        }
Esempio n. 15
0
        /// <summary>
        /// Get database's dictionary id.
        /// </summary>
        /// <param name="database"></param>
        /// <param name="dictName"></param>
        /// <param name="createIfNotExisting"></param>
        /// <returns></returns>
        public static ObjectId GetNodDictionaryId(Database database, string dictName, bool createIfNotExisting)
        {
            var dictId = ObjectId.Null;

            using (var transaction = database.TransactionManager.StartTransaction())
            {
                var nod = (DBDictionary)transaction.GetObject(database.NamedObjectsDictionaryId, OpenMode.ForRead);
                if (!nod.Contains(dictName) && createIfNotExisting)
                {
                    nod.UpgradeOpen();
                    var dict = new DBDictionary();
                    dictId = nod.SetAt(dictName, dict);
                    transaction.AddNewlyCreatedDBObject(dict, add: true);
                }
                else
                {
                    dictId = nod.GetAt(dictName);
                }
                transaction.Commit();
            }
            return(dictId);
        }
Esempio n. 16
0
        public void DelLayouts()
        {
            Document      doc        = Application.DocumentManager.MdiActiveDocument;
            Database      db         = doc.Database;
            Editor        ed         = doc.Editor;
            LayoutManager LMR        = LayoutManager.Current;
            ArrayList     Layoutlist = new ArrayList();

            using (Transaction Trans = db.TransactionManager.StartTransaction())
            {
                try
                {
                    //获取布局列表(剔除模型空间)
                    DBDictionary Layouts = Trans.GetObject(db.LayoutDictionaryId, OpenMode.ForRead) as DBDictionary;

                    foreach (DBDictionaryEntry item in Layouts)
                    {
                        if (item.Key != "Model")
                        {
                            Layout layoutobject = Trans.GetObject(item.Value, OpenMode.ForRead) as Layout;
                            Layoutlist.Add(layoutobject);
                        }
                    }
                    Trans.Commit();
                }
                catch (Autodesk.AutoCAD.Runtime.Exception Ex)
                {
                    ed.WriteMessage("出错啦!{0}", Ex.ToString());
                }
                finally
                {
                    Trans.Dispose();
                }
            }
            foreach (Layout LT in Layoutlist)
            {
                LMR.DeleteLayout(LT.LayoutName);
            }
        }
Esempio n. 17
0
        public static List <string> GetLayoutNames(FileInfo file)
        {
            var result = new List <string>();

            if (file == null && !file.Exists || file.Extension.ToLower() != ".dwg")
            {
                return(result);
            }
            Database sourceDb = new Database(false, true);

            sourceDb.ReadDwgFile(file.FullName, FileOpenMode.OpenForReadAndAllShare, true, "");
            using (Transaction tr = sourceDb.TransactionManager.StartTransaction())
            {
                DBDictionary lays = tr.GetObject(sourceDb.LayoutDictionaryId, OpenMode.ForRead) as DBDictionary;
                foreach (DBDictionaryEntry item in lays)
                {
                    result.Add(item.Key);
                }
                tr.Abort();
            }
            return(result);
        }
Esempio n. 18
0
        /// <summary>
        /// Gets a Named Objects Dictionary with the given key
        /// If the collection does not contain the key, it will create a new Named Objects Dictionary instance.
        /// </summary>
        /// <param name="key">Name of the Named objects Dictionary</param>
        /// <returns>DBDictionary</returns>
        public DBDictionary GetNamedObjectsDictionary(string key)
        {
            DBDictionary nod            = null;     // Named Objects Dictionary
            DBDictionary nod_collection = null;     // Named Objects Dictionary Collection

            try
            {
                _document.StartTransaction(tr =>
                {
                    Transaction t  = tr.Transaction;
                    nod_collection = t.GetObject <DBDictionary>(_nodId, OpenMode.ForRead);

                    if (nod_collection.Contains(key))
                    {
                        ObjectId oid = nod_collection.GetAt(key);
                        nod          = t.GetObject <DBDictionary>(oid, OpenMode.ForRead);
                    }
                    else
                    {
                        using (WriteEnabler we = new WriteEnabler(nod_collection))
                        {
                            if (nod_collection.IsWriteEnabled)
                            {
                                nod = new DBDictionary();
                                nod_collection.SetAt(key, nod);
                                t.AddNewlyCreatedDBObject(nod, true);
                            }
                        }
                    }
                });
            }
            catch (Exception ex)
            {
                string err_message = string.Format("DBDictionary named: '{0}' could not be found.", key);
                throw new XRecordHandlerException(err_message, ex);
            }

            return(nod);
        }
Esempio n. 19
0
        checkGroup(ObjectId idBlock)
        {
            Database db = HostApplicationServices.WorkingDatabase;

            using (Transaction tr = BaseObjs.startTransactionDb())
            {
                DBDictionary groups = (DBDictionary)db.GroupDictionaryId.GetObject(OpenMode.ForRead);

                foreach (DBDictionaryEntry entry in groups)
                {
                    ObjectId        idGrp  = entry.Value;
                    Group           group  = (Group)tr.GetObject(idGrp, (OpenMode.ForRead));
                    ObjectId[]      ids    = group.GetAllEntityIds();
                    List <ObjectId> lstIDs = new List <ObjectId>();

                    foreach (ObjectId id in ids)
                    {
                        lstIDs.Add(id);
                    }

                    if (lstIDs.Contains(idBlock))
                    {
                        group.UpgradeOpen();
                        foreach (ObjectId idObj in lstIDs)
                        {
                            group.Remove(idObj);

                            if (idObj.GetType() == typeof(Wipeout))
                            {
                                idObj.delete();
                            }
                        }
                        group.Erase();
                        break;
                    }
                }
                tr.Commit();
            }
        }
Esempio n. 20
0
        private void AddXRecord(Transaction tr, DBDictionary dict, string key, ObjectId id)
        {
            Xrecord xr = null;

            if (dict.Contains(key))
            {
                // Update the existing lock object
                xr      = tr.GetObject((ObjectId)dict[key], OpenMode.ForWrite) as Xrecord;
                xr.Data = SoftPointerForId(id);
            }
            else
            {
                // Create a new lock object
                xr = new Xrecord();
                xr.XlateReferences = true;
                xr.Data            = SoftPointerForId(id);

                dict.UpgradeOpen();
                dict.SetAt(key, xr);
                tr.AddNewlyCreatedDBObject(xr, true);
            }
        }
Esempio n. 21
0
        /// <summary>
        /// Проверка корректности желаемого имени листа
        /// Если лист с желаемым именем уже существует, к данному имени добавится "(1)"
        /// Если и это имя уже есть - цифра в скобках будет увеличиваться, пока не будет найден
        /// уникальный вариант
        /// </summary>
        /// <param name="expectedName">Желаемое имя листа</param>
        /// <returns>Корректное имя листа</returns>
        string CheckLayoutName(string expectedName)
        {
            string layoutName = expectedName;

            using (Transaction tr = this.wdb.TransactionManager.StartTransaction())
            {
                // Проверяем на наличие листа с указанным именем
                DBDictionary layoutsDic = (DBDictionary)tr.GetObject(wdb.LayoutDictionaryId, OpenMode.ForRead);
                if (layoutsDic.Contains(layoutName))
                {
                    // Если есть - добавляем номер в скобках, итерируем номер, пока имя не станет уникальным
                    int dublicateLayoutIndex = 1;
                    while (layoutsDic.Contains(string.Format("{0}({1})", layoutName, dublicateLayoutIndex)))
                    {
                        dublicateLayoutIndex++;
                    }
                    layoutName = string.Format("{0}({1})", layoutName, dublicateLayoutIndex);
                }
                tr.Commit();
            }
            return(layoutName);
        }
Esempio n. 22
0
        protected T LoadBinary <T>(string Key)
        {
            //Database acCurDb = Application.DocumentManager.MdiActiveDocument.Database;
            Transaction tr = acCurDb.TransactionManager.TopTransaction;

            // Find the NOD in the database
            DBDictionary nod = (DBDictionary)tr.GetObject(acCurDb.NamedObjectsDictionaryId, OpenMode.ForWrite);

            if (nod.Contains(Key))
            {
                ObjectId     plotId      = nod.GetAt(Key);
                Xrecord      plotXRecord = (Xrecord)tr.GetObject(plotId, OpenMode.ForRead);
                MemoryStream ms          = new MemoryStream();
                foreach (TypedValue value in plotXRecord.Data)
                {
                    byte[] data = new byte[512];

                    string message = (string)value.Value;
                    data = Encoding.ASCII.GetBytes(message);
                    ms.Write(data, 0, data.Length);
                }
                ms.Position = 0;
                XmlSerializer xml = new XmlSerializer(typeof(T));

                try
                {
                    string s = Encoding.ASCII.GetString(ms.ToArray());
                    return((T)xml.Deserialize(ms));
                }
                catch (Exception e)
                {
                    throw new NotImplementedException();
                }
            }
            else
            {
                return(default(T));
            }
        }
        public void Scan()
        {
            _logger.LogTrace($"Layout sheet controller scanning {_document.Filename}");
            Database acCurDb = _document;

            Transaction  acTrans = acCurDb.TransactionManager.TopTransaction;
            DBDictionary layouts = acTrans.GetObject(acCurDb.LayoutDictionaryId, OpenMode.ForRead) as DBDictionary;

            // Step through and list each named layout and Model
            foreach (DBDictionaryEntry item in layouts)
            {
                if (!Sheets.ContainsKey(item.Key) && item.Key != "Model")
                {
                    _logger.LogTrace($"Sheet {item.Key} found");
                    Layout      acLayout = acTrans.GetObject(item.Value, OpenMode.ForRead) as Layout;
                    LayoutSheet ls       = new LayoutSheet(_logger, acLayout);

                    _logger.LogTrace($"Sheet {item.Key} added");
                    Sheets.Add(item.Key, ls);
                }
            }
        }
Esempio n. 24
0
        public BlockReference GetRefBlkFromIndex(Database db, DBDictionary dbExt, string idHn)
        {
            BlockReference blk;

            using (var tr = db.TransactionManager.StartTransaction())
            {
                // Pega o handle a partir do id dado
                ObjectId     idId = dbExt.GetAt(idHn);
                Xrecord      xRec = (Xrecord)tr.GetObject(idId, OpenMode.ForRead);
                ResultBuffer rb   = xRec.Data;
                TypedValue[] tp   = rb.AsArray();
                string       hand = tp[0].Value as string;

                long     ln = Convert.ToInt64(hand, 16);
                Handle   hn = new Handle(ln);
                ObjectId id = db.GetObjectId(false, hn, 0);

                blk = (BlockReference)tr.GetObject(id, OpenMode.ForRead);
            }

            return(blk);
        }
        public static string ReadState(Document doc, string key)
        {
            // https://adndevblog.typepad.com/autocad/2012/05/how-can-i-store-my-custom-information-in-a-dwg-file.html

            var    db = doc.Database;
            string state;

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

                    if (!nod.Contains(key))
                    {
                        return(string.Empty);
                    }

                    ObjectId objectId = nod.GetAt(key);
                    Xrecord  xRecord  = (Xrecord)trans.GetObject(objectId, OpenMode.ForRead);
                    var      sb       = new StringBuilder();

                    foreach (TypedValue value in xRecord.Data)
                    {
                        sb.Append(value.Value.ToString());
                    }

                    state = sb.ToString();
                    trans.Commit();
                    return(state);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Error reading Speckle state.", ex);
            }
        }
Esempio n. 26
0
        /// <summary>
        /// This function get a sub "DBDictionary" objectId in a parent DBDictionary.
        /// </summary>
        /// <param name="parentDictionaryId">Parent Dictionary Id</param>
        /// <param name="childDictionaryName">Sub dictionary name</param>
        /// <param name="createForNone">If true, a new DBDictionary will be created and added under parent dictionary if not found.</param>
        /// <returns>Object Id of the retrieved Dictionary</returns>
        public static ObjectId GetSubDictionaryInDictionary(ObjectId parentDictionaryId, string childDictionaryName, bool createForNone = true)
        {
            if (parentDictionaryId.IsNull)
            {
                throw new ArgumentNullException(/*MSG0*/ "parentDictionaryId");
            }
            if (String.IsNullOrEmpty(childDictionaryName))
            {
                throw new ArgumentNullException(/*MSG0*/ "childDictionaryName");
            }

            var dictId = ObjectId.Null;

            using (Transaction myTrans = parentDictionaryId.Database.TransactionManager.StartTransaction())
            {
                var parentDictionary = (DBDictionary)myTrans.GetObject(parentDictionaryId, OpenMode.ForRead);

                if (parentDictionary.Contains(childDictionaryName))
                {
                    dictId = parentDictionary.GetAt(childDictionaryName);
                }
                else if (createForNone)
                {
                    // Create a new dictionary and add it.
                    using (var factoryDictory = new DBDictionary())
                    {
                        parentDictionary.UpgradeOpen();
                        parentDictionary.SetAt(childDictionaryName, factoryDictory);
                        myTrans.AddNewlyCreatedDBObject(factoryDictory, true);
                        dictId = factoryDictory.ObjectId;
                    }
                }

                myTrans.Commit();
            }

            return(dictId);
        }
Esempio n. 27
0
 public static void Set(string key, object value)
 {
     try {
         if (World.Docu != null)
         {
             if (World.Docu.IsActive == true && World.Docu.IsDisposed == false)
             {
                 using (World.Docu.LockDocument()) {
                     using (Database db = World.Docu.Database) {
                         using (Transaction tr = db.TransactionManager.StartTransaction()) {
                             using (DBDictionary dict = (DBDictionary)tr.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForWrite, false)) {
                                 DxfCode code = AcadIO.DxfHelper.GetFromObject(value);
                                 if (dict.Contains(key))
                                 {
                                     Xrecord      xRec   = (Xrecord)tr.GetObject(dict.GetAt(key), OpenMode.ForWrite);
                                     ResultBuffer resBuf = new ResultBuffer(new TypedValue(Convert.ToInt32(code), value));
                                     xRec.Data = resBuf;
                                 }
                                 else
                                 {
                                     Xrecord      xRec   = new Xrecord();
                                     ResultBuffer resBuf = new ResultBuffer(new TypedValue(Convert.ToInt32(code), value));
                                     xRec.Data = resBuf;
                                     dict.SetAt(key, xRec);
                                     tr.AddNewlyCreatedDBObject(xRec, true);
                                 }
                             }
                             tr.Commit();
                         }
                     }
                 }
             }
         }
     }
     catch (System.Exception ex) {
         Err.Log(ex);
     }
 }
Esempio n. 28
0
File: Dict.cs Progetto: 15831944/EM
        dictExists(string nameDict)
        {
            ObjectId     idDict  = ObjectId.Null;
            DBDictionary dictNOD = null;
            Database     db      = BaseObjs._db;

            try
            {
                using (Transaction tr = BaseObjs.startTransactionDb())
                {
                    try
                    {
                        dictNOD = (DBDictionary)db.NamedObjectsDictionaryId.GetObject(OpenMode.ForRead);
                    }
                    catch (System.Exception ex)
                    {
                        BaseObjs.writeDebug(ex.Message + " Dict.cs: line: 232");
                    }
                    try
                    {
                        if (dictNOD.Contains(nameDict))
                        {
                            idDict = dictNOD.GetAt(nameDict);
                        }
                    }
                    catch (System.Exception ex)
                    {
                        BaseObjs.writeDebug(ex.Message + " Dict.cs: line: 243");
                    }
                    tr.Commit();
                }
            }
            catch (System.Exception ex)
            {
                BaseObjs.writeDebug(ex.Message + " Dict.cs: line: 250");
            }
            return(idDict);
        }
Esempio n. 29
0
        public void CreateEmployee()
        {
            Database db = HostApplicationServices.WorkingDatabase;
            Editor   ed = Application.DocumentManager.MdiActiveDocument.Editor;

            using (Transaction trans = db.TransactionManager.StartTransaction())
                try
                {
                    BlockTable       bt  = (BlockTable)(trans.GetObject(db.BlockTableId, OpenMode.ForWrite));
                    BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
                    //Create the block reference...use the return from CreateEmployeeDefinition directly!
                    BlockReference br = new BlockReference(new Point3d(10, 10, 0), CreateEmployeeDefinition());
                    btr.AppendEntity(br);                    //Add the reference to ModelSpace
                    trans.AddNewlyCreatedDBObject(br, true); //Let the transaction know about it

                    //Create the custom per-employee data
                    Xrecord xRec = new Xrecord();
                    //We want to add 'Name', 'Salary' and 'Division' information.  Here is how:
                    xRec.Data = new ResultBuffer(
                        new TypedValue((int)DxfCode.Text, "Earnest Shackleton"),
                        new TypedValue((int)DxfCode.Real, 72000),
                        new TypedValue((int)DxfCode.Text, "Sales"));

                    //Next, we need to add this data to the 'Extension Dictionary' of the employee.
                    br.CreateExtensionDictionary();
                    DBDictionary brExtDict = (DBDictionary)trans.GetObject(br.ExtensionDictionary, OpenMode.ForWrite, false);
                    brExtDict.SetAt("EmployeeData", xRec); //Set our XRecord in the dictionary at 'EmployeeData'.
                    trans.AddNewlyCreatedDBObject(xRec, true);

                    trans.Commit();
                }
                catch (System.Exception ex)
                {
                    ed.WriteMessage("Error Creating Employee Block: " + ex.Message);
                }
            // No 'finally' block is required to clean up the transaction
            // since it was declared inside a 'using' statement.
        }
        protected DBDictionary WriteMapDictionary(DBDictionary parentDict, Transaction t)
        {
            DBDictionary result;

            try
            {
                parentDict.UpgradeOpen();
                DBDictionary dBDictionary = new DBDictionary();
                this.AcadDictionaryID = parentDict.SetAt(base.Name, dBDictionary);
                dBDictionary.DisableUndoRecording(true);
                t.AddNewlyCreatedDBObject(dBDictionary, true);
                DocUtil.WriteXRecord(t, dBDictionary, "AutoCADID", (DxfCode)330, base.RasterObjectId);
                DocUtil.WriteXRecord(t, dBDictionary, "ServiceFullName", (DxfCode)1, this.ServiceFullName);
                DocUtil.WriteXRecord(t, dBDictionary, "ConnectionName", (DxfCode)1, base.ConnectionName);
                DocUtil.WriteXRecord(t, dBDictionary, "ConnectionURL", (DxfCode)1, base.ConnectionURL);
                DocUtil.WriteXRecord(t, dBDictionary, "UserName", (DxfCode)1, base.UserName);
                if (base.Dynamic)
                {
                    Xrecord xrecord = new Xrecord();
                    xrecord.Data = (new ResultBuffer(new TypedValue[]
                    {
                        new TypedValue(290, true)
                    }));
                    dBDictionary.SetAt("Dynamic", xrecord);
                    xrecord.DisableUndoRecording(true);
                    t.AddNewlyCreatedDBObject(xrecord, true);
                }
                DocUtil.WriteBoundingBox(t, dBDictionary, base.BoundaryExtent);
                DocUtil.WriteXRecord(t, dBDictionary, "ImageFormat", (DxfCode)1, base.ExportOptions.Format);
                result = dBDictionary;
            }
            catch (Exception ex)
            {
                string arg_122_0 = ex.Message;
                result = null;
            }
            return(result);
        }
Esempio n. 31
0
        public static AT_SUB SelectBySelectedObjectId(ObjectId SelectedObjectId)
        {
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;

            AT_SUB at_SUB = new AT_SUB();

            Database db = Application.DocumentManager.MdiActiveDocument.Database;

            using (DocumentLock docLock = Application.DocumentManager.MdiActiveDocument.LockDocument())
            {
                using (Transaction tr = db.TransactionManager.StartTransaction())
                {
                    DBObject ent = tr.GetObject(SelectedObjectId, OpenMode.ForRead);

                    if (ent.ExtensionDictionary != ObjectId.Null)
                    {
                        DBDictionary ExtDict = (DBDictionary)tr.GetObject(ent.ExtensionDictionary, OpenMode.ForRead);

                        if (ExtDict.Contains("AT_SUB"))
                        {
                            at_SUB.SelectedObjectId = SelectedObjectId;
                            Xrecord xrec = (Xrecord)tr.GetObject(ExtDict.GetAt("AT_SUB"), OpenMode.ForRead);
                            foreach (TypedValue tv in xrec.Data)
                            {
                                string Temp = tv.Value.ToString().Substring(1, tv.Value.ToString().Length - 2);
                                //ed.WriteMessage("{0} \n", Temp);
                                at_SUB.SubIdCollection.Add(new ObjectId(new IntPtr(int.Parse(Temp))));
                            }
                        }
                        else
                        {
                            //ed.WriteMessage("AT_SUB : NOT EXIST \n");
                        }
                    }
                }
            }
            return(at_SUB);
        }
Esempio n. 32
0
        //为当前图形添加一个新的表格样式
        public static ObjectId AddTableStyle(string style)
        {
            ObjectId styleId; // 存储表格样式的Id
            Database db = HostApplicationServices.WorkingDatabase;

            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                // 打开表格样式字典
                DBDictionary dict = (DBDictionary)db.TableStyleDictionaryId.GetObject(OpenMode.ForRead);
                if (dict.Contains(style))        // 如果存在指定的表格样式
                {
                    styleId = dict.GetAt(style); // 获取表格样式的Id
                }
                else
                {
                    TableStyle ts = new TableStyle(); // 新建一个表格样式
                    // 设置表格的标题行为灰色
                    //ts.SetBackgroundColor(Color.FromColorIndex(ColorMethod.ByAci, 8), (int)RowType.TitleRow);
                    // 设置表格所有行的外边框的线宽为0.30mm
                    ts.SetGridLineWeight(LineWeight.LineWeight030, (int)GridLineType.OuterGridLines, TableTools.AllRows);
                    // 不加粗表格表头行的底部边框
                    ts.SetGridLineWeight(LineWeight.LineWeight000, (int)GridLineType.HorizontalBottom, (int)RowType.HeaderRow);
                    // 不加粗表格数据行的顶部边框
                    ts.SetGridLineWeight(LineWeight.LineWeight000, (int)GridLineType.HorizontalTop, (int)RowType.DataRow);
                    // 设置表格中所有行的文本高度为1
                    ts.SetTextHeight(1, TableTools.AllRows);
                    // 设置表格中所有行的对齐方式为正中
                    ts.SetAlignment(CellAlignment.MiddleCenter, TableTools.AllRows);
                    dict.UpgradeOpen();//切换表格样式字典为写的状态
                    // 将新的表格样式添加到样式字典并获取其Id
                    styleId = dict.SetAt(style, ts);
                    // 将新建的表格样式添加到事务处理中
                    trans.AddNewlyCreatedDBObject(ts, true);
                    trans.Commit();
                }
            }
            return(styleId); // 返回表格样式的Id
        }
Esempio n. 33
0
        //Creates a custom property in object contains number of floors and bars
        public void SaveToDB(ObjectId objectId, int floorNum, int numBars)
        {
            Document document = Application.DocumentManager.MdiActiveDocument;
            Database database = document.Database;

            using (Transaction transaction = database.TransactionManager.StartTransaction())
            {
                DBObject databaseObject = transaction.GetObject(objectId, OpenMode.ForRead);

                ObjectId extId = databaseObject.ExtensionDictionary;

                if (extId == ObjectId.Null)
                {
                    databaseObject.UpgradeOpen();
                    databaseObject.CreateExtensionDictionary();
                    extId = databaseObject.ExtensionDictionary;
                }

                DBDictionary dbExt = (DBDictionary)transaction.GetObject(extId, OpenMode.ForRead);

                if (!dbExt.Contains("CustomProp"))
                {
                    dbExt.UpgradeOpen();
                    Xrecord      xRec = new Xrecord();
                    ResultBuffer rb   = new ResultBuffer
                    {
                        new TypedValue((int)DxfCode.ExtendedDataAsciiString, floorNum.ToString()),
                        new TypedValue((int)DxfCode.ExtendedDataAsciiString, numBars.ToString())
                    };

                    xRec.Data = rb;
                    dbExt.SetAt("CustomProp", xRec);
                    transaction.AddNewlyCreatedDBObject(xRec, true);
                }

                transaction.Commit();
            }
        }
Esempio n. 34
0
 /// <summary>
 /// Agrega un diccionario al diccionario de AutoCAD
 /// </summary>
 /// <param name="dictionaryName">El nombre del diccionario</param>
 /// <returns>El object id del nuevo diccionario</returns>
 public ObjectId AddDictionary(String dictionaryName)
 {
     Database db = AcadApp.DocumentManager.MdiActiveDocument.Database;
     ObjectId id = new ObjectId();
     using (Transaction tr = db.TransactionManager.StartTransaction())
     {
         try
         {
             DBDictionary NOD = (DBDictionary)NOD_ID.GetObject(OpenMode.ForWrite);
             DBDictionary d = new DBDictionary();
             NOD.SetAt(dictionaryName, d);
             tr.AddNewlyCreatedDBObject(d, true);
             id = d.ObjectId;
             tr.Commit();
         }
         catch (Exception exc)
         {
             ed.WriteMessage(exc.Message);
             tr.Abort();
         }
     }
     return id;
 }
Esempio n. 35
0
 /// <summary>
 /// Agrega un diccionario a otro diccionario, si el id es de una entidad el
 /// diccionario que se abre es el del extensión
 /// </summary>
 /// <param name="dName">El nombre del diccionario</param>
 /// <param name="objId">El id del objeto</param>
 /// <returns>El object id del diccionario del nuevo diccionario</returns>
 public ObjectId AddDictionary(ObjectId objId, String dName)
 {
     Database db = AcadApp.DocumentManager.MdiActiveDocument.Database;
     ObjectId id = new ObjectId();
     using (Transaction tr = db.TransactionManager.StartTransaction())
     {
         try
         {
             DBObject obj = objId.GetObject(OpenMode.ForRead);
             DBDictionary dic = null;
             if (obj is Entity)
             {
                 Entity ent = obj as Entity;
                 if (ent.ExtensionDictionary.IsValid)
                     dic = (DBDictionary)ent.ExtensionDictionary.GetObject(OpenMode.ForWrite);
                 else
                 {
                     ent.UpgradeOpen();
                     ent.CreateExtensionDictionary();
                     dic = (DBDictionary)ent.ExtensionDictionary.GetObject(OpenMode.ForWrite);
                 }
             }
             else if (obj is DBDictionary)
                 dic = (DBDictionary)objId.GetObject(OpenMode.ForWrite);
             //Si el id fue de una entidad o de otro diccionario,
             //se tuvo que abrir algun diccionario.
             if (dic != null)
             {
                 DBDictionary newDic = new DBDictionary();
                 dic.SetAt(dName, newDic);
                 tr.AddNewlyCreatedDBObject(newDic, true);
                 id = newDic.ObjectId;
             }
             tr.Commit();
         }
         catch (Exception exc)
         {
             ed.WriteMessage(exc.Message);
             tr.Abort();
         }
     }
     return id;
 }
Esempio n. 36
0
        private ObjectId CreateDivision(string division, string manager)
        {
            ObjectId retId = ObjectId.Null;
            Database db = HostApplicationServices.WorkingDatabase;
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                // First, get the Named Objects Dictionary (NOD)...
                DBDictionary NOD = (DBDictionary)trans.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForWrite);
                // Define a corporate level dictionary
                DBDictionary acmeDict;

                // here's another way to check to see if an entry exists, using try/catch instead of has[]
                try
                {
                    // Just throw if it doesn't exist...do nothing else
                    acmeDict = (DBDictionary)trans.GetObject(NOD.GetAt("ACME_DIVISION"), OpenMode.ForRead);
                }
                catch
                {
                    //Doesn't exist, so create one, and set it in the NOD?/font>
                    acmeDict = new DBDictionary();
                    NOD.SetAt("ACME_DIVISION", acmeDict);
                    trans.AddNewlyCreatedDBObject(acmeDict, true);
                }

                // Now get the division we want from acmeDict
                DBDictionary divDict;
                try
                {
                    divDict = (DBDictionary)trans.GetObject(acmeDict.GetAt(division), OpenMode.ForWrite);
                }
                catch
                {
                    divDict = new DBDictionary();
                    //Division doesn't exist, create one
                    acmeDict.UpgradeOpen();
                    acmeDict.SetAt(division, divDict);
                    trans.AddNewlyCreatedDBObject(divDict, true);
                }

                // Now get the manager info from the division
                // We need to add the name of the division supervisor.  We'll do this with another XRecord.
                Xrecord mgrXRec;
                try
                {
                    mgrXRec = (Xrecord)trans.GetObject(divDict.GetAt("Department Manager"), OpenMode.ForWrite);
                }
                catch
                {
                    mgrXRec = new Xrecord();
                    mgrXRec.Data = new ResultBuffer(new TypedValue((int)DxfCode.Text, manager));
                    divDict.SetAt("Department Manager", mgrXRec);
                    trans.AddNewlyCreatedDBObject(mgrXRec, true);
                }

                // Return the department manager XRecord
                retId = mgrXRec.ObjectId;
                trans.Commit();
            }
            return retId;
        }
Esempio n. 37
0
        private void CreateDivision()
        {
            Database db = HostApplicationServices.WorkingDatabase;
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                //First, get the NOD...
                DBDictionary NOD = (DBDictionary)trans.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForWrite);
                //Define a corporate level dictionary
                DBDictionary acmeDict;

                try
                {
                    //Just throw if it doesn't exist...do nothing else
                    acmeDict = (DBDictionary)trans.GetObject(NOD.GetAt("ACME_DIVISION"), OpenMode.ForRead);
                }
                catch
                {
                    //Doesn't exist, so create one, and set it in the NOD?/font>
                    acmeDict = new DBDictionary();
                    NOD.SetAt("ACME_DIVISION", acmeDict);
                    trans.AddNewlyCreatedDBObject(acmeDict, true);
                }

                //Now get the division we want from acmeDict
                DBDictionary divDict;
                try
                {
                    divDict = (DBDictionary)trans.GetObject(acmeDict.GetAt("Sales"), OpenMode.ForWrite);
                }
                catch
                {
                    divDict = new DBDictionary();
                    //Division doesn't exist, create one
                    acmeDict.UpgradeOpen();
                    acmeDict.SetAt("Sales", divDict);
                    trans.AddNewlyCreatedDBObject(divDict, true);
                }

                //Now get the manager info from the division
                //We need to add the name of the division supervisor.  We'll do this with another XRecord.
                Xrecord mgrXRec;

                try
                {
                    mgrXRec = (Xrecord)trans.GetObject(divDict.GetAt("Department Manager"), OpenMode.ForWrite);
                }
                catch
                {
                    mgrXRec = new Xrecord();
                    mgrXRec.Data = new ResultBuffer(new TypedValue((int)DxfCode.Text, "Randolph P. Brokwell"));
                    divDict.SetAt("Department Manager", mgrXRec);
                    trans.AddNewlyCreatedDBObject(mgrXRec, true);
                }

                trans.Commit();
            }
        }
Esempio n. 38
0
        public void AddInNOD()
        {
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            ed.WriteMessage("����������ʵ����������\n");
            Database db = HostApplicationServices.WorkingDatabase;
            using (Transaction trans = db.TransactionManager.StartTransaction())
            {
                //��ȡ��������ʵ䣨NOD)
                DBDictionary NOD =trans.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForWrite) as DBDictionary ;
                // ����һ���µĴʵ�
                DBDictionary copyrightDict;
                // �ж��Ƿ����COPYRIGHT�ʵ䣬û���򴴽�
                try
                {
                    // ��ȡCOPYRIGHT�ʵ�
                    copyrightDict = (DBDictionary)trans.GetObject(NOD.GetAt("COPYRIGHT"), OpenMode.ForRead);
                }
                catch
                {
                    //��NOD�´���COPYRIGHT�ʵ�
                    copyrightDict = new DBDictionary();
                    NOD.SetAt("COPYRIGHT", copyrightDict);
                    trans.AddNewlyCreatedDBObject(copyrightDict, true);
                }

                // ��copyrightDict�У���ȡ�򴴽� "author" �ʵ�
                DBDictionary authorDict;
                try
                {
                    authorDict = (DBDictionary)trans.GetObject(copyrightDict.GetAt("Author"), OpenMode.ForWrite);
                }
                catch
                {
                    authorDict = new DBDictionary();
                    //"author" doesn't exist, create one
                    copyrightDict.UpgradeOpen();
                    copyrightDict.SetAt("Author", authorDict);
                    trans.AddNewlyCreatedDBObject(authorDict, true);
                }

                // ͨ��Xrecord��ResultBuffer�����չ����
                Xrecord authorRec;
                try
                {
                    authorRec = (Xrecord)trans.GetObject(authorDict.GetAt("AuthorInfo"), OpenMode.ForWrite);
                }
                catch
                {
                    authorRec = new Xrecord();
                    authorRec.Data = new ResultBuffer(new TypedValue((int)DxfCode.Text, "����"));
                    authorDict.SetAt("AuthorInfo", authorRec);
                    trans.AddNewlyCreatedDBObject(authorRec, true);
                }
                trans.Commit();
            }
        }
Esempio n. 39
0
 public bool UpdateDictionary(string Guid, int newState, string newConfig)
 {
     DBDictionary dbDictionary = new DBDictionary(dataProvider);
     dbDictionary.Connection = connection;
     dbDictionary.Load(Guid);
     dbDictionary.BusinessObject.Active = newState == 1;
     dbDictionary.BusinessObject.Config = newConfig;
     return dbDictionary.Save();
 }
Esempio n. 40
0
 public bool MWRStateExists(string guid, ref bool active)
 {
     DBDictionary dbDictionary = new DBDictionary(dataProvider);
     dbDictionary.Connection = connection;
     dbDictionary.Load(guid);
     if (dbDictionary.BusinessObject != null)
     {
         active = dbDictionary.BusinessObject.Active;
         return true;
     }
     return false;
 }
Esempio n. 41
0
 public void InsertTest()
 {
     DBDictionary dbDictionary = new DBDictionary();
     dbDictionary.Connection = GetConnection();
     DictionaryEntry entry = new DictionaryEntry();
     entry.Active = true;
     entry.Guid = "AEF29AAA-0F23-4ba3-AA10-BAE05B3E4503";
     entry.Name = "Test";
     entry.Type = MWRCommonTypes.Enum.ObjectType.State;
     Assert.IsTrue(dbDictionary.Save(entry));
 }
Esempio n. 42
0
        private static ObjectId getDict()
        {
            ObjectId idDic = ObjectId.Null;
            Database db = HostApplicationServices.WorkingDatabase;

            using (DBDictionary nod = (DBDictionary)db.NamedObjectsDictionaryId.Open(OpenMode.ForRead))
            {
                if (!nod.Contains(_dicName))
                {
                    nod.UpgradeOpen();
                    using (var dic = new DBDictionary())
                    {
                        idDic = nod.SetAt(_dicName, dic);
                        dic.TreatElementsAsHard = true;
                    }
                }
                else idDic = nod.GetAt(_dicName);
            }
            return idDic;
        }
Esempio n. 43
0
 public void LoadTest()
 {
     DBDictionary dbDictionary = new DBDictionary();
     dbDictionary.Connection = GetConnection();
     dbDictionary.Load("AEF29AAA-0F23-4ba3-AA10-BAE05B3E4503");
     Assert.IsNotNull(dbDictionary.BusinessObject);
     Assert.IsTrue(dbDictionary.BusinessObject.Active);
     Assert.IsTrue(dbDictionary.BusinessObject.Name == "Test");
     Assert.IsTrue(dbDictionary.BusinessObject.Type == MWRCommonTypes.Enum.ObjectType.State);
 }
Esempio n. 44
0
 public void UpdateTest()
 {
     DBDictionary dbDictionary = new DBDictionary();
     dbDictionary.Connection = GetConnection();
     dbDictionary.Load("AEF29AAA-0F23-4ba3-AA10-BAE05B3E4503");
     dbDictionary.BusinessObject.Active = false;
     dbDictionary.BusinessObject.Name = "Test2";
     dbDictionary.BusinessObject.Type = MWRCommonTypes.Enum.ObjectType.Task;
     dbDictionary.Save();
     dbDictionary.Load("AEF29AAA-0F23-4ba3-AA10-BAE05B3E4503");
     Assert.IsFalse(dbDictionary.BusinessObject.Active);
     Assert.IsTrue(dbDictionary.BusinessObject.Name == "Test2");
     Assert.IsTrue(dbDictionary.BusinessObject.Type == MWRCommonTypes.Enum.ObjectType.Task);
 }