The Unknown LabVIEW File Extensions

Besides the common *.vi and *.lvproj files, LabVIEW can natively handle about 20 file extensions (double-clicking this kind of file will open LabVIEW). Yes, that's an awful lot of extensions... Even though some of them are deprecated or related to toolkits (Unit Test Framework or Statechart), let's have a closer look at some core extensions that you may find attractive!

The Templates

There are two different extensions that play the role of a template: *.vit (VI Template), and *.ctt (Control Template). These guys are respective templates for the *.vi and *.ctl extensions as you can imagine. There are two different ways to open the template extensions: the first one will allow you to edit the template (double-click your template file from the project window), and the second will instantiate the template into an unsaved .vi or .ctl file (right-click the template file in the project window, and select New From Template). The templates are quite useful when you don't want to spend time copy/paste-ing or clicking Save as. For instance, create a VI Template with your company icon, and with common controls on the front panel (you said error clusters?). To create *.vit and *.ctt files, just rename the file when you save it. Alternatively, VI Templates can be created from the File>New... dialog box.

Quick drops keyboard shortcuts or class accessors use VI templates if you're looking for existing examples.

The XInterface

A barbaric word! Under this category are found the *.xctl and *.xnode extensions.

The *.xctl stands for XControl. A XControl is an advanced control. While *.ctl files can only be a graphically customized version of an existing control (e.g. a modified graph or table), a XControl is entirely defined by the developer: its behavior at edit and run time, appearance (which is usually composed of several controls), data type, properties and methods. XControls are tough to understand and develop, but they hold an incredible reuse potential when properly created. A XControl can be created from the File>New... menu. It sort of resembles LabVIEW project libraries (.lvlib), but is slightly more specific to address UI roles and goals.

The NI website hosts dozens of XControls to help you understand how they work. I'd suggest you take on the Advanced Architectures in LabVIEW training to learn everything there is to know about XControls, as the quality of the examples available on varies a lot. The Dual Thermometer example you can find in the example finder is a bit simplistic but it's a good place to start.

The *.xnode stands for XNode, and NI does not want you to know more about it. If you're like me, you certainly hate secrets as well... So, a XNode can be described as the equivalent of a XControl for the block diagram. It is a fully customizable node which you can interact with upon editing the diagram. At edit time, a subVI is just an icon that you can click to explore, and you cannot change the way it interacts with its calling VI on the diagram. A primitive is more complex: it can grow/shrink (like bundle/unbundle or most array functions), often has a dynamic local menu, etc. Think of a XNode as a user-defined primitive. The most famous XNode in LabVIEW is the timed loop: the data nodes inside and outside the loop can be expanded, it has a dialog box which settings depend on the loop environment (execution target, wired inputs...)

Unfortunately, you cannot officially develop your own XNodes unless you have a very specific license for this. Or you can search for a tool called the XNode Manager...

The menus

Nope, the *.mnu is not a native LabVIEW extension (even if it is a LabVIEW file—a palette file to be more accurate). LabVIEW menus are referred to as *.rtm (Run-Time Menu) files. A *.rtm file simply is a menu that you created and saved for your VI through the Edit>Run-Time Menu... menu. While a menu is most convenient to free up space on your front panel (removing tons of buttons), I personally am not very fond of it. The LabVIEW menus are just plain text, and this is unfortunately a big limitation (no custom control, no icon, no way to customize the font). However, there is a much better use for *.rtm files: being linked to a control. This way, you can save a menu file that you can apply to several other controls across projects. You can create, edit or assign a menu to a control using the local menu at edit time, Advanced>Run-Time Shortcut Menu>Edit...

Don't forget to give your users a way to use local menus—they are powerful, and save space on your front panel!

A (huge) part of LabVIEW file extensions can be found in the LabVIEW help if you're looking for further information. Don't hesitate to browse this precious resource! :)