We are pleased to announce the release of SMTK 22.05 which includes the following improvements:

Accessing Resource Components As Raw Pointers

Dealing with shared pointers can impact performance. Under certain circumstances using raw pointers can be more efficient. SMTK Resource now provides routines to access its Components as raw pointers. You should use these methods only if the following are true:

  • You have a read or write lock on the resource (i.e., you are inside an operation) so that no other thread can remove the component
  • You are sure that the component will not be removed from the resource for the duration of your use of the pointer (in the case where a write lock is held and components may be removed).

Improvements to SMTK Attribute Resources

Previously, when creating an Attribute without specifying its name (using via an Attribute View), the system would create a name using the definition type followed by a separator and then an integer. The separator using by the Attribute Resource was “-“. In 22.05 you can now set the separator used by the Attribute Resource when creating an Attribute’s name. This can be any string.

A new method itemPath has been added to Attribute and will return the full path string to the “item” parameter within the attribute. The default separator is “/” and can be changed as needed.

Changes to SMTK’s Qt Subsystem

Saving Collapsible Group View Box State

Previously, when using collapsible Group Views, the view would by default be in a closed state and when the UI was refreshed these views would always revert to being closed. Now the open/closed state is saved within the view’s configuration so when the view is refreshed or reloaded after being saved, it will look as the user last saw it. This also allows the designer to have a view be opened by default without forcing the user to open it.

Changes to Badge Actions

We have changed how badges behave in the UI. Previously, clicking on a badge would change the current selection as well as perform the badge’s action. In 22.05, this is no longer true. If you click on the badge for an unselected item, the badge action is performed on that item but it will not cause a selection change. In addition, when you have several items selected, clicking on the badge of a selected item will now apply that badge’s action to all of the selected items. If you click on the badge of an unselected item, the action will only consider that item and not selected items.

Displaying Active Children of a Value Item

In the past, the active children of a Value Item were always displayed vertically below the Value Item as shown below.

Displaying a ValueItem with active children within a GroupItem’s Table using SMTK 22.04.

In 22.05, they are now displayed next to the item horizontally as shown below. The main reason for this change was to work around bug in Qt when displaying these items in a QtTable’s cell but it also seems to be a better option for displaying these items.

Same example now displayed using SMTK 22.05.

New qtAttributeView onDefinitionChange Signal

qtAttributeView now emits a signal when the user changes the current Definition in the view. Classes that inherit qtAttributeView can connect to this signal in order control the widget’s behavior based on the type of definition the user has selected.

Modifying a qtGroupItem’s Children

In SMTK 22.05, when the user modifies an item that is a child of a group item from the gui, the full path to that item is included in the result of the resulting Signal operation that will be run by the view.

Reorganizing SMTK’s ParaView Extensions

In order to provide greater flexibility to CMB Application developers, the sources and resources in extensions/paraview/appcomponents/plugin-core have all been moved to the appcomponents directory and into the smtkPQComponentsExt library, so they are accessible outside SMTK. We have also split the plugin into three, with plugin-core retaining the auto-start and behaviors, and plugin-gui containing all the toolbars, and panels, and plugin-readers containing the importers and readers.

SMTK VTK Changes

New Dataset Information Operation and View

We have added a new operation (smtk::geometry::DataSetInfoInspector) that will compute geometric information that can be displayed in a new Information View. Currently this information includes the number of points, and number/types of cells present in the VTK-renderable geometry but we expect this list to grow in time.

This image shows the operation toolbox at top and the new "info inspector" parameter-editor beneath. The input parameter is  tree view of selectable components followed by a table with the requested information.
The new “info inspector” operation shows point and cell counts for components you select.

Change to VTK Multi-Block Sources

You could always view SMTK geometry information using ParaView’s Information Panel; however, determining the correspondence between SMTK and VTK objects was a bit of a challenge. In 22.05, this has been made a bit easier. Now if a smtk::geometry::Geometry provider adds the name of a component to a cache entry (by setting the vtkCompositeDataSet::NAME() key the cache entry’s vtkInformation object), It will be used in the ParaView Information Panel.

Improving Arcs in SMTK Graph Session

We have been extending arc functionality to include providing or requesting an index of both the “forward” arc direction (from, to) and the “reverse” arc direction (to, from). Note that these changes did break API. In addition the Arc-based classes themselves have also changed. You can find more details here.


For more information, please see the release notes for 22.05 which can be found here.

Leave a Reply

X