Model > Select

Save as Set

Saves the current selection as a selection set named from a template such as Ducts - 412 items - 2026-10-05, in the Playground folder. Shift+Click for settings.

Tab and panelModel > Select
KindButton
Live whenSomething is selected

Status

Launched Ran inside Navisworks at least once with no error logged; nobody checked the result yet.

Ran headless under pynavis run against a sample model; 17 parts selected: ran to the end: 'Saved set 'Object Material - 17 items - 2026-10-09''; result not checked by a person.

Recorded on 2026-10-09. The evidence is a pynavis run transcript.

The public ask

No public source is on record for this tool.

Installs with

Save as Set sits in a stack, so installing it also installs:

Events it listens to

None. It runs only when you click it.

Files

Paths are relative to the Playground.extension folder.

  • Model.tab/Select.panel/Quick.stack/Save_as_Set.pushbutton/bundle.yaml
  • Model.tab/Select.panel/Quick.stack/Save_as_Set.pushbutton/config.py
  • Model.tab/Select.panel/Quick.stack/Save_as_Set.pushbutton/icon.dark.png
  • Model.tab/Select.panel/Quick.stack/Save_as_Set.pushbutton/icon.png
  • Model.tab/Select.panel/Quick.stack/Save_as_Set.pushbutton/icon.small.dark.png
  • Model.tab/Select.panel/Quick.stack/Save_as_Set.pushbutton/icon.small.png
  • Model.tab/Select.panel/Quick.stack/Save_as_Set.pushbutton/script.py

Install

  1. Only this tool. In Navisworks, click pyNavis > Playground, search for Save as Set, tick it and click Install.
  2. The whole extension. Download Playground.extension.zip, unzip it, put the Playground.extension folder in %APPDATA%\pyNavis\extensions\, and click pyNavis > Reload. Save as Set is on the Model tab, Select panel.

You need pyNavis 1.3.0 or later.

Tried it? Tell us whether it worked or not. That report is what moves a tool up the status ladder.

Report

Source

The tool's own files, word for word as published in pynavis/Playground. Paths are relative to the Playground.extension folder.

script.py

The script that runs on a click.

Model.tab/Select.panel/Quick.stack/Save_as_Set.pushbutton/script.py View on GitHub
# -*- coding: utf-8 -*-
"""Saves the current selection as a selection set named from a template, in one click."""
from pynavis import script, toast

from namo import find_sets, items, naming, selecttools

cfg = script.get_config(selecttools.SAVE_DEFAULTS)
selected = items.selected()

if not selected:
    toast.info('Nothing selected', 'Select the items to save first.')
else:
    sample = selected[:200]
    values = selecttools.name_values([items.category(i) for i in sample],
                                     [items.model_name(i) for i in sample], len(selected),
                                     naming.standard_values())
    name, missing = selecttools.set_name(cfg['template'], values)
    folder = (cfg['folder'] or '').strip() or None
    _item, final = find_sets.create_set(name, selected, folder)
    where = 'In folder %s' % folder if folder else 'At the top of the Sets window'
    detail = '%s; %s items.' % (where, '{:,}'.format(len(selected)))
    if missing:
        toast.warning("Saved set '%s'" % final, '%s Unknown tokens kept as written: %s.' % (
            detail, ', '.join('{%s}' % m for m in missing)))
    else:
        toast.success("Saved set '%s'" % final, detail)

config.py

The Shift+Click action.

Model.tab/Select.panel/Quick.stack/Save_as_Set.pushbutton/config.py View on GitHub
# -*- coding: utf-8 -*-
"""Options for Save as Set: the name template and the folder the sets go in."""
from pynavis import script, toast

from namo import selecttools, ui

cfg = script.get_config(selecttools.SAVE_DEFAULTS)
values = ui.form('Save as Set', [
    {'kind': 'text', 'key': 'template', 'label': 'Set name', 'default': cfg['template'],
     'required': True,
     'hint': 'Tokens: {category} (most common), {count}, {date}, {time}, {user}, {file}, {model}. '
             'Dates take a format: {date:%d %b %Y}.'},
    {'kind': 'text', 'key': 'folder', 'label': 'Folder', 'default': cfg['folder'],
     'hint': 'Created when missing; use / for subfolders. Leave blank for the top level.'},
], ok='Save', width=520)
if values is not None:
    cfg['template'] = values['template'].strip() or selecttools.SAVE_DEFAULTS['template']
    cfg['folder'] = values['folder'].strip()
    script.save_config(cfg)
    toast.success('Saved', 'Sets will be named %s.' % cfg['template'])

Library modules this tool uses

From the shared namo library, which installs with every tool. Each name opens the module on GitHub.

  • namo.find_setsThe saved-sets tree, shared by the Find tools: paths, lookups and creating sets.
  • namo.itemsModel items: walking, collecting, identifying, measuring and showing them.
  • namo.namingName templates: '{test} - {n:000}', '{date:%Y%m%d} {project}', '{{literal braces}}'.
  • namo.selecttoolsSelect panel logic: Select Similar, Filter Selection, Invert, Select by File, Save as Set.
  • namo.uiWPF building blocks for Playground tools, themed from the pyNavis design system.

bundle.yaml

The bundle contract: the keys pyNavis reads for this tool.

Model.tab/Select.panel/Quick.stack/Save_as_Set.pushbutton/bundle.yaml View on GitHub
title: Save as Set
tooltip: Saves the current selection as a selection set named from a template such as Ducts - 412 items - 2026-10-05, in the Playground folder. Shift+Click for settings.
context: selection