Ribbons XML

Format of customized ribbon page .xml files.

XML Overview

The ribbon .xml structure consists of action lists and page tabs. Action lists contain all instances of unique actions that are then referenced when needed in the individual page tabs. They can be placed anywhere in the file as long as they appear outside page tags and before the page that references them. Page tabs contain the remaining groups, action groups, and actions necessary to build the overall ribbon.

Changing Solver Interfaces

When changing solver interfaces, all pages are reloaded into the menu bar and their visibility is filtered based on whether the interface has been included in the visible attribute. More information on using the visible attribute can be found below.

Tags

root

Root tag must always be the base tag of the .xml hierarchy and have all tags placed inside of it.
Attributes
translationcontext
Children
page, actionlist

page

Represents a tab on the ribbon.
Attributes
tag, text, spotlighttext, tooltip, visible, homepage, helpcommand
Children
group
Example XML
<root>
    <page tag="HMX_Assembly" text="Assembly">
        ...
    </page>
    <page tag="HMX_Geometry" text="Geometry">
        ...
    </page>
    <page tag="HMX_Mesh" text="Mesh">
        ...
    </page>
</root>

group

Group container for organizing action groups divided by vertical separators.
Attributes
tag, text, spotlighttext, tooltip, visible
Children
actiongroup, menu
Example XML
<page tag="HMX_Assembly" text="Assembly">
    <group tag="HMX_Organize_G" text="Organize">
        ...
    </group>
    <group tag="HMX_Parts_G" text="Parts">
        ...
    </group>
</page>

actiongroup

Action group container for organizing a group of actions.
Attributes
tag, text, spotlighttext, tooltip, visible, type, defaultaction, dropdownsmallicons
Children
spriteaction, secondaryribbon
Example XML
<page tag="HMX_Assembly" text="Assembly">
     <group tag="HMX_Organize_G" text="Organize">
         <actiongroup tag="HMX_Organize_AG" text="Organize">
             ...
         </actiongroup>
         <actiongroup tag="HMX_Collaborate_AG" text="Collaborate">
             ...
         </actiongroup>
         <actiongroup tag="HMX_ID_Manager_AG" text="ID Manager">
             ...
         </actiongroup>
     </group>
</page>

actionlist

List container for all the spriteaction tags. Any new spriteaction should be placed inside of it.
Attributes
None
Children
action

action

An individual action in the action group. Each new spriteaction tag in an actions list should contain unique attributes from the existent tags. If the new action tag is not unique, then the already existing tag should be referenced where required in a page.
Attributes
Inside actionlist tags: tag, text, tooltip, image, command, picmask, spotlighttext, enabled, linktoe
Inside page tags: actiontag, visible, assatellite, xoffset (with assatellite)
Children
none
Example XML
<root>
    <actionlist>
        <action tag="HMX_Collaborate" text="Collaborate" tooltip="Collaboration Tools"
            image="ribbonCollaborateStrip-80.png" command="tcl: ::hw::OpenDataManager"/>
        <action tag="HMX_Subscribe" text="Subscribe" tooltip="Subscribe"
            image="ribbonSatelliteSubscribeStrip-80.png" command="tcl: ::hw::InitSubscribe"/>
        ...
    </actionlist>
    <page tag="HMX_Assembly" text="Assembly">
        <group tag="HMX_Organize_G" text="Organize">
            ...
            <actiongroup tag="HMX_Collaborate_AG" text="Collaborate">
                <action actiontag="HMX_Collaborate"/>
                <action actiontag="HMX_Subscribe" assatellite="True"/>
            </actiongroup>
            ...
        </group>
    </page>
</root>

secondaryribbon

