Thứ Năm, 19 tháng 12, 2024

Tìm dimstyle textstyle blockdef trong Database | Search Dimstyle Textstyle BlockTableRecord in AutoCAD dotNet | Lập trình AutoCAD dotNet

Ứng dụng được phát triển/Sưu tầm bởi đội ngũ AutoLISP Thật là đơn giản
   

Thông tin thêm: 👉👉👉

DatabaseExts

1 Thêm class DatabaseExts.cs

Lưu mã sau dưới dạng tệp tin DatabaseExts.cs
Code:
using Autodesk.AutoCAD.DatabaseServices;

namespace AJS_DimensionSettings
{
    public enum TBType
    { Block, TextStyle, DimStyle, Layer, LineType, MLineStyle };

    internal static class DatabaseExts
    {
        public static ObjectId Search(this Database db, string entryname, TBType tp)
        {
            ObjectId id = ObjectId.Null;
            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                if (tp == TBType.Block)
                {
                    BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                    if (bt.Has(entryname)) id = bt[entryname];
                }
                else if (tp == TBType.TextStyle)
                {
                    TextStyleTable tbt = tr.GetObject(db.TextStyleTableId, OpenMode.ForRead) as TextStyleTable;
                    if (tbt.Has(entryname)) id = tbt[entryname];
                }
                else if (tp == TBType.DimStyle)
                {
                    DimStyleTable dst = tr.GetObject(db.DimStyleTableId, OpenMode.ForRead) as DimStyleTable;
                    if (dst.Has(entryname))
                        id = dst[entryname];
                    else
                        id = db.Dimstyle;
                }
                else if (tp == TBType.Layer)
                {
                    LayerTable lt = tr.GetObject(db.LayerTableId, OpenMode.ForRead) as LayerTable;
                    if (lt.Has(entryname)) id = lt[entryname];
                }
                else if (tp == TBType.LineType)
                {
                    LinetypeTable lt = tr.GetObject(db.LinetypeTableId, OpenMode.ForRead) as LinetypeTable;
                    if (lt.Has(entryname))
                        id = lt[entryname];
                    else
                    {
                        try
                        {
                            db.LoadLineTypeFile(entryname, "acad.lin");

                            if (lt.Has(entryname))
                            {
                                id = lt[entryname];
                            }
                        }
                        catch { }
                    }
                }
                else if (tp == TBType.MLineStyle)
                {
                    DBDictionary mlineDic = (DBDictionary)tr.GetObject(db.MLStyleDictionaryId, OpenMode.ForRead);
                    if (mlineDic.Contains(entryname))
                    {
                        id = mlineDic.GetAt(entryname);
                    }
                }
                tr.Commit();
            }
            return id;
        }
    }
}


Link tải Solution



Nhóm AutoCAD dotNet


Link tham gia nhóm Zalo: http://dnz.lisp.vn


---------------------------------------------------------------------------------------------
Ứng dụng được phát triển bởi đội ngũ AutoLISP Thật là đơn giản - Tác giả ứng dụng in D2P

    

Mọi thông tin xin liên hệ Fanpage AutoLISP Thật là đơn giản!
Cảm ơn bạn đã theo dõi!

Không có nhận xét nào:

Đăng nhận xét

Tìm dimstyle textstyle blockdef trong Database | Search Dimstyle Textstyle BlockTableRecord in AutoCAD dotNet | Lập trình AutoCAD dotNet

Ứng dụng được phát triển/Sưu tầm bởi đội ngũ AutoLISP Thật là đơn giản     Thông tin thêm: 👉👉👉