Guía de inicio rápido del SDK de Altium Designer
El SDK de Altium Designer le permite crear extensiones personalizadas que se integran directamente en Altium Designer, agregando comandos, automatizando flujos de trabajo y accediendo a datos de diseño mediante una API administrada de .NET.
Esta guía le muestra cómo instalar las herramientas de desarrollo, crear un proyecto de extensión, agregar un comando y ejecutarlo dentro de Altium Designer.
Requisitos previos
-
Registro en Altium Developer Center – necesario para desbloquear el acceso al SDK de Altium Designer y sus extensiones
-
Altium Designer instalado y con licencia
-
Un IDE compatible con .NET (Visual Studio o VS Code con soporte para C#)
Paso 1: Instalar la extensión Altium Developer
La extensión Altium Developer agrega plantillas de proyecto y herramientas del SDK directamente en Altium Designer.
-
En Altium Designer, vaya a Extensions and Updates → Available.
-
En la sección Software Extensions , busque Altium Developer.
-
Instale la extensión y luego reinicie Altium Designer cuando se le solicite.
Paso 2: Crear un nuevo proyecto de extensión
-
En Altium Designer, vaya a File → New → Other → Extension.
-
Extension ID:
ShowNetsExtension -
Extension Kind:
Altium Designer Server -
Development Language:
C# -
IDE Version:
latest -
SDK Version:
latest
-
-
Una vez creada la extensión, Altium Designer muestra sus detalles. Tome nota de Source Location — abra el archivo
.csprojdesde esa ruta en su IDE.
Paso 3: Agregue su primer comando
Abra Source Code\Commands.cs y agregue los siguientes métodos a la clase Commands :
/// <summary>
/// Determina el estado habilitado/visible del comando "Show Nets" en Altium Designer.
/// </summary>
/// <param name="argContext">El contexto actual de vista del documento del servidor.</param>
/// <param name="argParameters">Parámetros del comando (sin usar).</param>
/// <param name="argEnabled">Establecer en true si el comando debe estar habilitado.</param>
/// <param name="argChecked">Establecer en true si el comando debe aparecer marcado (sin usar).</param>
/// <param name="argVisible">Establecer en true si el comando debe ser visible (sin usar).</param>
/// <param name="argCaption">Título del comando (sin usar).</param>
/// <param name="argImageFile">Archivo de imagen del comando (sin usar).</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)
{
// Recupera el proyecto actualmente enfocado desde el espacio de trabajo de Altium Designer.
var project = DXP.GlobalVars.DXPWorkSpace.DM_FocusedProject() as IProject;
// Si el proyecto necesita compilarse (por ejemplo, si la netlist no está actualizada), compílelo.
if (project?.DM_NeedsCompile() == true)
project.DM_Compile();
// Habilita el comando solo si hay un proyecto válido enfocado y no es el proyecto "Free Documents".
argEnabled = project != null && !IsFreeDocumentsProject(project);
}
/// <summary>
/// Controlador del comando para mostrar todos los nombres de red en el documento esquemático o proyecto actual.
/// </summary>
/// <param name="view">La vista actual del documento del servidor.</param>
/// <param name="parameters">Parámetros del comando (sin usar).</param>
public static void Command_ShowNets(IServerDocumentView view, ref string parameters)
{
// Obtiene el proyecto actualmente enfocado en Altium Designer.
var project = DXP.GlobalVars.DXPWorkSpace.DM_FocusedProject() as IProject;
if (project == null || IsFreeDocumentsProject(project))
return;
string documentName;
// Obtiene el documento actualmente enfocado (por ejemplo, una hoja esquemática).
var document = DXP.GlobalVars.DXPWorkSpace.DM_FocusedDocument() as IDocument;
if (document == null)
{
// Si no hay ningún documento enfocado, asegúrese de que el proyecto esté compilado y use el documento del proyecto aplanado.
if (project.DM_NeedsCompile()) project.DM_Compile();
document = project.DM_DocumentFlattened();
documentName = "Project";
}
else
{
// Continúe solo si el documento enfocado es un esquemático (DocKindSch).
if (document.DM_DocumentKind() != EDPConstant.DocKindSch) return;
documentName = document.DM_FileName();
}
// Enumera todas las redes del documento, recupera sus nombres completos y las ordena alfabéticamente.
var netNames = Enumerable.Range(0, document.DM_NetCount())
.Select(document.DM_Nets)
.Select(net => net.DM_FullNetName())
.OrderBy(name => name);
// Muestra la lista de nombres de red en un cuadro de diálogo informativo dentro de Altium Designer.
DXP.Utils.ShowInfo(string.Join(Environment.NewLine, netNames), $"Nets [{documentName}]");
}
/// <summary>
/// Comprueba si el proyecto dado es el proyecto especial "Free Documents" en Altium Designer.
/// </summary>
/// <param name="project">El proyecto que se va a comprobar.</param>
/// <returns>True si el proyecto es el proyecto Free Documents; en caso contrario, false.</returns>
private static bool IsFreeDocumentsProject(IProject project)
{
return project == DXP.GlobalVars.DXPWorkSpace.DM_FreeDocumentsProject();
}
Abra Source Code\Main.cs y registre el comando en la clase PluginServerModule:
protected override void InitializeCommands()
{
((CommandLauncher)CommandLauncher).RegisterCommand("ShowNets", Commands.Command_ShowNets, Commands.GetState_ShowNets);
}
Compile el proyecto para instalar la extensión.
Paso 4: Ejecute su comando en Altium Designer
-
Inicie Altium Designer.
-
Haga clic con el botón derecho en cualquier barra de herramientas y seleccione Customize…
-
En Commands, haga clic en New… y configure lo siguiente:
-
Process:
ShowNetsExtension:ShowNets -
Caption:
ShowNets
-
-
Arrastre el nuevo comando a una barra de herramientas.
-
Haga clic en el comando; debería aparecer un cuadro de diálogo con la lista de redes.
Próximos pasos
-
Consulte la documentación del SDK de Altium Designer para ver interfaces que cubren esquemáticos, diseño de PCB, componentes y más.
-
Explore extensiones de ejemplo y demostraciones en la organización de GitHub AltiumDeveloper.