An individual action that extends to a secondary group of actions.
Attributes
tag, text, spotlighttext, tooltip, visible, command, assatellite, enabled, linkto, picmask, image
Children
action
Example XML
<root>
    <actionlist>
        <action tag="HMX_Parts" text="Parts"
            image="ribbonPartsStrip-64.png"
            command="tcl:  ::hm::context::listentityreview::PostEE Part"/>
        <action tag="HMX_PartsAssems" text="Part Assems"
            image="ribbonAssembliesStrip-64.png"
            command="tcl:  ::hm::context::listentityreview::PostEE PartAssembly"/>
        ...
    </actionlist>
    <page tag="HMX_Assembly" text="Assembly">
        ...
        <group tag="HMX_Parts_G" text="Parts">
            ...
            <actiongroup tag="HMX_Parts_AG" text="Parts" tooltip="">
                <secondaryribbon tag="HMX_Parts_SR" text="Parts"
                    image="ribbonPartsStrip-80.png">
                    <spriteaction actiontag="HMX_Parts"/>
                    <spriteaction actiontag="HMX_PartAssems"/>
                </secondaryribbon>
            </actiongroup>
            ...
        </group>
        ...
    </page>
</root>

menu

A drop-down menu placed on the right side of the group text.
Attributes
Visible
Children
action, separator

separator

Horizontal separators inside of drop-down menus.
Attributes
Visible, text, tooltip
Children
None
Example XML
<page tag="HMX_Connectors" text="Connectors">
     <group tag="HMX_Create_G" text="Create">
         ...
         <menu>
             <action actiontag="HMX_ConnectorPanels"/>
             <separator/>
             <action actiontag="HMX_Absorption"/>
             <action actiontag="HMX_AutoPitch"/>
             <action actiontag="HMX_Comparison_1"/>
             <action actiontag="HMX_Quality"/>
             <action actiontag="HMX_HoleDetection"/>
             <separator/>
             <spriteaction actiontag="HMX_ConnectorOptions"/>
         </menu>
     </group>
</page>

if

Condition statement to show/hide all tags contained within it based on the provided expression.
Attributes
eval
Children
page, group, actiongroup, action, menu, separator
Operators
==, !=, <, > <=, >=, in, ni
Format
eval="expr: $ENVIRONMENT_VARIABLE == VALUE"<br>
eval="expr: $HM_UNITS > 1"<br>
eval="tcl: ::HM_Framework::SomeProc %T"<br>
eval="py: hwf.frwk.test()"
Example XML
<page tag="HMX_Assembly" text="Assembly">
     <if eval="expr: $PLATFORM == win64">
         <group tag="HMX_Parts_G" text="Parts">
         <if eval="tcl: ::HM_Framework::SomeProc %N %T">
             <action actiontag="HMX_Assemblies"/>
         </if>
         <if eval="py: hwf.frwk.test()">
             <action actiontag="HMX_Verification"/>
         </if>
         </group>
     </if>
</page>
Output
The Parts group will only be displayed if the environment variable platform is set to win64. The Assemblies and Verification actions will only be displayed if the .tcl and Python commands return true.

Attributes

tag

Unique identifier of the tag

text

Text that is displayed to the screen

spotlighttext

Boolean value for adding a blue highlight to the text displayed

tooltip

Tooltop text displayed when hovering the region

visible

Conditional attribute to show/hide any tags contained within it based on the profiles specified

Visible conditions can be nested
Format
visible="expr: $HMPROFILE in {Nastran, OptiStruct, Exodus}"
Example XML
<page tag="HMX_Analyze" text="Analyze" visible="expr: $HMPROFILE in {Abaqus, Ansys, Exodus}">
     <group tag="HMX_Structural_G" text="Structural">
         <actiongroup tag="HMX_Loads_AG" text="Loads" visible="expr: $HMPROFILE in {Abaqus}">
             <action actiontag="HMX_PressureBack"/>
             <action actiontag="HMX_Moments"/>
             <action actiontag="HMX_List_Loads" assatellite="True"/>
         </actiongroup>
         <actiongroup tag="HMX_Loads_AG" text="Loads" tooltip="">
             <action actiontag="HMX_BaseArc"/>
             <action actiontag="HMX_Forces"/>
         </actiongroup>
     </group>
</page>
Result
The entire analyze page will only display when the solver interface is set to Abaqus, ANSYS, or EXODUS. The first loads actiongroup inside will only be displayed in Abaqus.

actiontag

Unique identifier for the action tag inside a page which corresponds with the actiontag inside an actionlist.

command

