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(); } }
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(); } } }
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); }