/// <summary> /// 注册新的应用程序名 /// </summary> /// <param name="db"></param> /// <param name="regAppName"></param> public bool AddRegAppName(string regAppName) { using (Transaction trans = database.TransactionManager.StartTransaction()) { try { if (!HasRegApp(regAppName)) { RegAppTbl.UpgradeOpen();//提升权限 RegAppTableRecord regRecord = new RegAppTableRecord() { Name = regAppName }; RegAppTbl.Add(regRecord); trans.AddNewlyCreatedDBObject(regRecord, true); RegAppTbl.DowngradeOpen();//降低权限 } trans.Commit(); return(true); } catch (Exception ex) { trans.Abort(); Logger.log("AddRegAppName", ex.Message); } return(false); } }
public Poze() { InitializeComponent(); imagini = new SortedDictionary <int, string>(); imaginiCheie = new SortedDictionary <int, string>(); listaFisiere = new List <string>(); ObjectIdCollection idAxuri = civDoc.GetAlignmentIds(); db = acadDoc.Database; ed = acadDoc.Editor; using (Transaction trans = db.TransactionManager.StartTransaction()) { foreach (ObjectId idAx in idAxuri) { Axuri.Add((Alignment)trans.GetObject(idAx, OpenMode.ForRead)); comboBoxAx.Items.Add(Axuri.Last()); } RegAppTable rat = (RegAppTable)trans.GetObject(db.RegAppTableId, OpenMode.ForWrite, false); if (!rat.Has("OVIDIU")) { //rat.UpgradeOpen(); RegAppTableRecord ratr = new RegAppTableRecord(); ratr.Name = "OVIDIU"; rat.Add(ratr); trans.AddNewlyCreatedDBObject(ratr, true); } trans.Commit(); } comboBoxAx.SelectedIndex = 0; //SelectieDirector(); //AfisarePoze(); }
AddRegAppTableRecord(string nameApp) { Database DB = BaseObjs._db; try { using (Transaction tr = BaseObjs.startTransactionDb()) { RegAppTable RAT = (RegAppTable)tr.GetObject(DB.RegAppTableId, OpenMode.ForRead); if (!RAT.Has(nameApp)) { RAT.UpgradeOpen(); RegAppTableRecord RAtr = new RegAppTableRecord(); RAtr.Name = nameApp; RAT.Add(RAtr); tr.AddNewlyCreatedDBObject(RAtr, true); } tr.Commit(); }//end using } catch (System.Exception ex) { BaseObjs.writeDebug(ex.Message + " xData.cs: line: 711"); } }
private static void AddRegAppTableRecord(string applicationName) { Document doc = AcadApp.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; using (doc.LockDocument()) { using (Transaction tr = DatabaseUtil.GetTransaction(db)) { RegAppTable rat = tr.GetObject(db.RegAppTableId, OpenMode.ForRead, false) as RegAppTable; if (!rat.Has(applicationName)) { rat.UpgradeOpen(); RegAppTableRecord ratr = new RegAppTableRecord(); ratr.Name = applicationName; rat.Add(ratr); tr.AddNewlyCreatedDBObject(ratr, true); } tr.Commit(); } } }
public static UserEntity setXData(UserEntity uEntity) { using (DocumentLock docLock = Global.Doc.LockDocument()) { using (Transaction acTrans = Global.DB.TransactionManager.StartTransaction()) { RegAppTable acRegAppTbl; acRegAppTbl = acTrans.GetObject(Global.DB.RegAppTableId, OpenMode.ForRead) as RegAppTable; // Check to see if the Registered Applications table record for the custom app exists if (acRegAppTbl.Has(uEntity.Properties.KEY) == false) { using (RegAppTableRecord acRegAppTblRec = new RegAppTableRecord()) { acRegAppTblRec.Name = uEntity.Properties.KEY; acTrans.GetObject(Global.DB.RegAppTableId, OpenMode.ForWrite); acRegAppTbl.Add(acRegAppTblRec); acTrans.AddNewlyCreatedDBObject(acRegAppTblRec, true); } } // Append the extended data to each object Entity entity = acTrans.GetObject(uEntity.ObjectId, OpenMode.ForWrite) as Entity; using (ResultBuffer buffer = uEntity.Properties.ToBuffer()) { entity.XData = buffer; PropertiesChangeEvent?.Invoke(uEntity); } // Save the new object to the database acTrans.Commit(); Global.Editor.WriteMessage(uEntity.Properties.ToString()); return(uEntity); } } }
/// <summary> /// Sets the X data. /// </summary> /// <param name="transaction">The transaction.</param> /// <param name="objectId">The object id.</param> /// <param name="applicationName">Name of the application.</param> /// <param name="xData">The x data.</param> public static void SetXData(Transaction transaction, ObjectId objectId, string applicationName, ResultBuffer xData) { //_logger.Debug("Start SetXData"); if (transaction == null) { throw new ArgumentNullException("transaction"); } if (transaction.IsDisposed) { throw new ArgumentException("transaction is disposed", "transaction"); } RegAppTable rat = transaction.GetObject(objectId.Database.RegAppTableId, OpenMode.ForWrite) as RegAppTable; if (!rat.Has(applicationName)) { RegAppTableRecord raRec = new RegAppTableRecord(); raRec.Name = applicationName; rat.Add(raRec); transaction.AddNewlyCreatedDBObject(raRec, true); } Entity entity = transaction.GetObject(objectId, OpenMode.ForWrite) as Entity; entity.XData = xData; //_logger.Debug("End SetXData"); }
public void SaveToEntity(Entity ent) { // Make sure application name is registered // If we were to save the ResultBuffer to an Xrecord.Data, // then we would not need to have a registered application name Transaction tr = ent.Database.TransactionManager.TopTransaction; RegAppTable regTable = (RegAppTable)tr.GetObject( ent.Database.RegAppTableId, OpenMode.ForWrite); if (!regTable.Has(ApplicationName)) { RegAppTableRecord app = new RegAppTableRecord(); app.Name = ApplicationName; regTable.Add(app); tr.AddNewlyCreatedDBObject(app, true); } using (ResultBuffer resBuf = SaveToResBuf()) { ent.XData = resBuf; } }
public static void AddRegAppTableRecord() { try { Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; Database db = doc.Database; using (var Lock = doc.LockDocument()) { using (Transaction tr = doc.TransactionManager.StartTransaction()) { RegAppTable rat = (RegAppTable)tr.GetObject(db.RegAppTableId, OpenMode.ForRead, false); if (!rat.Has("JPP")) { rat.UpgradeOpen(); RegAppTableRecord ratr = new RegAppTableRecord(); ratr.Name = "JPP"; rat.Add(ratr); tr.AddNewlyCreatedDBObject(ratr, true); } tr.Commit(); } } } catch (Autodesk.AutoCAD.Runtime.Exception e) { Logger.Log("Error in registering AppTableRecord - " + e.Message + "\n"); } catch (System.Exception e) { Logger.Log("Error in registering AppTableRecord - " + e.Message + "\n"); } }
public void Create(AC_Line line) { if (line.XData == null) { if (askForDistances(line)) { tr.start_Transaction(); RegAppTable rat = (RegAppTable)tr.AC_Tr.GetObject(tr.AC_Db.RegAppTableId, OpenMode.ForRead, false); if (!rat.Has("TRIANGULATE")) { rat.UpgradeOpen(); RegAppTableRecord ratr = new RegAppTableRecord(); ratr.Name = "TRIANGULATE"; rat.Add(ratr); tr.AC_Tr.AddNewlyCreatedDBObject(ratr, true); } tr.AC_Tr.Commit(); tr.AC_Tr.Dispose(); ResultBuffer rb = new ResultBuffer(new TypedValue((int)DxfCode.ExtendedDataRegAppName, "TRIANGULATE"), new TypedValue((int)DxfCode.ExtendedDataAsciiString, radius[0].ToString()), new TypedValue((int)DxfCode.ExtendedDataAsciiString, radius[1].ToString()), new TypedValue((int)DxfCode.ExtendedDataAsciiString, Guid.NewGuid().ToString())); line.XData = rb; Triangulations triang = new Triangulations(); triang.Show(line); } } else { tr.AC_Doc.Editor.WriteMessage("This line is alredy triangulated \n"); } }
public static bool AddRegAppId() { Document acDoc = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument; Database acCurrDb = acDoc.Database; Editor acEditor = acDoc.Editor; using (Transaction acTrans = acCurrDb.TransactionManager.StartTransaction()) { try { RegAppTable acRegAppTbl = acTrans.GetObject(acCurrDb.RegAppTableId, OpenMode.ForRead) as RegAppTable; if (!acRegAppTbl.Has(JPP_App_Config_Params.JPP_APP_NAME)) { using (RegAppTableRecord acRegAppTblRec = new RegAppTableRecord()) { acRegAppTblRec.Name = JPP_App_Config_Params.JPP_APP_NAME; acRegAppTbl.UpgradeOpen(); acRegAppTbl.Add(acRegAppTblRec); acTrans.AddNewlyCreatedDBObject(acRegAppTblRec, true); } acTrans.Commit(); } return(true); } catch (Autodesk.AutoCAD.Runtime.Exception acException) { Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog ("The following exception was caught: \n" + acException.Message + "\nError registering JPP App!"); acTrans.Commit(); return(false); } } }
public static void AddRegAppTableRecord(string regAppName) { Document doc = Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; Database db = doc.Database; Transaction tr = doc.TransactionManager.StartTransaction(); using (tr) { RegAppTable rat = (RegAppTable)tr.GetObject( db.RegAppTableId, OpenMode.ForRead, false ); if (!rat.Has(regAppName)) { rat.UpgradeOpen(); RegAppTableRecord ratr = new RegAppTableRecord(); ratr.Name = regAppName; rat.Add(ratr); tr.AddNewlyCreatedDBObject(ratr, true); } tr.Commit(); } }
public static void RegisterApp(string appName)//注册应用程序名称 { DocumentLock docLock = Autodesk.AutoCAD.ApplicationServices.Application. DocumentManager.MdiActiveDocument.LockDocument(); using (Transaction trans = Application.DocumentManager.MdiActiveDocument.TransactionManager.StartTransaction()) { Database workingdatabase = HostApplicationServices.WorkingDatabase; RegAppTable appTbl = trans.GetObject(workingdatabase.RegAppTableId, OpenMode.ForWrite) as RegAppTable; if (!appTbl.Has(appName)) { RegAppTableRecord appTblRcd = new RegAppTableRecord(); appTblRcd.Name = appName; appTbl.Add(appTblRcd); trans.AddNewlyCreatedDBObject(appTblRcd, true); } trans.Commit(); } docLock.Dispose(); }
//用户添加扩展记录 public static void UserAddXData() { Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor; ed.WriteMessage("添加扩充数据 XDATA\n"); PromptEntityOptions entOps = new PromptEntityOptions("选择实体对象"); PromptEntityResult entRes; entRes = ed.GetEntity(entOps); if (entRes.Status != PromptStatus.OK) { ed.WriteMessage("选择对象失败,退出"); return; } //出现添加扩展数据面板 AddEntityXDataForm addentityxdataform = new AddEntityXDataForm(); addentityxdataform.Show(); ObjectId objId = entRes.ObjectId; Database db = HostApplicationServices.WorkingDatabase; using (Transaction trans = db.TransactionManager.StartTransaction()) { RegAppTable appTbl = trans.GetObject(db.RegAppTableId, OpenMode.ForWrite) as RegAppTable; string DateStr = DateTime.Now.ToString("yyyyMMddHHmmssms"); //日期 Random rd = new Random(); //用于生成随机数 string AppNamestr = DateStr + rd.Next(10, 99); //带日期的随机数 Entity ent = trans.GetObject(objId, OpenMode.ForWrite) as Entity; if (!appTbl.Has(AppNamestr)) { RegAppTableRecord appTblRcd = new RegAppTableRecord(); appTblRcd.Name = AppNamestr; appTbl.Add(appTblRcd); trans.AddNewlyCreatedDBObject(appTblRcd, true); } ResultBuffer resBuf = new ResultBuffer( new TypedValue((int)DxfCode.ExtendedDataRegAppName, AppNamestr), new TypedValue((int)DxfCode.ExtendedDataLayerName, "0"), new TypedValue((int)DxfCode.ExtendedDataReal, 1.23479137438413E+40), new TypedValue((int)DxfCode.ExtendedDataInteger16, 32767), new TypedValue((int)DxfCode.ExtendedDataInteger32, 32767), new TypedValue((int)DxfCode.ExtendedDataScale, 10), new TypedValue((int)DxfCode.ExtendedDataWorldXCoordinate, new Point3d(10, 10, 0))); resBuf.Add(new TypedValue((int)DxfCode.ExtendedDataAsciiString, "这是追加的数据")); resBuf.Add(new TypedValue((int)DxfCode.ExtendedDataAsciiString, "我又一次追加了数据")); resBuf.Add(new TypedValue((int)DxfCode.ExtendedDataInteger16, 32767)); if (ent.XData != null) { ed.WriteMessage("该对象已有扩展记录,不需要再次添加,只需在原有记录进行修改"); return; } ent.XData = resBuf; trans.Commit(); } }
public static void LArrow() { Document doc = Application.DocumentManager.MdiActiveDocument; Editor ed = doc.Editor; PromptDoubleOptions optDouble = new PromptDoubleOptions("\n请输入箭头长度:"); optDouble.AllowNone = true; optDouble.AllowZero = false; optDouble.DefaultValue = ArrowLength; optDouble.UseDefaultValue = true; PromptDoubleResult resDouble = ed.GetDouble(optDouble); if (resDouble.Status == PromptStatus.OK) { //改变箭头长度设定值 ArrowLength = resDouble.Value; PromptPointResult resStartPoint = ed.GetPoint("\n请输入起点:"); if (resStartPoint.Status == PromptStatus.OK) { PromptPointOptions optEndPoint = new PromptPointOptions("\n请输入终点:"); optEndPoint.BasePoint = resStartPoint.Value; optEndPoint.UseBasePoint = true; PromptPointResult resEndPoint = ed.GetPoint(optEndPoint); if (resEndPoint.Status == PromptStatus.OK) { Database db = doc.Database; using (Transaction tr = db.TransactionManager.StartTransaction()) { BlockTableRecord btr = (BlockTableRecord)tr.GetObject( db.CurrentSpaceId, OpenMode.ForWrite, false); Line line = new Line(resStartPoint.Value, resEndPoint.Value); btr.AppendEntity(line); tr.AddNewlyCreatedDBObject(line, true); RegAppTable rat = (RegAppTable)tr.GetObject( db.RegAppTableId, OpenMode.ForRead, false); if (!rat.Has(RegAppName)) { rat.UpgradeOpen(); RegAppTableRecord regapp = new RegAppTableRecord(); regapp.Name = RegAppName; rat.Add(regapp); tr.AddNewlyCreatedDBObject(regapp, true); } //附着当前设定的箭头长度 SetTo(line); tr.Commit(); } } } } }
private void btn_change_pline3D_stack_xdata_Click(object sender, EventArgs e) { double stack = Convert.ToDouble(tbx_pline3d_xdata_stack.Text.Trim()); Editor ed = cadSer.Application.DocumentManager.MdiActiveDocument.Editor; Database db = HostApplicationServices.WorkingDatabase; var middoc = cadSer.Application.DocumentManager.MdiActiveDocument; string appname = "zjy_1_1_1"; ObjectId plineID = ed.GetEntity(new PromptEntityOptions("\n选取HDM辅助线!!!")).ObjectId; var doc_lock = middoc.LockDocument(); DBObject dbo; using (Transaction trans = db.TransactionManager.StartTransaction()) { dbo = trans.GetObject(plineID, OpenMode.ForWrite); while (!dbo.GetType().Equals(typeof(Polyline3d))) { ed.WriteMessage("\n刚才选取的不是HDM辅助线,请重新选择!!!"); plineID = ed.GetEntity(new PromptEntityOptions("\n选取HDM辅助线!!!")).ObjectId; dbo = trans.GetObject(plineID, OpenMode.ForWrite); } Polyline3d pline3d_modify = (Polyline3d)dbo; if (pline3d_modify.XData.AsArray().Length > 0) { ed.WriteMessage("\n桩号为:" + pline3d_modify.XData.AsArray()[1].Value.ToString() + "\n"); } SortedDictionary <double, Polyline3d> hdm_pline3d_dic = new SortedDictionary <double, Polyline3d>(); RegAppTable apptb1 = trans.GetObject(db.RegAppTableId, OpenMode.ForWrite) as RegAppTable; if (!apptb1.Has(appname)) { RegAppTableRecord app = new RegAppTableRecord(); app.Name = appname; apptb1.Add(app); trans.AddNewlyCreatedDBObject(app, true); } ResultBuffer resultBuffer = new ResultBuffer(); resultBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataRegAppName, appname)); resultBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataInteger32, stack)); pline3d_modify.XData = resultBuffer; zjyCAD.ToModelSpace(pline3d_modify, db); trans.Commit(); } }
public static void WriteXData(DocumentModifier docMdf, SelectionSet impliedSelection) { var apptable = docMdf.acDataBase.RegAppTableId.GetObject(OpenMode.ForWrite) as RegAppTable; // RegAppTableRecord 的创建 var strApp1 = "app1"; if (!apptable.Has(strApp1)) { var app1 = new RegAppTableRecord() { Name = strApp1, }; apptable.Add(app1); docMdf.acTransaction.AddNewlyCreatedDBObject(app1, true); } var strApp2 = "app2"; if (!apptable.Has(strApp2)) { var app1 = new RegAppTableRecord() { Name = strApp2, }; apptable.Add(app1); docMdf.acTransaction.AddNewlyCreatedDBObject(app1, true); } // 在界面中选择实体,用来写入XData var ed = Application.DocumentManager.MdiActiveDocument.Editor; var id = ed.GetEntity("\n选择一个要写入XData的实体:").ObjectId; var obj = id.GetObject(OpenMode.ForRead); if (obj != null) { obj.UpgradeOpen(); ResultBuffer data2 = new ResultBuffer( new TypedValue((int)DxfCode.ExtendedDataRegAppName, strApp1), new TypedValue((int)DxfCode.ExtendedDataAsciiString, "任意字符"), new TypedValue((int)DxfCode.ExtendedDataDist, 1.3), new TypedValue((int)DxfCode.ExtendedDataReal, 2), new TypedValue((int)DxfCode.ExtendedDataRegAppName, strApp2), new TypedValue((int)DxfCode.ExtendedDataInteger16, 88), new TypedValue((int)DxfCode.ExtendedDataReal, 4.5), new TypedValue((int)DxfCode.ExtendedDataScale, 6) ); obj.XData = data2; // 提取不同 RegAppName 的数据 var res1 = obj.GetXDataForApplication(strApp1); // 返回的集合中包含 strApp1 在内的4个元素。 var res2 = obj.GetXDataForApplication(strApp2); // 返回的集合中包含 strApp2 在内的4个元素。 var res3 = obj.GetXDataForApplication("app3"); // 返回 null } }
public void AddXData() { var propEnt = new PromptEntityOptions("请选择多行文本"); propEnt.SetRejectMessage("你选择的不是多行文本"); propEnt.AddAllowedClass(typeof(MText), true); var propEntRes = Ed.GetEntity(propEnt); if (propEntRes.Status != PromptStatus.OK) { return; } var id = propEntRes.ObjectId; using (var trans = Db.TransactionManager.StartTransaction()) { using (var trans2 = Db.TransactionManager.StartTransaction()){ var regRecord = new RegAppTableRecord() { Name = appName }; var regTbl = trans2.GetObject(Db.RegAppTableId, OpenMode.ForWrite) as RegAppTable; if (!regTbl.Has(appName)) { regTbl.Add(regRecord); trans2.AddNewlyCreatedDBObject(regRecord, true); } trans2.Commit(); } var mText = trans.GetObject(id, OpenMode.ForWrite) as MText; List <TypedValue> listTV = new List <TypedValue>(); listTV.Add(new TypedValue((int)DxfCode.ExtendedDataRegAppName, appName)); listTV.Add(new TypedValue((int)DxfCode.ExtendedDataInteger32, 1002)); listTV.Add(new TypedValue((int)DxfCode.ExtendedDataAsciiString, "董事长")); ResultBuffer rb = new ResultBuffer(listTV.ToArray()); mText.XData = rb; mText.DowngradeOpen(); trans.Commit(); } Application.ShowAlertDialog("OK"); }
public static void AddRegAppTableRecord(Database db, Transaction tr, string name) { RegAppTable rat = (RegAppTable)tr.GetObject(db.RegAppTableId, OpenMode.ForRead); if (!rat.Has(ConstantName.tableAlias)) { rat.UpgradeOpen(); RegAppTableRecord ratr = new RegAppTableRecord(); ratr.Name = ConstantName.tableAlias; rat.Add(ratr); tr.AddNewlyCreatedDBObject(ratr, true); } }
public static void AddRegAppTableRecord(string regAppName, Transaction tr) { RegAppTable rat = (RegAppTable)tr.GetObject(Command.Database.RegAppTableId, OpenMode.ForRead, false); if (!rat.Has(regAppName)) { rat.UpgradeOpen(); RegAppTableRecord ratr = new RegAppTableRecord(); ratr.Name = regAppName; rat.Add(ratr); tr.AddNewlyCreatedDBObject(ratr, true); } }
private void AddTableRecord(string data, Database db, Transaction tr, Table t) { string regName = uriInit; RegAppTable rat = (RegAppTable)tr.GetObject(db.RegAppTableId, OpenMode.ForRead); if (!rat.Has(regName)) { rat.UpgradeOpen(); RegAppTableRecord ratr = new RegAppTableRecord(); ratr.Name = regName; rat.Add(ratr); tr.AddNewlyCreatedDBObject(ratr, true); } }
/// <summary> /// TODO /// </summary> /// <param name="acEnt"></param> /// <param name="eInfo"></param> /// <param name="acCurDb"></param> /// <param name="acTrans"></param> public static void AddXData(this Entity acEnt, EntInfo eInfo, Database acCurDb, Transaction acTrans) { //If solid is not open for write, open it for write acEnt.Upgrade(); // Open the Registered Applications table for read var acRegAppTbl = acTrans.GetObject(acCurDb.RegAppTableId, OpenMode.ForRead) as RegAppTable; // Check to see if the Registered Applications table record for the custom app exists if (acRegAppTbl != null && acRegAppTbl.Has(SettingsInternal.CommandGroup) == false) { using (var acRegAppTblRec = new RegAppTableRecord()) { acRegAppTblRec.Name = SettingsInternal.CommandGroup; acRegAppTbl.UpgradeOpen(); acRegAppTbl.Add(acRegAppTblRec); acTrans.AddNewlyCreatedDBObject(acRegAppTblRec, true); } } // Define the Xdata to add to each selected object using (var rBuffer = new ResultBuffer()) { rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataRegAppName, SettingsInternal.CommandGroup)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataAsciiString, eInfo.RcName)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataAsciiString, eInfo.RcInfo)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataReal, eInfo.Length)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataReal, eInfo.Width)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataReal, eInfo.Thickness)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataReal, eInfo.Volume)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataReal, eInfo.MaxArea)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataReal, eInfo.MaxPerimeter)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataReal, eInfo.Asymmetry)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataAsciiString, eInfo.AsymString)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataInteger32, eInfo.RcQtyOf)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataInteger32, eInfo.RcQtyTotal)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataInteger32, eInfo.NumberOfChanges)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataInteger32, Convert.ToInt32(eInfo.IsSweep))); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataInteger32, Convert.ToInt32(eInfo.IsMirror))); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataInteger32, Convert.ToInt32(eInfo.HasHoles))); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataInteger32, eInfo.TxDirection)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataInteger32, eInfo.ProdType)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataHandle, eInfo.ParentHandle)); rBuffer.Add(new TypedValue((int)DxfCode.ExtendedDataAsciiString, string.Join(",", eInfo.ChildHandles))); // Append the extended data to the object acEnt.XData = rBuffer; } }
void AddRegApp(string RegAppName) { using (var tr = new TransactionHelper()) { var rat = tr.ReadObject(acCurDb.RegAppTableId) as RegAppTable; rat.UpgradeOpen(); if (!rat.Has(RegAppName)) { var ratr = new RegAppTableRecord(); ratr.Name = RegAppName; rat.Add(ratr); tr.AddNewlyCreatedDBObject(ratr, true); } } }
public static void RegAppIsoline(Database db) { using (RegAppTable rat = db.RegAppTableId.Open(OpenMode.ForRead, false) as RegAppTable) { if (!rat.Has(RegAppNAME)) { rat.UpgradeOpen(); using (RegAppTableRecord ratr = new RegAppTableRecord()) { ratr.Name = RegAppNAME; rat.Add(ratr); } } } }
/// <summary> /// Регистрация приложения для записи расширенных данных есл еще не рарегестрировано /// </summary> /// <param name="db"></param> /// <param name="tr"></param> public static void RegisterApp(Database db, Transaction tr) { //Таблица приложений RegAppTable regTable = (RegAppTable)tr.GetObject(db.RegAppTableId, OpenMode.ForRead); //Создать имя приложения в таблице если еще нет if (!regTable.Has(Constants.AppName)) { regTable.UpgradeOpen(); RegAppTableRecord app = new RegAppTableRecord(); app.Name = Constants.AppName; regTable.Add(app); tr.AddNewlyCreatedDBObject(app, true); } }
bool newRegApp(Database db, string regAppName) { using (RegAppTable pRegAppTable = (RegAppTable)db.RegAppTableId.GetObject(Teigha.DatabaseServices.OpenMode.ForWrite)) { if (!pRegAppTable.Has(regAppName)) { using (RegAppTableRecord pRegApp = new RegAppTableRecord()) { pRegApp.Name = regAppName; pRegAppTable.Add(pRegApp); } return(true); } } return(false); }
public void TestAddRegApp() { var newId = ObjectId.Null; using (var db = AcadDatabase.Active()) { var newRegApp = new RegAppTableRecord() { Name = "NewRegApp" }; db.RegApps.Add(newRegApp); newId = newRegApp.ObjectId; } AcadAssert.That.RegAppTable.Contains(newId); }
public static void AddRegAppTableRecord(Database db, string regAppName) { using (Transaction tr = db.TransactionManager.StartTransaction()) { RegAppTable rat = (RegAppTable)tr.GetObject(db.RegAppTableId, OpenMode.ForRead, false); if (!rat.Has(regAppName)) { rat.UpgradeOpen(); RegAppTableRecord ratr = new RegAppTableRecord(); ratr.Name = regAppName; rat.Add(ratr); tr.AddNewlyCreatedDBObject(ratr, true); } tr.Commit(); } }
/// <summary> /// 确认AppName已注册 /// </summary> /// <param name="db"></param> /// <param name="appName"></param> public static void AffirmRegApp(Database db, string appName) { using (Transaction transaction = db.TransactionManager.StartTransaction()) { RegAppTable table = transaction.GetObject(db.RegAppTableId, OpenMode.ForRead) as RegAppTable; if (!table.Has(appName)) { table.UpgradeOpen(); RegAppTableRecord record = new RegAppTableRecord(); record.Name = appName; table.Add(record); transaction.AddNewlyCreatedDBObject(record, true); } transaction.Commit(); } }
public void TestAddEntityXdata() { Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; ed.WriteMessage("添加扩展数据XDATA\n"); PromptSelectionOptions pso = new PromptSelectionOptions(); pso.MessageForAdding = "请选择实体集\n"; PromptSelectionResult psr = ed.GetSelection(pso); if (psr.Status != PromptStatus.OK) { ed.WriteMessage("选择对象失败,退出"); return; } SelectionSet ss = psr.Value; int count = ss.Count; ed.WriteMessage("选择了{0}个实体", count); Database db = HostApplicationServices.WorkingDatabase; using (Transaction trans = db.TransactionManager.StartTransaction()) { RegAppTable appTable = trans.GetObject(db.RegAppTableId, OpenMode.ForWrite) as RegAppTable; if (!appTable.Has("psw")) { RegAppTableRecord appTableRec = new RegAppTableRecord(); appTableRec.Name = "psw"; appTable.Add(appTableRec); trans.AddNewlyCreatedDBObject(appTableRec, true); } foreach (ObjectId id in ss.GetObjectIds()) { using (Entity ent = trans.GetObject(id, OpenMode.ForWrite) as Entity) { ent.ColorIndex = 1; ResultBuffer rBuffer = new ResultBuffer( new TypedValue((int)DxfCode.ExtendedDataRegAppName, "psw"), new TypedValue((int)DxfCode.ExtendedDataReal, 20.00) ); ent.XData = rBuffer; } } trans.Commit(); } }
public static void SaveXdata(string data, ObjectId objId) { // Get the current database and start a transaction Database acCurDb; acCurDb = acApp.DocumentManager.MdiActiveDocument.Database; Document acDoc = acApp.DocumentManager.MdiActiveDocument; using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { // Open the Registered Applications table for read RegAppTable acRegAppTbl; acRegAppTbl = acTrans.GetObject(acCurDb.RegAppTableId, OpenMode.ForRead) as RegAppTable; // Check to see if the Registered Applications table record for the custom app exists if (acRegAppTbl.Has(appName) == false) { using (RegAppTableRecord acRegAppTblRec = new RegAppTableRecord()) { acRegAppTblRec.Name = appName; acRegAppTbl.UpgradeOpen(); acRegAppTbl.Add(acRegAppTblRec); acTrans.AddNewlyCreatedDBObject(acRegAppTblRec, true); } } // Define the Xdata to add to each selected object using (ResultBuffer rb = new ResultBuffer()) { rb.Add(new TypedValue((int)DxfCode.ExtendedDataRegAppName, appName)); rb.Add(new TypedValue((int)DxfCode.ExtendedDataAsciiString, data)); // Open the selected object for write Entity acEnt = acTrans.GetObject(objId, OpenMode.ForWrite) as Entity; // Append the extended data to each object acEnt.XData = rb; } // Save the new object to the database acTrans.Commit(); // Dispose of the transaction } }
private void AddRegAppTableRecord(string regAppName) { Transaction trans = doc.TransactionManager.StartTransaction(); using (trans) { RegAppTable regAppTable = (RegAppTable)trans.GetObject( db.RegAppTableId, OpenMode.ForRead, false ); if (!regAppTable.Has(regAppName)) { regAppTable.UpgradeOpen(); RegAppTableRecord regAppTableRecord = new RegAppTableRecord(); regAppTableRecord.Name = regAppName; regAppTable.Add(regAppTableRecord); trans.AddNewlyCreatedDBObject(regAppTableRecord, true); } trans.Commit(); } }
public void Create(AC_Line line) { if (line.XData == null) { if (askForDistances(line)) { tr.start_Transaction(); RegAppTable rat = (RegAppTable)tr.AC_Tr.GetObject(tr.AC_Db.RegAppTableId,OpenMode.ForRead,false); if (!rat.Has("TRIANGULATE")) { rat.UpgradeOpen(); RegAppTableRecord ratr = new RegAppTableRecord(); ratr.Name = "TRIANGULATE"; rat.Add(ratr); tr.AC_Tr.AddNewlyCreatedDBObject(ratr, true); } tr.AC_Tr.Commit(); tr.AC_Tr.Dispose(); ResultBuffer rb = new ResultBuffer(new TypedValue((int)DxfCode.ExtendedDataRegAppName, "TRIANGULATE"), new TypedValue((int)DxfCode.ExtendedDataAsciiString, radius[0].ToString()), new TypedValue((int)DxfCode.ExtendedDataAsciiString, radius[1].ToString()), new TypedValue((int)DxfCode.ExtendedDataAsciiString, Guid.NewGuid().ToString())); line.XData = rb; Triangulations triang = new Triangulations(); triang.Show(line); } } else { tr.AC_Doc.Editor.WriteMessage("This line is alredy triangulated \n"); } }
public void AddXData() { Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; ed.WriteMessage("�����������XDATA\n"); PromptEntityOptions entOps = new PromptEntityOptions("ѡ��Ҫ�Ķ���\n"); PromptEntityResult entRes; entRes = ed.GetEntity(entOps); if (entRes.Status != PromptStatus.OK) { ed.WriteMessage("ѡ�����ʧ�ܣ��˳�"); return; } ObjectId objId = entRes.ObjectId; Database db = HostApplicationServices.WorkingDatabase; using (Transaction trans = db.TransactionManager.StartTransaction()) { Entity ent = trans.GetObject(objId, OpenMode.ForWrite) as Entity ; ent.ColorIndex = 1; RegAppTable appTbl = trans.GetObject(db.RegAppTableId, OpenMode.ForWrite) as RegAppTable ; if (!appTbl.Has("MyAppName")) { RegAppTableRecord appTblRcd = new RegAppTableRecord(); appTblRcd.Name = "MyAppName"; appTbl.Add(appTblRcd); trans.AddNewlyCreatedDBObject(appTblRcd, true); } ResultBuffer resBuf = new ResultBuffer();//new TypedValue(1001, "MyAppName"), new TypedValue(1000, "��������")); resBuf.Add(new TypedValue(1001, "MyAppName"));//ע��������� resBuf.Add(new TypedValue(1000 , " ����"));//���� resBuf.Add(new TypedValue(1000 , " ���̲�"));//���� resBuf.Add(new TypedValue(1040, 2000.0));//нˮ ent.XData = resBuf; trans.Commit(); } }