コード例 #1
0
 /// <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);
     }
 }
コード例 #2
0
        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();
        }
コード例 #3
0
ファイル: xData.cs プロジェクト: 15831944/EM
        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");
            }
        }
コード例 #4
0
ファイル: XDataUtil.cs プロジェクト: KevinSung97/AutoCAD.Net
        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();
                }
            }
        }
コード例 #5
0
ファイル: XDataManage.cs プロジェクト: iLeif96/AutoCadGcode
        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);
                }
            }
        }
コード例 #6
0
        /// <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");
        }
コード例 #7
0
        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;
            }
        }
コード例 #8
0
ファイル: Main.cs プロジェクト: MichaelLiddiard/CAD-Library
        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");
            }
        }
コード例 #9
0
ファイル: TRIANGULATE.cs プロジェクト: nbright/utility_funcs
            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");
                }
            }
コード例 #10
0
        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);
                }
            }
        }
コード例 #11
0
ファイル: RbEncoder.cs プロジェクト: jajazhou/PIOTM-QRCode
        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();
            }
        }
コード例 #12
0
ファイル: XData.cs プロジェクト: presscad/myexercise
        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();
        }
コード例 #13
0
        //用户添加扩展记录
        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();
            }
        }
コード例 #14
0
        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();
                        }
                    }
                }
            }
        }
コード例 #15
0
        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();
            }
        }
コード例 #16
0
        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
            }
        }
コード例 #17
0
        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");
        }
コード例 #18
0
        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);
            }
        }
コード例 #19
0
        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);
            }
        }
コード例 #20
0
        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);
            }
        }
コード例 #21
0
ファイル: XDataAgent.cs プロジェクト: 15831944/RabCab
        /// <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;
            }
        }
コード例 #22
0
ファイル: XdataTools.cs プロジェクト: koropet/PKUserTools
 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);
         }
     }
 }
コード例 #23
0
ファイル: Isoline.cs プロジェクト: vildar82/GP_Isoline
 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);
             }
         }
     }
 }
コード例 #24
0
        /// <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);
            }
        }
コード例 #25
0
 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);
 }
コード例 #26
0
        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);
        }
コード例 #27
0
ファイル: AcadEntity.cs プロジェクト: tevfikoguz/XCOM
 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();
     }
 }
コード例 #28
0
 /// <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();
     }
 }
コード例 #29
0
ファイル: CADPlug.cs プロジェクト: psw404/CADPlug
        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();
            }
        }
コード例 #30
0
ファイル: xdata.cs プロジェクト: pgovindraj/WizFDS
        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
            }
        }
コード例 #31
0
ファイル: XDataAdder.cs プロジェクト: anielii/Acommands
 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();
     }
 }
コード例 #32
0
ファイル: Utilities.cs プロジェクト: samuto/Grevit
        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);
            }

        }
コード例 #33
0
ファイル: XData.cs プロジェクト: kanbang/myexercise
        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();

        }
コード例 #34
0
            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");
                }
            }
コード例 #35
0
ファイル: Class1.cs プロジェクト: guchanghai/Cut
        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();
            }
        }
コード例 #36
0
ファイル: Isoline.cs プロジェクト: vildar82/GP_Isoline
 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);
          }
       }
    }
 }