Краткое руководство по началу работы с SDK Altium Designer

SDK для Altium Designer позволяет создавать пользовательские расширения, которые интегрируются непосредственно в Altium Designer — добавляют команды, автоматизируют рабочие процессы и предоставляют доступ к данным проекта через управляемый API .NET.

В этом руководстве показано, как установить инструменты разработки, создать проект расширения, добавить команду и запустить ее в Altium Designer.

Предварительные требования

Шаг 1: Установите расширение Altium Developer

Расширение Altium Developer добавляет шаблоны проектов и инструменты SDK непосредственно в Altium Designer.

  1. В Altium Designer перейдите в Extensions and Updates → Available.

  2. В разделе Software Extensions найдите Altium Developer.

  3. Установите расширение, затем перезапустите Altium Designer, когда появится соответствующий запрос.

Шаг 2: Создайте новый проект расширения

  1. В Altium Designer перейдите в File → New → Other → Extension.

    • Extension ID: ShowNetsExtension

    • Extension Kind: Altium Designer Server

    • Development Language: C#

    • IDE Version: latest

    • SDK Versionlatest

  2. После создания расширения Altium Designer отобразит сведения о нем. Обратите внимание на Source Location — откройте файл .csproj по этому пути в вашей IDE.

Шаг 3: Добавьте свою первую команду

Откройте Source Code\Commands.cs и добавьте следующие методы в класс Commands :

    /// <summary>
    /// Определяет состояние enabled/visible для команды "Show Nets" в Altium Designer.
    /// </summary>
    /// <param name="argContext">Текущий контекст представления документа сервера.</param>
    /// <param name="argParameters">Параметры команды (не используются).</param>
    /// <param name="argEnabled">Установите true, если команда должна быть доступна.</param>
    /// <param name="argChecked">Установите true, если команда должна отображаться как отмеченная (не используется).</param>
    /// <param name="argVisible">Установите true, если команда должна быть видимой (не используется).</param>
    /// <param name="argCaption">Заголовок команды (не используется).</param>
    /// <param name="argImageFile">Файл изображения команды (не используется).</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)
    {
        // Получаем текущий активный проект из рабочей области Altium Designer.
        var project = DXP.GlobalVars.DXPWorkSpace.DM_FocusedProject() as IProject;

        // Если проект нужно скомпилировать (например, список соединений устарел), компилируем его.
        if (project?.DM_NeedsCompile() == true)
            project.DM_Compile();

        // Включаем команду только в том случае, если активен корректный проект и это не проект "Free Documents".
        argEnabled = project != null && !IsFreeDocumentsProject(project);
    }

    /// <summary>
    /// Обработчик команды для отображения всех имен цепей в текущем схематическом документе или проекте.
    /// </summary>
    /// <param name="view">Текущее представление документа сервера.</param>
    /// <param name="parameters">Параметры команды (не используются).</param>
    public static void Command_ShowNets(IServerDocumentView view, ref string parameters)
    {
        // Получаем текущий активный проект из Altium Designer.
        var project = DXP.GlobalVars.DXPWorkSpace.DM_FocusedProject() as IProject;
        if (project == null || IsFreeDocumentsProject(project))
            return;

        string documentName;
        // Получаем текущий активный документ (например, лист схемы).
        var document = DXP.GlobalVars.DXPWorkSpace.DM_FocusedDocument() as IDocument;
        if (document == null)
        {
            // Если активного документа нет, убеждаемся, что проект скомпилирован, и используем документ развернутого проекта.
            if (project.DM_NeedsCompile()) project.DM_Compile();
            document = project.DM_DocumentFlattened();
            documentName = "Проект";
        }
        else
        {
            // Продолжаем только в том случае, если активный документ является схемой (DocKindSch).
            if (document.DM_DocumentKind() != EDPConstant.DocKindSch) return;
            documentName = document.DM_FileName();
        }

        // Перебираем все цепи в документе, получаем их полные имена и сортируем их по алфавиту.
        var netNames = Enumerable.Range(0, document.DM_NetCount())
            .Select(document.DM_Nets)
            .Select(net => net.DM_FullNetName())
            .OrderBy(name => name);

        // Отображаем список имен цепей в информационном диалоговом окне внутри Altium Designer.
        DXP.Utils.ShowInfo(string.Join(Environment.NewLine, netNames), $"Цепи [{documentName}]");
    }

    /// <summary>
    /// Проверяет, является ли указанный проект специальным проектом "Free Documents" в Altium Designer.
    /// </summary>
    /// <param name="project">Проверяемый проект.</param>
    /// <returns>True, если проект является проектом Free Documents; в противном случае — false.</returns>
    private static bool IsFreeDocumentsProject(IProject project)
    {
        return project == DXP.GlobalVars.DXPWorkSpace.DM_FreeDocumentsProject();
    }

Откройте Source Code\Main.cs и зарегистрируйте команду в классе PluginServerModule:

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

Соберите проект, чтобы установить расширение.

Шаг 4: Запустите свою команду в Altium Designer

  1. Запустите Altium Designer.

  2. Щелкните правой кнопкой мыши по любой панели инструментов и выберите Customize…

  3. В разделе Commands нажмите New… и настройте следующее:

    • Process: ShowNetsExtension:ShowNets

    • Caption: ShowNets

  4. Перетащите новую команду на панель инструментов.

  5. Нажмите команду — должно появиться диалоговое окно со списком цепей. 

Следующие шаги

  • Изучите документацию Altium Designer SDK по интерфейсам для схем, PCB layout, компонентов и многого другого.

  • Ознакомьтесь с примерами расширений и демоверсиями в организации GitHub AltiumDeveloper.

AI-LocalizedЛокализовано с помощью ИИ
Если вы обнаружили проблему, выделите текст/изображение и нажмитеCtrl + Enter, чтобы отправить нам свой отзыв.
Content