Hướng dẫn Bắt đầu Nhanh về SDK của Altium Designer
Altium Designer SDK cho phép bạn xây dựng các tiện ích mở rộng 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 tiện ích mở rộng, thêm một lệnh và chạy lệnh đó bên trong Altium Designer.
Điều kiện tiên quyết
-
Đăng ký tại Altium Developer Center – bắt buộc để mở quyền truy cập vào Altium Designer SDK và các tiện ích mở rộng của nó
-
Altium Designer đã được cài đặt và cấp phép
-
Một IDE tương thích .NET (Visual Studio hoặc VS Code có hỗ trợ C#)
Bước 1: Cài đặt Altium Developer Extension
Tiện ích Altium Developer bổ sung các mẫu dự án và công cụ SDK trực tiếp vào Altium Designer.
-
Trong Altium Designer, đi đến Extensions and Updates → Available.
-
Trong phần Software Extensions , tìm kiếm Altium Developer.
-
Cài đặt tiện ích mở rộng, sau đó khởi động lại Altium Designer khi được nhắc.
Bước 2: Tạo dự án tiện ích mở rộng mới
-
Trong Altium Designer, đi đến File → New → Other → Extension.
-
Extension ID:
ShowNetsExtension -
Extension Kind:
Altium Designer Server -
Development Language:
C# -
IDE Version:
latest -
SDK Version:
latest
-
-
Sau khi tiện ích mở rộng đượ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
.csprojtừ đườ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>
/// Determines the enabled/visible state for the "Show Nets" command in Altium Designer.
/// </summary>
/// <param name="argContext">The current server document view context.</param>
/// <param name="argParameters">Command parameters (unused).</param>
/// <param name="argEnabled">Set to true if the command should be enabled.</param>
/// <param name="argChecked">Set to true if the command should appear checked (unused).</param>
/// <param name="argVisible">Set to true if the command should be visible (unused).</param>
/// <param name="argCaption">Command caption (unused).</param>
/// <param name="argImageFile">Command image file (unused).</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)
{
// Retrieve the currently focused project from Altium Designer's workspace.
var project = DXP.GlobalVars.DXPWorkSpace.DM_FocusedProject() as IProject;
// If the project needs to be compiled (e.g., netlist out of date), compile it.
if (project?.DM_NeedsCompile() == true)
project.DM_Compile();
// Enable the command only if a valid project is focused and it's not the "Free Documents" project.
argEnabled = project != null && !IsFreeDocumentsProject(project);
}
/// <summary>
/// Command handler to display all net names in the current schematic document or project.
/// </summary>
/// <param name="view">The current server document view.</param>
/// <param name="parameters">Command parameters (unused).</param>
public static void Command_ShowNets(IServerDocumentView view, ref string parameters)
{
// Get the currently focused project from Altium Designer.
var project = DXP.GlobalVars.DXPWorkSpace.DM_FocusedProject() as IProject;
if (project == null || IsFreeDocumentsProject(project))
return;
string documentName;
// Get the currently focused document (e.g., schematic sheet).
var document = DXP.GlobalVars.DXPWorkSpace.DM_FocusedDocument() as IDocument;
if (document == null)
{
// If no document is focused, ensure the project is compiled and use the flattened project document.
if (project.DM_NeedsCompile()) project.DM_Compile();
document = project.DM_DocumentFlattened();
documentName = "Project";
}
else
{
// Only proceed if the focused document is a schematic (DocKindSch).
if (document.DM_DocumentKind() != EDPConstant.DocKindSch) return;
documentName = document.DM_FileName();
}
// Enumerate all nets in the document, retrieve their full names, and sort them alphabetically.
var netNames = Enumerable.Range(0, document.DM_NetCount())
.Select(document.DM_Nets)
.Select(net => net.DM_FullNetName())
.OrderBy(name => name);
// Display the list of net names in an information dialog within Altium Designer.
DXP.Utils.ShowInfo(string.Join(Environment.NewLine, netNames), $"Nets [{documentName}]");
}
/// <summary>
/// Checks if the given project is the special "Free Documents" project in Altium Designer.
/// </summary>
/// <param name="project">The project to check.</param>
/// <returns>True if the project is the Free Documents project; otherwise, 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 tiện ích mở rộng.
Bước 4: Chạy lệnh của bạn trong Altium Designer
-
Khởi động Altium Designer.
-
Nhấp chuột phải vào bất kỳ thanh công cụ nào và chọn Customize…
-
Trong mục Commands, nhấp vào New… và cấu hình như sau:
-
Process:
ShowNetsExtension:ShowNets -
Caption:
ShowNets
-
-
Kéo lệnh mới vào một thanh công cụ.
-
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
-
Hãy xem tài liệu Altium Designer SDK để tìm các giao diện dành cho schematic, bố cục PCB, linh kiện và nhiều nội dung khác.
-
Khám phá các tiện ích mở rộng mẫu và bản demo trong tổ chức GitHub AltiumDeveloper.