Extension Manager

Register and load user-defined extensions in the Extension Manager, found under the File menu at File > Extension Manager.

An extension provides the means to extend the application through shared libraries or scripts. Use extensions to create new profiles, contexts, model views, and more.

Sample extensions that illustrate the various use cases are included in the Extension Manager.

Extension Structure

An extension is comprised of a folder containing a manifest file, plugin.xml, and all related scripts and resources.

The plugin.xml file defines the metadata of the extension such as name, version, and minimum supported product version. The entire content of plugin.xml should be wrapped inside of section as shown below:

<?xml version="1.0" encoding="UTF-8"?>
<section name="Extension">
<entry name="name" value="Boxify"/>
<entry name="script" value="extension.py"/>
<entry name="author" value="Altair Engineering Inc."/>
<entry name="publisher" value="Altair Engineering Inc."/>
<entry name="description" value="Boxifies a selected part in Inspire."/>
<entry name="documentation" value="readme.html"/>
<entry name="minProductVersion"   value="2021.2"/>
Table 1. Supported attributes in extension.xml




Name of the Extension


The minimum version of the product that is supported by this extension


A short description about this extension that is displayed in the Extension Manager user interface


HTML file with the detailed description of the extension that can be opened in a web browser through the Extension Manager user interface


The author of this extension


The publisher of this extension


The script that should be executed when this extension is loaded


Location of the resources directory relative to the extension directory


An xml file that defines the settings of this extension


An xml file that defines the tooltips related to this extension


An xml file that defines the workflow help content of this extension


The plugin that should be loaded as a pre-requisite for this extension


The plugin that this plugin should be auto-loaded after


The name of the profile implemented in this extension

Implementing a Profile as an Extension

A Profile is the UI state that defines menus, ribbon pages, toolbars and dock windows. There can be multiple Profiles, but only one can be active, or displayed, at a time. Splitting functionality into Profiles can reduce screen clutter, allowing the user to focus on specific tasks.

Profiles can be hierarchical with a Profile having sub-Profiles. Sub-Profiles can make use of the base Profile functionality and implement additional functionality as required. There are two types of Profiles, stand-alone and add-on.

  • A stand-alone Profile re-configures the entire UI.

  • An add-on Profile contributes added functionality to an existing Profile.

The plugin.xml should have an entry defining the Profile name so that the Framework loads this extension when the Profile is requested to be activated.

<entry name="profile" value="MyProfile"/>

The following command line should be used to load the Profile, where -p denotes the extension and -pr denotes the Profile:

<installation directory>/hwx/bin/win64/runhwx.exe -p MyExtension -pr MyProfile

Sample code snippet for Profile Creation

from hwx import gui
class MyProfile(gui.Profile):
  def build(self):
    gui.RibbonPage(name="Geometry", children=[
      gui.RibbonPageGroup(name="Modify", children=[
        gui.SpriteActionGroup (
          text = "Boolean",
          children = [gui.SpriteAction (text = "Test", icon = "ribbonBooleanMainStrip-80.png", command = lambda: print('you clicked a button!!!'))])])])

  def activate(self):
#Profile creation
profile = MyProfile("MyProfile")

Managing Extensions

Add an Extension

  1. Click File > Extension Manager to open the Extension Manager.

  2. Click Add Extension, and browse to the extension folder to register it.

    Add extension

    All of the extensions located in the Custom plugins location specified in Preferences are automatically registered by the Extension Manager. The default custom plugins location is <USERPROFILE>/Documents/Altair/extensions.

  3. Toggle Load to load the extension in Inspire.

    Load extension

    Result: The extension is loaded in Inspire. This extension creates a new icon on a new ribbon.

    A Loaded extension

Unload an Extension

  1. Click File > Extension Manager to open the Extension Manager.

  2. Toggle Unload to unload an extension but preserve it in the Extension Manager and keep its registration.

    Unload extension

Remove an Extension

  1. Click File > Extension Manager to open the Extension Manager.

  2. Click Remove to unregister an extension and remove it from the Extension Manager.

    Remove extension

    If you unregister an extension that is in the custom plugins folder, click Add Extension to manually re-register it.