public void cmdAddDataTableData()
        {
            var doc = AcApp.DocumentManager.MdiActiveDocument;
            var ed  = doc.Editor;
            var db  = doc.Database;

            var result = ed.GetEntity("\nPlease select an entity to store data");

            if (result.Status != PromptStatus.OK)
            {
                return;
            }

            using (var tr = db.TransactionManager.StartTransaction())
            {
                var entity = tr.GetObject(result.ObjectId, OpenMode.ForWrite) as Entity;
                if (entity.ExtensionDictionary.IsNull)
                {
                    entity.CreateExtensionDictionary();
                }
                var extDictId = entity.ExtensionDictionary;
                var extDict   = tr.GetObject(extDictId, OpenMode.ForWrite) as DBDictionary;

                var dataTable = new DataTable();
                dataTable.AppendColumn(CellType.Integer, "IntValue");
                dataTable.AppendColumn(CellType.CharPtr, "Text");
                var rowData  = new DataCellCollection();
                var intValue = new DataCell();
                intValue.SetInteger(123);
                rowData.Add(intValue);
                var textValue = new DataCell();
                textValue.SetString("this is a text");
                rowData.Add(textValue);
                dataTable.AppendRow(rowData, true);

                extDict["MyData"] = dataTable;
                tr.AddNewlyCreatedDBObject(dataTable, true);

                tr.Commit();
            }
        }
Exemple #2
0
        public void AddData()
        {
            DataTable dt = new DataTable();

            dt.TableName = "ParameterTable";
            dt.AppendColumn(CellType.CharPtr, "Name");
            dt.AppendColumn(CellType.CharPtr, "Meterial");
            dt.AppendColumn(CellType.CharPtr, "Parameter");
            DataCellCollection Row       = new DataCellCollection();
            DataCell           Name      = new DataCell();
            DataCell           Meterial  = new DataCell();
            DataCell           Parameter = new DataCell();

            Name.SetString("工字钢");
            Meterial.SetString("Q235B");
            Parameter.SetString("200*200*32*25");
            Row.Add(Name);
            Row.Add(Meterial);
            Row.Add(Parameter);
            dt.AppendRow(Row, true);
            Document           doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
            Database           db  = doc.Database;
            Editor             ed  = doc.Editor;
            PromptEntityResult ent = ed.GetEntity("\n选择要写数据的对象");

            if (ent.Status == PromptStatus.OK)
            {
                using (Transaction tr = db.TransactionManager.StartTransaction())
                {
                    Entity entity = (Entity)tr.GetObject(ent.ObjectId, OpenMode.ForWrite, true);
                    if (entity.ExtensionDictionary == new ObjectId())
                    {
                        entity.CreateExtensionDictionary();
                    }
                    DBDictionary extensionDic = (DBDictionary)tr.GetObject(entity.ExtensionDictionary,
                                                                           OpenMode.ForWrite, false);
                    extensionDic.SetAt("ParameterTable", dt);
                    tr.Commit();
                }
            }
        }
Exemple #3
0
        private string createFlag(Document doc)
        {
            string   dbnamestr = null;
            Database db        = doc.Database;
            DBPoint  flag      = null;

            //创建点
            using (Transaction tm = db.TransactionManager.StartTransaction())
            {
                flag         = new DBPoint(new Point3d(0, 0, 0));
                flag.Layer   = "-735";
                flag.Visible = false;

                BlockTable       bt  = (BlockTable)tm.GetObject(db.BlockTableId, OpenMode.ForRead);
                BlockTableRecord btr = (BlockTableRecord)tm.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite, false);
                btr.AppendEntity(flag);

                tm.AddNewlyCreatedDBObject(flag, true);
                tm.Commit();
            }

            ////扩展数据
            Guid      guid = Guid.NewGuid();
            DataTable dt   = new DataTable();

            dt.TableName = "database flag";
            dt.AppendColumn(CellType.Bool, "hasDatabase");
            dt.AppendColumn(CellType.CharPtr, "databaseName");
            DataCellCollection row          = new DataCellCollection();
            DataCell           hasDatabase  = new DataCell();
            DataCell           databaseName = new DataCell();

            hasDatabase.SetBool(true);
            dbnamestr = guid.ToString();
            databaseName.SetString(dbnamestr);
            row.Add(hasDatabase);
            row.Add(databaseName);
            dt.AppendRow(row, true);

            using (Transaction tm = db.TransactionManager.StartTransaction())
            {
                Entity entity = (Entity)tm.GetObject(flag.ObjectId, OpenMode.ForWrite, false);

                if (entity.ExtensionDictionary == new ObjectId())
                {
                    entity.CreateExtensionDictionary();
                }

                DBDictionary extensionDic = (DBDictionary)tm.GetObject(flag.ExtensionDictionary, OpenMode.ForWrite, false);
                extensionDic.SetAt("database flag", dt);
                tm.AddNewlyCreatedDBObject(dt, true);

                ////锁定,冻结图层
                LayerTable       lt  = (LayerTable)tm.GetObject(db.LayerTableId, OpenMode.ForRead, false);
                LayerTableRecord ltr = (LayerTableRecord)tm.GetObject(lt["-735"], OpenMode.ForWrite, false);
                ltr.IsFrozen = true;

                tm.Commit();
            }
            return(dbnamestr);
        }