Specifies the resulting command executed when controls are selected
Supported commands
Python, TCL, Panel, Context
Operators
==, !=, <, > <=, >=, in, ni
Format
command="py: hwf.frwk.test()"<br>
command="tcl: tcl: ::HM_Framework::Unity::PopUpPanel {config edit}"<br>
command="panel: {count} {} {}"<br>
command="context: Patch"
Example XML
<actionlist>
     <spriteaction tag="HMX_Open" text="Open" image="ribbonFilesOpenStrip-80.png"
     command="py: filemenu.OpenFile()"/>
     <action tag="HMX_Reorder" text="Reorder"
     command="tcl: ::HM_Framework::Unity::PopUpPanel {reorder}"/>
     <action tag="HMX_Count" text="Count" command="panel: {count} {} {}"/>
     <action tag="HMX_Patch" text="Patch" image="ribbonPatchStrip-64.png"
     command="context: Patch"/>
</actionlist>

assatellite

Boolean value that sets the action tag to a satellite image

xoffset

Sets the horizontal offset for satellite actions

Used only when assatellite is active

enabled

Boolean value to disable/enable any action

Disabled actions appear greyed out and have no action when selected

linkto

Links one action to another, based on the tag attribute value, to copy its command when selected

image

Image file for action and secondaryribbon tags

picmask

Image used to define the selection region for an action

type

Adds a drop-down menu to an actiongroup tag when the value is set to menu
Example XML
<page tag="HMX_OptiStructModel" text="Model" visible="expr: $HMPROFILE in {OptiStruct}">
     <group tag="HMX_Setup_G" text="Setup">
         ...
         <actiongroup tag="HMX_Masses_AG" text="Masses"
             image="ribbonConcentratedMassesStrip-80.png"
             type="menu" defaultaction="HMX_Point_Mass_1" dropdownsmallicons="true">
             <action actiontag="HMX_Point_Mass_1"/>
             <action actiontag="HMX_NSM_1"/>
             <action actiontag="HMX_Rigid_Mass_1"/>
             <action actiontag="HMX_FE_Absorb_1"/>
             <action actiontag="HMX_Review_Masses_1" assatellite="True"/>
         </actiongroup>
         ...
     </group>
     ...
</page>

defaultaction

Sets the default action to be selected in an actiongroup drop-down menu based on the actiontag attribute

dropdownsmallicons

Boolean value to enable small action icons next to the action text in an actiongroup down menu

eval

Conditional attribute used with the if tag to show/hide all tags contained within it based on environment variables

homepage

Boolean value that sets the page tag to be a home group

This group will remain visible at the beginning of every page

helpcommand

Support for page level help command with F1

In idle context it will execute this command instead of default help

Follows the same format as the command attribute

Mesh Page Example

