Teigha遍历所有实体

public static ObjectIdCollection GetAllEntitiesByLayerId(Database database, string layerName)
{
    ObjectIdCollection ids = new ObjectIdCollection();
    using (var t = database.TransactionManager.StartTransaction())
    {
        using (var table = (BlockTable)database.BlockTableId.GetObject(OpenMode.ForRead))
        {
            using (var enumerator = table.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    using (var record = (BlockTableRecord)enumerator.Current.GetObject(OpenMode.ForRead))
                    {
                        foreach (ObjectId id in record)
                        {
                            var entity = (Entity)id.GetObject(OpenMode.ForRead, false);
                            if (entity.Layer == layerName)
                            {
                                ids.Add(id);
                            }
                        }
                    }
                }
            }
        }
    }
    return ids;
}

评论