全选实体—实体与模型空间各种属性(ent.OwnerId)—c#

发布于:2025-05-01 ⋅ 阅读:(23) ⋅ 点赞:(0)

 不需要遍历模型空间即可选择实体(包括所有图纸空间)

 

using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.GraphicsInterface;
using IFoxCAD.Cad;
using System.Globalization;
using System.Security.Cryptography;
using System.Windows;
using System.Windows.Forms;
using System.Windows.Markup;
using Path = System.IO.Path;
namespace IfoxDemo
{
    public class 窗选类()
    {
        [CommandMethod("xx")]
        public void 全选实体()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Editor ed = doc.Editor;
            Database db = doc.Database;
            var a = ed.SelectAll();
            var b = a.Value;
            var c = b.GetObjectIds();
            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForRead);
                foreach (ObjectId id in c)
                {
                    Entity ent = (Entity)tr.GetObject(id, OpenMode.ForRead);
                    if ((ent is null)|| (ent.IsErased)) continue;
                    ent.ChangeEntityColor(1);
                }
                tr.Commit();
            }

        }
    }
}

  var dd = db.CurrentSpaceId; 获取当前空间id

using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.GraphicsInterface;
using IFoxCAD.Cad;
using System.Globalization;
using System.Security.Cryptography;
using System.Windows;
using System.Windows.Forms;
using System.Windows.Markup;
using Path = System.IO.Path;
namespace IfoxDemo
{
    public class 窗选类()
    {
        [CommandMethod("xx")]
        public void 全选实体_实体与模型空间的关系()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Editor ed = doc.Editor;
            Database db = doc.Database;
            var a = ed.SelectAll();
            var b = a.Value;
            var c = b.GetObjectIds();
            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForRead);
                foreach (ObjectId id in c)
                {
                    Entity ent = (Entity)tr.GetObject(id, OpenMode.ForRead);
                    if ((ent is null)|| (ent.IsErased)) continue;
                    if (ent.OwnerId == btr.ObjectId)//实体所属的id是模型空间的id,即实体在模型空间 
                    {  
                        ent.ChangeEntityColor(1);
                    }
                    var ms =BlockTableRecord.ModelSpace;
                    var ps = BlockTableRecord.PaperSpace;
                    ed.WriteMessage($"实体所属的块名是 {ent.BlockName},-实体所属的id是{ ent.OwnerId}-模型空间的id是{ btr.ObjectId}-模型空间字符串名{ms}-图纸空间字符串名{ps}\n");
                    /*实体所属的块名是 *Paper_Space2,-实体所属的id是(2384862761408)-模型空间的id是(2385749615088)-模型空间字符串名*MODEL_SPACE-图纸空间字符串名*PAPER_SPACE
                      *  Autodesk.AutoCAD.DatabaseServices.Ellipse-(2384865853728)-(2384862761408)-*Paper_Space2
                      *
                      * 实体所属的块名是 *Paper_Space2,-实体所属的id是(2384862761408)-模型空间的id是(2385749615088)-模型空间字符串名*MODEL_SPACE-图纸空间字符串名*PAPER_SPACE
                      *  Autodesk.AutoCAD.DatabaseServices.Viewport-(2384862761936)-(2384862761408)-*Paper_Space2
                      *
                      *  实体所属的块名是 *Model_Space,-实体所属的id是(2385749615088)-模型空间的id是(2385749615088)-模型空间字符串名*MODEL_SPACE-图纸空间字符串名*PAPER_SPACE
                      *  Autodesk.AutoCAD.DatabaseServices.Circle-(2384865854240)-(2385749615088)-*Model_Space
                      * 
                      */
                    //实体获取
                    ed.WriteMessage($"{ent.GetType()}-{ent.ObjectId}-{ent.OwnerId}-{ent.BlockName}\n");
                    //Autodesk.AutoCAD.DatabaseServices.Circle-(2384865854240)-(2385749615088)-*Model_Space
                }
                tr.Commit();
            }

        }
    }
}

 


网站公告

今日签到

点亮在社区的每一天
去签到