Coordinate > Issues
Issue Pins
Shows every open issue that has a location as a pin in the view, labelled with its number, type and title. Each pin stands about a person tall, whatever the size of the model. The pins follow edits and come back when another model opens.
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; no selection: ran to the end: 'Issue pins are on'; result not checked by a person.
The public ask
No public source is on record for this tool.
Events it listens to
It needs these Navisworks event hooks, so installing it also copies the shared hooks folder:
doc-closeddoc-opened
Files
Paths are relative to the Playground.extension folder.
Coordinate.tab/Issues.panel/Issue_Pins.toggle/bundle.yamlCoordinate.tab/Issues.panel/Issue_Pins.toggle/icon.dark.pngCoordinate.tab/Issues.panel/Issue_Pins.toggle/icon.off.dark.pngCoordinate.tab/Issues.panel/Issue_Pins.toggle/icon.off.pngCoordinate.tab/Issues.panel/Issue_Pins.toggle/icon.on.dark.pngCoordinate.tab/Issues.panel/Issue_Pins.toggle/icon.on.pngCoordinate.tab/Issues.panel/Issue_Pins.toggle/icon.pngCoordinate.tab/Issues.panel/Issue_Pins.toggle/icon.small.dark.pngCoordinate.tab/Issues.panel/Issue_Pins.toggle/icon.small.pngCoordinate.tab/Issues.panel/Issue_Pins.toggle/script.py
Install
- Only this tool. In Navisworks, click pyNavis > Playground, search for Issue Pins, tick it and click Install.
- The whole extension. Download
Playground.extension.zip, unzip it, put thePlayground.extensionfolder in%APPDATA%\pyNavis\extensions\, and click pyNavis > Reload. Issue Pins is on the Coordinate tab, Issues 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.
ReportSource
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.
Coordinate.tab/Issues.panel/Issue_Pins.toggle/script.py View on GitHub# -*- coding: utf-8 -*-
"""Shows every open issue with a location as a pin in the view, or hides the pins.
On: pins are drawn with pynavis.overlay (one item per issue, tagged
'playground-issues:<id>'), each a real 1.2 m tall whatever the model's units; a session
flag makes hk_issuepins redraw them when another document opens, and an issue listener
redraws them after any edit made in this session. Off: every issue pin in the view is
cleared and both stop.
Pins that are on, by the button or by the session flag, decide what a click does, so a
click on Hide Pins always hides: the two can never disagree for longer than one click.
"""
from pynavis import overlay, script, toast
from namo import issueapi, issuestore
def _overlay_redraw():
"""Redraws the overlay through namo.overlayfix, so labels land on their points."""
from namo import overlayfix
return overlayfix.redraw()
def run():
if script.get_toggle_state() or issueapi.pins_on():
issueapi.unwatch_pins()
issueapi.set_pins_on(False)
issueapi.clear_pins()
script.set_toggle_state(False)
toast.info('Issue pins hidden')
return
doc = issuestore.active_doc()
if doc is None or not issueapi.has_model(doc):
script.set_toggle_state(False)
toast.info('No model open', 'Open the model the issues belong to, then show the pins.')
return
store = issuestore.for_doc(doc)
rows = store.list()
if rows:
count = issueapi.draw_pins(rows, doc)
else:
count = 0
issueapi.clear_pins()
if not _overlay_redraw():
# Nothing can be drawn, so the button stays off rather than claim pins are showing.
script.set_toggle_state(False)
toast.error('Could not show the issue pins',
'The pyNavis view overlay is not loaded. Restart Navisworks, then try again.')
return
issueapi.set_pins_on(True)
issueapi.watch_pins()
script.set_toggle_state(True)
if count:
toast.success('%s issue pin%s shown' % ('{:,}'.format(count), '' if count == 1 else 's'),
'Open and in progress issues with a location.')
elif not store.saved:
toast.info('Issue pins are on', 'Save the model, then raise issues: their pins appear here.')
elif not rows:
toast.info('Issue pins are on', 'No issues yet. Raise one with Issue Stamps and its pin '
'appears here.')
else:
toast.info('Issue pins are on', 'No open issue has a location yet. Use Set pin in the '
'Issues panel, or Issue Stamps.')
run()
Library modules this tool uses
From the shared namo library, which installs with every tool. Each name opens the module on GitHub.
namo.issueapiThe Navisworks half of the issue tools: capture a view as issue material, go back to it, draw issue pins, pick stamp points, and find BCF components in the model.namo.issuestoreWhere Playground issues live: one record per issue, per model file, in the data mode namo.config chooses, plus the session events every issue view listens to.namo.overlayfixKeeps pynavis.overlay labels on their points, whichever way up the view counts pixels.
bundle.yaml
The bundle contract: the keys pyNavis reads for this tool.
Coordinate.tab/Issues.panel/Issue_Pins.toggle/bundle.yaml View on GitHubtitle: Issue\nPins
title_on: Hide\nPins
tooltip: Shows every open issue that has a location as a pin in the view, labelled with its number, type and title. Each pin stands about a person tall, whatever the size of the model. The pins follow edits and come back when another model opens.
tooltip_on: Takes the issue pins out of the view.
context: doc