Skrócony przewodnik rozpoczęcia pracy z SDK Altium Designer
SDK programu Altium Designer umożliwia tworzenie własnych rozszerzeń, które integrują się bezpośrednio z Altium Designer — dodając polecenia, automatyzując przepływy pracy i zapewniając dostęp do danych projektowych za pośrednictwem zarządzanego interfejsu API .NET.
Ten przewodnik przeprowadzi Cię przez instalację narzędzi programistycznych, utworzenie projektu rozszerzenia, dodanie polecenia i uruchomienie go w środku Altium Designer.
Wymagania wstępne
-
Rejestracja w Altium Developer Center — wymagana do odblokowania dostępu do SDK programu Altium Designer i jego rozszerzeń
-
Zainstalowany i licencjonowany Altium Designer
-
Środowisko IDE zgodne z platformą .NET (Visual Studio lub VS Code z obsługą języka C#)
Krok 1: Zainstaluj rozszerzenie Altium Developer
Rozszerzenie Altium Developer dodaje szablony projektów i narzędzia SDK bezpośrednio do Altium Designer.
-
W Altium Designer przejdź do Extensions and Updates → Available.
-
W sekcji Software Extensions wyszukaj Altium Developer.
-
Zainstaluj rozszerzenie, a następnie po wyświetleniu monitu uruchom ponownie Altium Designer.
Krok 2: Utwórz nowy projekt rozszerzenia
-
W Altium Designer przejdź do File → New → Other → Extension.
-
Extension ID:
ShowNetsExtension -
Extension Kind:
Altium Designer Server -
Development Language:
C# -
IDE Version:
latest -
SDK Version:
latest
-
-
Po utworzeniu rozszerzenia Altium Designer wyświetli jego szczegóły. Zwróć uwagę na Source Location — otwórz plik
.csprojz tej ścieżki w swoim IDE.
Krok 3: Dodaj swoje pierwsze polecenie
Otwórz Source Code\Commands.cs i dodaj następujące metody do klasy Commands :
/// <summary>
/// Określa stan włączenia/widoczności polecenia „Show Nets” w Altium Designer.
/// </summary>
/// <param name="argContext">Bieżący kontekst widoku dokumentu serwera.</param>
/// <param name="argParameters">Parametry polecenia (nieużywane).</param>
/// <param name="argEnabled">Ustaw na true, jeśli polecenie ma być włączone.</param>
/// <param name="argChecked">Ustaw na true, jeśli polecenie ma być wyświetlane jako zaznaczone (nieużywane).</param>
/// <param name="argVisible">Ustaw na true, jeśli polecenie ma być widoczne (nieużywane).</param>
/// <param name="argCaption">Podpis polecenia (nieużywany).</param>
/// <param name="argImageFile">Plik obrazu polecenia (nieużywany).</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)
{
// Pobierz aktualnie aktywny projekt z obszaru roboczego Altium Designer.
var project = DXP.GlobalVars.DXPWorkSpace.DM_FocusedProject() as IProject;
// Jeśli projekt wymaga kompilacji (np. netlista jest nieaktualna), skompiluj go.
if (project?.DM_NeedsCompile() == true)
project.DM_Compile();
// Włącz polecenie tylko wtedy, gdy aktywny jest prawidłowy projekt i nie jest to projekt „Free Documents”.
argEnabled = project != null && !IsFreeDocumentsProject(project);
}
/// <summary>
/// Procedura obsługi polecenia wyświetlającego wszystkie nazwy sieci w bieżącym dokumencie schematu lub projekcie.
/// </summary>
/// <param name="view">Bieżący widok dokumentu serwera.</param>
/// <param name="parameters">Parametry polecenia (nieużywane).</param>
public static void Command_ShowNets(IServerDocumentView view, ref string parameters)
{
// Pobierz aktualnie aktywny projekt z Altium Designer.
var project = DXP.GlobalVars.DXPWorkSpace.DM_FocusedProject() as IProject;
if (project == null || IsFreeDocumentsProject(project))
return;
string documentName;
// Pobierz aktualnie aktywny dokument (np. arkusz schematu).
var document = DXP.GlobalVars.DXPWorkSpace.DM_FocusedDocument() as IDocument;
if (document == null)
{
// Jeśli żaden dokument nie jest aktywny, upewnij się, że projekt jest skompilowany, i użyj dokumentu projektu po spłaszczeniu.
if (project.DM_NeedsCompile()) project.DM_Compile();
document = project.DM_DocumentFlattened();
documentName = "Projekt";
}
else
{
// Kontynuuj tylko wtedy, gdy aktywny dokument jest schematem (DocKindSch).
if (document.DM_DocumentKind() != EDPConstant.DocKindSch) return;
documentName = document.DM_FileName();
}
// Wylicz wszystkie sieci w dokumencie, pobierz ich pełne nazwy i posortuj je alfabetycznie.
var netNames = Enumerable.Range(0, document.DM_NetCount())
.Select(document.DM_Nets)
.Select(net => net.DM_FullNetName())
.OrderBy(name => name);
// Wyświetl listę nazw sieci w oknie dialogowym z informacją w Altium Designer.
DXP.Utils.ShowInfo(string.Join(Environment.NewLine, netNames), $"Nets [{documentName}]");
}
/// <summary>
/// Sprawdza, czy dany projekt jest specjalnym projektem „Free Documents” w Altium Designer.
/// </summary>
/// <param name="project">Projekt do sprawdzenia.</param>
/// <returns>True, jeśli projekt jest projektem Free Documents; w przeciwnym razie false.</returns>
private static bool IsFreeDocumentsProject(IProject project)
{
return project == DXP.GlobalVars.DXPWorkSpace.DM_FreeDocumentsProject();
}
Otwórz Source Code\Main.cs i zarejestruj polecenie w klasie PluginServerModule:
protected override void InitializeCommands()
{
((CommandLauncher)CommandLauncher).RegisterCommand("ShowNets", Commands.Command_ShowNets, Commands.GetState_ShowNets);
}
Zbuduj projekt, aby zainstalować rozszerzenie.
Krok 4: Uruchom swoje polecenie w Altium Designer
-
Uruchom Altium Designer.
-
Kliknij prawym przyciskiem myszy dowolny pasek narzędzi i wybierz Customize…
-
W obszarze Commandskliknij New… i skonfiguruj następujące elementy:
-
Process:
ShowNetsExtension:ShowNets -
Caption:
ShowNets
-
-
Przeciągnij nowe polecenie na pasek narzędzi.
-
Kliknij polecenie — powinno pojawić się okno dialogowe z listą sieci.
Kolejne kroki
-
Przejrzyj dokumentację Altium Designer SDK, aby poznać interfejsy dotyczące schematów, układu PCB, komponentów i nie tylko.
-
Poznaj przykładowe rozszerzenia i dema w organizacji GitHub AltiumDeveloper.