C# CAD 开发得到实体、添加实体、添加XDATA等代码

版权声明:yunyou.ke.qq.com 版权所有,转载请注明 https://blog.csdn.net/yunyouxy/article/details/83042074

通过ObjectId得到一个实体的代码:

        private DBObject GetObject(ObjectId id)
        {
            DBObject obj = null;
            using (Transaction transaction = Application.DocumentManager.MdiActiveDocument.TransactionManager.StartTransaction())
            {
                obj = transaction.GetObject(id, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead, true);
                transaction.Commit();
            }
            return obj;
        }

添加实体的代码 :

 public static void AppendEntity(Entity ent)
    {
        using (Transaction transaction =
            HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction())
        {
            BlockTableRecord blockTableRecord;
            //get block table record of current space
            blockTableRecord = (BlockTableRecord)transaction.GetObject(
                HostApplicationServices.WorkingDatabase.CurrentSpaceId,
                OpenMode.ForWrite);
            blockTableRecord.AppendEntity(ent);
            transaction.AddNewlyCreatedDBObject(ent, true);
            transaction.Commit();
        }
        return;
    }

给实体添加XData的代码:

          public static bool AttachXData(DBObject obj, int MyData)
        {
            RegAppTableRecord app = new RegAppTableRecord();
            app.Name = "MyData";
            using (Transaction transaction =
                Application.DocumentManager.MdiActiveDocument.TransactionManager.StartTransaction())
            {
                try
                {
                    Database workingdatabase = HostApplicationServices.WorkingDatabase;
 
                    SymbolTable table = (SymbolTable)transaction.GetObject(workingdatabase.RegAppTableId,
                        Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite, false);
                    if (!table.Has(app.Name))
                    {
                        table.Add(app);
                        transaction.AddNewlyCreatedDBObject(app, true);
                    }
                    if (!obj.IsWriteEnabled)
                        obj.UpgradeOpen();
                    obj.XData = new ResultBuffer(
                        new TypedValue((int)DxfCode.ExtendedDataRegAppName, app.Name),
                        new TypedValue((int)DxfCode.ExtendedDataInteger32, MyData));
                    transaction.Commit();
                    transaction.Dispose();
                }
                catch
                {
                    return false;
                }
            }
            return true;
        }

猜你喜欢

转载自blog.csdn.net/yunyouxy/article/details/83042074