Thứ Năm, 16 tháng 1, 2025

Kiểm tra ExpressTools đã load chưa trong AutoCAD | Checkif ExpressTools is loaded already in AutoCAD dotNet | 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: 👉👉👉

ExpressTool là gì

ExpressTools là một tập hợp các công cụ bổ sung, được thiết kế để tăng cường năng suất làm việc trong AutoCAD. Chúng cung cấp các chức năng vượt ra ngoài các lệnh cơ bản, giúp bạn tự động hóa một số tác vụ, tiết kiệm thời gian và giảm thiểu lỗi.


Cách kiểm tra

Do ExpressTools (ETs) là 1 tập hợp nhiều plug-in được viết bằng nhiều ngôn ngữ khác nhau (arx, lsp, dcl, cuix, dcl, vlx...). Nên tùy vào từng lệnh được bố trí trong module nào, mình sẽ kiểm tra các loại tệp tin tương ứng.

Một số giải pháp có thể check xem load chưa:

Cách 1:

 List tất cả Module đã được load, sau đó kiểm tra trong list các arx của ETs

Code:
var modls = Autodesk.AutoCAD.Runtime.SystemObjects.DynamicLinker.GetLoadedModules();

foreach (var module in modls)
{

}

Cách này khả thi và đơn giản nhất. Có thể kiểm tra chính xác module (arx) nào cần thiết cho lệnh của mình.




Code:
[CommandMethod("ListModules")]
public static void cmd_LListModules()
{
    Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
    Editor ed = doc.Editor;

    var modls = Autodesk.AutoCAD.Runtime.SystemObjects.DynamicLinker.GetLoadedModules();
    foreach (var module in modls)
    {
        ed.WriteMessage("\n" + module);
    }

    ed.WriteMessage("\nwww.lisp.vn");
}

Code:
[CommandMethod("ListDlls")]
public static void cmd_ListDlls()
{
    Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
    Editor ed = doc.Editor;

    Assembly[] assems = AppDomain.CurrentDomain.GetAssemblies();
    const string start = "Version=";
    foreach (Assembly assem in assems)
    {
        // We want the name and version of each assembly
        string dllname = assem.ManifestModule.Name;
        string version = assem.FullName;

        // If our assembly name includes version info...
        if (version.Contains(start))
        {
            // Get the string starting with the version number
            version = version.Substring(version.IndexOf(start) + start.Length);

            // Strip off anything after (and including) the comma
            version = version.Remove(version.IndexOf(','));
        }
        else
            version = "";
        ed.WriteMessage("\n" + dllname + " " + version);
    }

    ed.WriteMessage("\nwww.lisp.vn");
    //Source https://www.keanw.com/2010/02/getting-the-list-of-net-assemblies-loaded-into-autocad-from-lisp.html
}

Cách 2:

Kiểm tra Ribbon hoặc Menu đã có thành phần (Tab) của ETs chưa.


Cách này sẽ sử dụng kiến thức và các hàm trong thư viện AdWindows.

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

Kiểm tra ExpressTools đã load chưa trong AutoCAD | Checkif ExpressTools is loaded already in AutoCAD dotNet | 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: 👉👉👉