<root>
    <actionlist>
         <action tag="HMX_criteria" text="criteria" tooltip="Open the Criteria Editor"
                 image="ribbonMeshParametersCriteriaCriteriaStrip-80.png"
                 command="tcl: ::hwt::Source CriteriaEditor.tcl;
                 ::CriteriaEditor::OpenDialogWithArgs
                 -open_mode hm -show_mode crit_both"/>
         <action tag="HMX_Parameters" text="Parameters" tooltip="Review Parameters"
                 command="tcl: ::hm::context::listentityreview::OnSatelliteButtonClick parameters"/>
         <action tag="HMX_Mesh" text="Mesh Controls" tooltip="Mesh Controls"
                 image="ribbonMeshControlsStrip-80.png"
                 command="tcl: ::hm::br::PostBrowser meshcontrols"/>
         <action tag="HMX_LineMesh" text="Line Mesh" tooltip="Create 1D Element Mesh"
             image="hwd1DMeshing-80.png" command="panel: {line mesh} {} {}"/>
         <action tag="HMX_BatchMesher" text="BatchMesher" tooltip="Altair
             BatchMesher" image="ribbonSurfaceMeshBatchStrip-80.png"
             command="context: 2DMCSBatchMesher" spotlighttext="True"/>
         <action tag="HMX_CFD_2D_Mesh" text="CFD 2D Mesh" tooltip="Generate 2D CFD Meshes"
             image="ribbonSurfaceMeshCFDStrip-80.png" command="context: 2DMCSCfd"
             spotlighttext="True"/>
         <action tag="HMX_Selection_General" text="Create" enabled="True"
             tooltip="Mesh Surfaces" image="ribbonMeshSelectionStrip-64.png"
             command="context: 2DMCSGeneral" spotlighttext="True"/>
         <action tag="HMX_Density_General" text="Density" enabled="False"
             tooltip="Edit Edge Density Values" image="ribbonMeshDensityStrip-64.png"
             command="context: 2DMCEEDensity_General" spotlighttext="True"/>
         <action tag="HMX_Biasing_General" text="Biasing" enabled="False"
             tooltip="Edit Edge Biasing Values" image="ribbonMeshBiasStrip-64.png"
             command="context: 2DMCEEBiasing_General" spotlighttext="True"/>
         <action tag="HMX_FaceEdit_General" text="Face Edit" enabled="False"
             tooltip="Edit Surface Mesh Properties" image="ribbonMeshTypeStrip-64.png"
             command="context: 2DMCFaceEdit_General" spotlighttext="True"/>
         <action tag="HMX_Selection_Panel" text="Create" enabled="True"
             tooltip="Mesh Surfaces" image="ribbonMeshSelectionStrip-64.png"
             command="context: 2DMCSPanelMesh" spotlighttext="True"/>
         <action tag="HMX_Density_Panel" text="Density" enabled="False"
             tooltip="Edit Edge Density Values" image="ribbonMeshDensityStrip-64.png"
             command="context: 2DMCEEDensity_Panel" spotlighttext="True"/>
         <action tag="HMX_Biasing_Panel" text="Biasing" enabled="False"
             tooltip="Edit Edge Biasing Values" image="ribbonMeshBiasStrip-64.png"
             command="context: 2DMCEEBiasing_Panel" spotlighttext="True"/>
         <action tag="HMX_FaceEdit_Panel" text="Face Edit" enabled="False"
             tooltip="Edit Surface Mesh Properties" image="ribbonMeshTypeStrip-64.png"
             command="context: 2DMCFaceEdit_Panel" spotlighttext="True"/>
         <action tag="HMX_Rigid_Body_Mesh" text="Rigid Body Mesh"
             tooltip="Generate 2D Rigid Body Meshes"
             image="ribbonSurfaceMeshRigidBodyStrip-80.png"
             command="context: 2DMCSRigidBody" spotlighttext="True"/>
         <action tag="HMX_Create" text="Automatic" tooltip="Create Midmesh"
             image="ribbonMidmeshCreateStrip-64.png" command="context: 2DMidmeshCreate"
             spotlighttext="True"/>
         <action tag="HMX_Repair" text="Repair/Fill" tooltip="Repair/Fill"
             image="ribbonMidmeshRepairStrip-64.png" command="context: 2DMidmeshRepair"
             spotlighttext="True"/>
         <action tag="HMX_CreateMidedge" text="Create Midedge"
             tooltip="Create Midedge" image="ribbonMidmeshMidedgeStrip-64.png"
             command="context: 2DMidmeshCreateMidedge" spotlighttext="True"/>
         <action tag="HMX_EditTopology" text="Edit Topology"
             tooltip="Edit Midmesh Topology" image="ribbonMidmeshEditStrip-64.png"
             command="context: 2DMidmeshEditTopology" spotlighttext="True"/>
         <action tag="HMX_Align" text="Align" tooltip="Align Midmesh"
             image="ribbonMidmeshAlignStrip-64.png"
             command="context: 2DMidmeshAlign" spotlighttext="True"/>
         <action tag="HMX_Create_1" text="Create" tooltip="Create Feature Edges"
             image="ribbonFeatureEdgesCreateStrip-64.png"
             command="context: FeatureEdgesCreate" spotlighttext="True"/>
         <action tag="HMX_Edit" text="Edit" tooltip="Edit Feature Edges"
             image="ribbonFeatureEdgesEditStrip-64.png"
             command="context: FeatureEdgesEdit" spotlighttext="True"/>
         <action tag="HMX_Rebuild" text="Rebuild" tooltip="Rebuild Mesh"
             image="ribbonMeshRebuildStrip-80.png"
             command="context: 2DMeshRebuild" spotlighttext="True"/>
         <action tag="HMX_AdaptiveWrap" text="Adaptive Wrap"
             tooltip="Adaptive Wrap" command="tcl: ::hwt::Source AdaptiveWrap.tcl"/>
         <action tag="HMX_EMLattice" text="EM Lattice" tooltip="EM Lattice"
             command="tcl: ::hwt::Source VoxelLattice.tcl"/>
         <action tag="HMX_ShrinkWrap" text="Shrink Wrap" tooltip="Shrink Wrap"
         command="tcl: ::HM_Framework::Unity::PopUpPanel {shrink wrap}"/>
         <action tag="HMX_Create_2" text="Create" tooltip="Create Tetra Meshes"
             image="ribbonSolidMeshTetraCreateStrip-64.png"
             command="context: 3DTetrameshCreate" spotlighttext="True"/>
         <action tag="HMX_Remesh" text="Remesh" tooltip="Remesh Tetra Meshes"
             image="ribbonSolidMeshTetraRemeshStrip-64.png"
             command="context: 3DTetrameshRemesh" spotlighttext="True"/>
         <action tag="HMX_Hex" text="Hex" tooltip="Hex Mesh"
             image="ribbonSolidMeshHexStrip-80.png"
             command="panel: {solid map} {multi solids} {}"/>
         <action tag="HMX_Create_3" text="Create" tooltip="Create Voxel Meshes"
             image="ribbonVoxelCreateStrip-64.png"
             command="context: 3DVoxelMeshCreate" spotlighttext="True"/>
         <action tag="HMX_Edit_1" text="+/-" tooltip="Edit Voxel Meshes"
             image="ribbonVoxelEditStrip-64.png" command="context: 3DVoxelMeshEdit"
             spotlighttext="True"/>
         <action tag="HMX_AcousticCavity" text="Acoustic Cavity" tooltip="Acoustic Cavity"
             command="tcl: ::hwt::Source ACM/hmAcousticMeshGUI.tcl;
             ::hmAcousticMeshGui::PostAcousticMesh;"/>
         <action tag="HMX_Morph_Freehand_Nodes" text="Morph Mesh"
             tooltip="Morph Meshes by Moving Nodes or Mapping to Geometry"
             image="ribbonMorphingMeshStrip-80.png"
             command="context: MorphFreehandNodes" spotlighttext="True"/>
         <action tag="HMX_Morph_Shapes" text="Morph Shapes"
             tooltip="Create, Edit, and Apply Shapes" image="ribbonMorphShapesMainStrip-80.png"
             command="context: MorphShapes"/>
         <action tag="HMX_Morph_Shapes_List" text="Morph Shapes List"
             tooltip="Create Shapes" image="ribbonMorphShapesSaveNewStrip-80.png"
             command="tcl: ::hm::context::shapetable::CreateEntity"/>
         <action tag="HMX_Morph_Shapes_Record" text="Morph Shapes Record"
             tooltip="Record Node Movements" image="ribbonMorphShapesRecordStrip-80.png"
             command="tcl: ::hm::context::shapetable::MorphRecord 0"/>
    <actionlist>

    <page tag="HMX_Mesh" text="Mesh" spotlighttext="True">
        <group tag="HMX_Controls_G" text="Controls">
            <actiongroup tag="HMX_Param_Criteria_AG" text="Param/Criteria" tooltip="">
                <action actiontag="HMX_criteria"/>
                <action actiontag="HMX_param"/>
            </actiongroup>
            <actiongroup tag="HMX_Mesh_AG" text="Mesh Controls">
                <action actiontag="HMX_Mesh"/>
            </actiongroup>
        </group>
        <group tag="HMX_1D_Mesh_G" text="1D Mesh">
            <actiongroup tag="HMX_LineMesh_AG" text="Line Mesh">
                <action actiontag="HMX_LineMesh"/>
            </actiongroup>
        </group>
        <group tag="HMX_2D_Mesh_G" text="2D Mesh">
            <actiongroup tag="HMX_SurfaceMesh_AG" text="Surface Mesh" tooltip="" type="menu"
                dropdownsmallicons="true" defaultaction="HMX_General_2D_Mesh_SR"
                image="ribbonSurfaceMeshGeneralStrip-80.png" spotlighttext="True">
                <action actiontag="HMX_BatchMesher"/>
                <action actiontag="HMX_CFD_2D_Mesh"/>
                <secondaryribbon tag="HMX_General_2D_Mesh_SR" text="General 2D Mesh"
                    defaultaction="HMX_Selection_General" tooltip="Generate 2D Meshes"
                    image="ribbonSurfaceMeshGeneralStrip-80.png" spotlighttext="True">
                    <action actiontag="HMX_Selection_General"/>
                    <action actiontag="HMX_Density_General"/>
                    <action actiontag="HMX_Biasing_General"/>
                    <action actiontag="HMX_FaceEdit_General"/>
                </secondaryribbon>
                <secondaryribbon tag="HMX_Panel_Mesh_SR" text="Panel Mesh"
                    defaultaction="HMX_Selection_Panel" tooltip="Generate 2D mapped meshes"
                    image="ribbonSurfaceMeshPanelStrip-80.png" spotlighttext="True">
                    <action actiontag="HMX_Selection_Panel"/>
                    <action actiontag="HMX_Density_Panel"/>
                    <action actiontag="HMX_Biasing_Panel"/>
                    <action actiontag="HMX_FaceEdit_Panel"/>
                </secondaryribbon>
                <action actiontag="HMX_Rigid_Body_Mesh"/>
            </actiongroup>
            <secondaryribbon tag="HMX_Midmesh_SR" text="Midmesh" tooltip="Create Edit Midmesh"
                image="ribbonMidsurfaceMidmeshStrip-80.png" defaultaction="HMX_Create"
                spotlighttext="True">
                <action actiontag="HMX_Create"/>
                <action actiontag="HMX_Repair"/>
                <action actiontag="HMX_CreateMidedge"/>
                <action actiontag="HMX_EditTopology"/>
                <action actiontag="HMX_Align"/>
            </secondaryribbon>
            <secondaryribbon tag="HMX_FeatureEdges_SR" text="Feature Edges"
                tooltip="Create and Edit Mesh Feature Edges"
                image="ribbonFeatureEdgesStrip-80.png"
                defaultaction="HMX_Create_1" spotlighttext="True">
                <action actiontag="HMX_Create_1"/>
                <action actiontag="HMX_Edit"/>
            </secondaryribbon>
            <actiongroup tag="HMX_Rebuild_AG" text="Rebuild" spotlighttext="True">
                <action actiontag="HMX_Rebuild"/>
            </actiongroup>
            <menu>
                <action actiontag="HMX_AdaptiveWrap"/>
                <action actiontag="HMX_EMLattice"/>
                <action actiontag="HMX_ShrinkWrap"/>
            </menu>
        </group>
        <group tag="HMX_3D_Mesh_G" text="3D Mesh">
            <secondaryribbon tag="HMX_Tetra_SR" text="Tetra" tooltip="Create Edit Tetra Meshes"
                image="ribbonSolidMeshTetraStrip-80.png" defaultaction="HMX_Create_2"
                spotlighttext="True">
                <action actiontag="HMX_Create_2"/>
                <action actiontag="HMX_Remesh"/>
            </secondaryribbon>
            <actiongroup tag="HMX_Hex_AG" text="Hex">
                <action actiontag="HMX_Hex"/>
            </actiongroup>
            <secondaryribbon tag="HMX_Voxel_SR" text="Voxel" tooltip="Create Edit Voxel Meshes"
                image="ribbonVoxelStrip-80.png" defaultaction="HMX_Create_3"
                spotlighttext="True">
                <action actiontag="HMX_Create_3"/>
                <action actiontag="HMX_Edit_1"/>
            </secondaryribbon>
            <menu>
                <action actiontag="HMX_AcousticCavity"/>
            </menu>
        </group>
        <group tag="HMX_Morph_G" text="Morph">
            <actiongroup tag="HMX_Morph_Freehand_Nodes_AG" text="Morph Mesh"
                spotlighttext="True">
                <action actiontag="HMX_Morph_Freehand_Nodes"/>
            </actiongroup>
            <actiongroup tag="HMX_Morph_Shapes_AG" text="Shapes"
                tooltip="Create, Edit, and Apply Shapes"
                spotlighttext="True">
                <action actiontag="HMX_Morph_Shapes"/>
                <action actiontag="HMX_Morph_Shapes_List" assatellite="True"/>
                <action actiontag="HMX_Morph_Shapes_Record" assatellite="True"/>
            </actiongroup>
        </group>
    </page>
</root>