Hướng dẫn bắt đầu nhanh về SDK của Altium Designer

SDK của Altium Designer cho phép bạn xây dựng các extension tùy chỉnh tích hợp trực tiếp vào Altium Designer – bổ sung lệnh, tự động hóa quy trình làm việc và truy cập dữ liệu thiết kế thông qua API .NET được quản lý.

Hướng dẫn này sẽ đưa bạn qua các bước cài đặt công cụ phát triển, tạo dự án extension, thêm một lệnh và chạy lệnh đó trong Altium Designer.

Điều kiện tiên quyết

Bước 1: Cài đặt Altium Developer Extension

Altium Developer extension thêm trực tiếp các mẫu dự án và công cụ SDK vào Altium Designer.

  1. Trong Altium Designer, đi tới Extensions and Updates → Available.

  2. Trong phần Software Extensions , tìm kiếm Altium Developer.

  3. Cài đặt extension, sau đó khởi động lại Altium Designer khi được nhắc.

Bước 2: Tạo dự án Extension mới

  1. Trong Altium Designer, đi tới File → New → Other → Extension.

    • Extension ID: ShowNetsExtension

    • Extension Kind: Altium Designer Server

    • Development Language: C#

    • IDE Version: latest

    • SDK Versionlatest

  2. Sau khi extension được tạo, Altium Designer sẽ hiển thị thông tin chi tiết của nó. Hãy lưu ý Source Location — mở tệp .csproj từ đường dẫn đó trong IDE của bạn.

Bước 3: Thêm lệnh đầu tiên của bạn

Mở Source Code\Commands.cs và thêm các phương thức sau vào lớp Commands :

    /// <summary>
    /// Xác định trạng thái bật/hiển thị cho lệnh "Show Nets" trong Altium Designer.
    /// </summary>
    /// <param name="argContext">Ngữ cảnh khung nhìn tài liệu máy chủ hiện tại.</param>
    /// <param name="argParameters">Tham số lệnh (không dùng).</param>
    /// <param name="argEnabled">Đặt là true nếu lệnh cần được bật.</param>
    /// <param name="argChecked">Đặt là true nếu lệnh cần hiển thị ở trạng thái được chọn (không dùng).</param>
    /// <param name="argVisible">Đặt là true nếu lệnh cần được hiển thị (không dùng).</param>
    /// <param name="argCaption">Tiêu đề lệnh (không dùng).</param>
    /// <param name="argImageFile">Tệp hình ảnh của lệnh (không dùng).</param>
    public static void GetState_ShowNets(IServerDocumentView argContext, ref string argParameters, ref bool argEnabled,
        ref bool argChecked, ref bool argVisible, ref string argCaption, ref string argImageFile)
    {
        // Lấy project hiện đang được focus từ workspace của Altium Designer.
        var project = DXP.GlobalVars.DXPWorkSpace.DM_FocusedProject() as IProject;

        // Nếu project cần được compile (ví dụ: netlist đã lỗi thời), hãy compile nó.
        if (project?.DM_NeedsCompile() == true)
            project.DM_Compile();

        // Chỉ bật lệnh khi một project hợp lệ đang được focus và đó không phải là project "Free Documents".
        argEnabled = project != null && !IsFreeDocumentsProject(project);
    }

    /// <summary>
    /// Trình xử lý lệnh để hiển thị tất cả tên net trong tài liệu schematic hoặc project hiện tại.
    /// </summary>
    /// <param name="view">Khung nhìn tài liệu máy chủ hiện tại.</param>
    /// <param name="parameters">Tham số lệnh (không dùng).</param>
    public static void Command_ShowNets(IServerDocumentView view, ref string parameters)
    {
        // Lấy project hiện đang được focus từ Altium Designer.
        var project = DXP.GlobalVars.DXPWorkSpace.DM_FocusedProject() as IProject;
        if (project == null || IsFreeDocumentsProject(project))
            return;

        string documentName;
        // Lấy tài liệu hiện đang được focus (ví dụ: trang schematic).
        var document = DXP.GlobalVars.DXPWorkSpace.DM_FocusedDocument() as IDocument;
        if (document == null)
        {
            // Nếu không có tài liệu nào được focus, hãy bảo đảm project đã được compile và sử dụng tài liệu project đã được flatten.
            if (project.DM_NeedsCompile()) project.DM_Compile();
            document = project.DM_DocumentFlattened();
            documentName = "Project";
        }
        else
        {
            // Chỉ tiếp tục nếu tài liệu đang được focus là schematic (DocKindSch).
            if (document.DM_DocumentKind() != EDPConstant.DocKindSch) return;
            documentName = document.DM_FileName();
        }

        // Duyệt tất cả các net trong tài liệu, lấy tên đầy đủ của chúng và sắp xếp theo thứ tự alphabet.
        var netNames = Enumerable.Range(0, document.DM_NetCount())
            .Select(document.DM_Nets)
            .Select(net => net.DM_FullNetName())
            .OrderBy(name => name);

        // Hiển thị danh sách tên net trong hộp thoại thông tin bên trong Altium Designer.
        DXP.Utils.ShowInfo(string.Join(Environment.NewLine, netNames), $"Nets [{documentName}]");
    }

    /// <summary>
    /// Kiểm tra xem project đã cho có phải là project đặc biệt "Free Documents" trong Altium Designer hay không.
    /// </summary>
    /// <param name="project">Project cần kiểm tra.</param>
    /// <returns>Trả về true nếu project là project Free Documents; ngược lại là false.</returns>
    private static bool IsFreeDocumentsProject(IProject project)
    {
        return project == DXP.GlobalVars.DXPWorkSpace.DM_FreeDocumentsProject();
    }

Mở Source Code\Main.cs và đăng ký lệnh trong lớp PluginServerModule:

protected override void InitializeCommands()
{
    ((CommandLauncher)CommandLauncher).RegisterCommand("ShowNets", Commands.Command_ShowNets, Commands.GetState_ShowNets);
}

Build dự án để cài đặt extension.

Bước 4: Chạy lệnh của bạn trong Altium Designer

  1. Khởi động Altium Designer.

  2. Nhấp chuột phải vào bất kỳ thanh công cụ nào và chọn Customize…

  3. Dưới Commands, nhấp vào New… và cấu hình như sau:

    • Process: ShowNetsExtension:ShowNets

    • Caption: ShowNets

  4. Kéo lệnh mới vào một thanh công cụ.

  5. Nhấp vào lệnh – một hộp thoại chứa danh sách các net sẽ xuất hiện.

Các bước tiếp theo

  • Xem tài liệu Altium Designer SDK để biết các interface cho schematic, bố cục PCB, component và nhiều nội dung khác.

  • Khám phá các extension mẫu và demo trong tổ chức GitHub AltiumDeveloper.

AI-LocalizedBản địa hóa bằng AI
Nếu bạn phát hiện vấn đề, hãy chọn văn bản/hình ảnh và nhấnCtrl + Enterđể gửi phản hồi cho chúng tôi.
Nội dung