Home > Community > Discussion Forums

LabVIEW Idea Exchange

Showing results for 
Search instead for 
Do you mean 
We've turned on a search before post feature in the LabVIEW Idea Exchange. This new feature will help cut down on the number of duplicate ideas in this space!

The NI Idea Exchange is a product feedback forum where NI R&D and users work together to submit ideas, collaborate on their development, and vote for the ones they like best. View all of the NI Idea Exchanges to post an idea or add your opinion on an existing one today!
New Idea

When the abort button is pressed, and the development environment is present, the block diagram should be shown and the portion of code that was currently executing should be hilited.



Improvements for the "Save Changes?" dialog

Status: New
by Trusted Enthusiast on ‎04-28-2016 06:53 AM

I've been wondering for years now why the LV Save (& Save All) dialog is quite unusual in terms of its layout & usability.


Redesign the "Save Changes?" dialogin accordance with the standard dialog design criteria as follows.


  • Resize the dialog to be somewhat bigger than now.
  • Place the Apply same action checkbox & the Affected items list at the top half of the dialog. Remove these items from the tabbing list, so the user can easily tab among the other 3 buttons, with Save highlighted by default.
  • The Affected items list is not sorted properly, but in the Explain Changes dialog, it seems the VI List is alphabatically sorted. So when you select a VI in  the Affected Items list & click the "List unsaved changes..." hyperlink-like text, the selections are confusing to the user. PFB snapshot.

Save Changes Dialog.jpg


  • Additionally, the selection in the Affected Items list is not actually a selection, but looks like only a marquee. It gives a false impression that the selected item can be edited. Fix this.
  • Make the Affected Items list to be vertically scrollable, instead of the current horizontally scrollable style, which is highly cumbersome.
  • Change the "List unsaved changes..." hyperlink-like text into a button that is prominently visible. New users think that this would open a web browser.
  • Place the Save (All), Defer Decision / Don't Save (All) & Cancel buttons at the bottm right of the dialog in a horizontal fashion.
  • Add the Help button, like in many other dialogs in LV.
  • Keep the name of the dialog to be consistent - "Save changes before closing?", instead of like "Save changes? (Close Project)" - The Close Project text is misleading.


The title says it!


It is often confusing "Which is the opposite end in a queue?/What does opposite end mean?", esp for new user of LabVIEW. Smiley Frustrated


Seems here, even the author of the LV Queue primitives was not able to recollect its name correctly. Smiley Wink


Also, please see below from the LV Help. Smiley Happy



Enqueue Element At Opposite End.jpg

Clear indication of handled User Events

Status: New
by Trusted Enthusiast Trusted Enthusiast on ‎04-21-2016 10:46 AM

When working with User Events as an API between modules there is a nasty little thing which unfortunately keeps rearing its ugly head.


If we retrieve a cluster of User Events (or an Event registration refnum) from a module with events we should be listening to and wire this to an event structure we get a memory leak if not all events are handled.  This particularly occurs whenever the API is extended and not all listeners have been updated.


2016-04-21 17_40_14-Edit Events.png


It would be much easier to track down these kinds of problems if the Event Structure would display which User Events are in the associated Registration Refnum but are NOT yet handled.  This would be a great too in tracking down rogue Events and eliminating possible memory leaks due to implementation errors.


Currently one has to iterate through ALL of the user events and observe the warning "this event is handled in another case" in order to find out if all have been handled or not.

When developing new VIs f the procedure is usually the following:


1. right-click class or desired location, new VI (static or dynamic dispatch template etc.)

2. Implement functionallity

3. Edit VI icon for easier recognition

4. Save VI


The problem here is that usually the icon allready contains the ideal name for the VI which means I am typing the name of the VI twice, once when editing the the icon and once when saving.


Would it not reduce the development-time by suggesting the name entered in the VI icon editing procedure as the user attempts to save the VI?


I'm currently expanding a large SA with 270 classes and on good days I implement 20-30 VIs and would find it nice if I were not forced to type the name twice.


Interested what experienced LV-users think of this suggestion!?

Status: In Development

The Open/Create/Replace file I/O primitive is pretty powerful.  It will check to see if the file is there for you, and, if not, create a new one.  I use the "Open or Create" option often when generating multiple delimited text files in long term tests.  When a new file is created, I need know so I can add a header, and I need to skip the header operation if the file is being appended.  Sure, I could check to see if the file exists before trying to open it, but then wouldn't that just make the power of the Open/Replace/Create function redundant?  Some operation took place based on my input to the "operation" terminal, and whether or not the file exists.  Unfortunately, I have no idea what that operation was, because the function doesn't tell me. Let me know if the Open/Create/Replace function created a new file so I can add my header.  


New File Feature.png


This is not without precedent.  For example, the "Obtain Queue" primitive has an option to create a new queue if a queue of the given name is not found.  It let's you know if the new queue was created:


created new.png

Right now the only way possible to set the tabbing order of controls on the front panel of a (sub)VI is to use Edit >> Set Tabbing Order.


I would like a VI Server property/method to be able to programmatically set the tabbing order of the controls on the front panel the way I want.  This way I can write a script to fix a large number of VIs without needing to manually click through each one.  (Of course I would be responsible for programmatically figuring out the order I wanted, but I could make some general assumptions like following the top-bottom left-right on the front panel existing layout, or following how they are connected to the connector pane, etc)


the input value of the conditional terminal should  " pass through "


                  (like the "case selector" of the "Case Structure")





                                                         like this,



Multiple Line Pattern in the Browse Options

Status: New
by Trusted Enthusiast on ‎04-11-2016 08:35 PM

As requested by this fellow 8 years ago: http://forums.ni.com/t5/LabVIEW/Multiple-pattern-lines-in-path-s-Browse-Option/m-p/776968/highlight/..., it would simplify some GUI if the user could select from a drop-down list, which files to look for in a File Dialog pop-up window.

Currently, we get a single line:

Screen Shot 2016-04-11 at 18.33.05.png

This results in this kind of mess courtesy of the IMAQ Load Image Dialog.vi):


Screen Shot 2016-04-11 at 18.35.29.png


To update the snapshot illustrating this other thread, here is an example of MS Word in action, illustrating the desired behavior:


Screen Shot 2016-04-11 at 18.27.21.png


In other words, it helps cleaning up the results, while using a single dialog window for all kinds of different files (which will be dealt with differently down the line).

I am not sure how multiplatform that can be, but here is the file open dialog options from TextWrangler on MacOS:


Screen Shot 2016-04-11 at 18.30.21.png


so it seems that can be done.

The thread I am referring to had a link to a Windows API call, but the link is dead (probably the result of the recent disastrous site cleanup). And of course is not multiplatform.

wire cleanup by double-click

Status: New
by Member Andi_S on ‎04-02-2016 12:43 AM


Double-click to a wire + holding <ctrl> or <alt> will call the wire-cleanup tool for this particular line => much faster than via context menu


Kill Resetting VI-process

Status: New
by Member Rickard on ‎04-08-2016 07:01 AM



Am I the only one that get forever waits when this dialog shows up? LabVIEW hangs "eternally" in this dialog and only way to keep working is to kill LabVIEW hard.


I need a button that skips the resetting so that I can go back to my code without having to restart LabVIEW!

"Build Path" should be growable

Status: New
by Trusted Enthusiast Trusted Enthusiast on ‎01-30-2016 05:36 AM


                                            "Build Path" should be Growable


                              something like this,




Allow "Find" to target specific values

Status: New
by Trusted Enthusiast Trusted Enthusiast on ‎04-20-2016 05:54 AM

When doing code refactoring (or other improvements) we often run into the situation where we may want to replace constants for whatever reason.


Example: If we previously have only had support for 8 devices which (for reasons I won't try to defend here) ends up being hard-wired into the software and we now want to change the code to replace these constants with a Sub-VI we have a very hard job finding all of the instances of "8".  I can search for a numeric constant but this produces so much noise it's useless.  It it were possible to narrow down the search to the value "8" for a numeric constant thent he search would be much easier.


Same goes for paths, enums, error clusters and so on.

Library is locked - more information, please!!!

Status: New
by Member Rickard on ‎04-01-2016 01:58 AM



I often get this dialog when a class is locked because a VI is still in use by some running process. It might be a reentrant process that for some reason didn't shut down as expected, but in a system with 3000 VIs and lots of asynchronous processes it can be very hard to guess what code is still running. And this dialog doesn't give much information. It would be great if this dialog could show exactly which VI (with full information of what reentrant copy of the VI it is) is still using the class/VI. Even better if you could click on the filename in the dialog to open the VI.

Create a Picture Ring Constant

Status: New
by Trusted Enthusiast Trusted Enthusiast on ‎03-30-2016 04:27 PM

I feel like in a few cases, my code could be more readable, if a picture ring constant existed.  By that I mean if I could have a block diagram object, that showed an image, and clicking it would allow me to select one of the other images in the ring, which correspond to a numeric value, just like the picture ring control does.


I've come into a few cases were I want to know if my picture ring on the front panel is equal to some case.  So I will use the equal primitive and compare my picture ring control value to a constant.  Problem is my constant is just a numeric, because that is what the data type of the picture ring is.  I then usually need to put down a comment explaining what the value of 2 or 3 is supposed to be.  I feel like a better solution for readability would be to have an equal function, and wired to it, is another instance of that picture ring type def, where you can see the image that the value is being compared to.


Now sure this doesn't come up often, and in most cases it is recommended you convert that ring into an enum, and then you get a bunch more benefits, but in a few cases I feel like adding a picture ring constant would only make the code more readable.


Picture Ring Constant.png

Show list of files that need to be saved

Status: New
by Member Rickard on ‎04-01-2016 01:34 AM



I often run into this dialog, asking if I want to continue with prompts or continue without prompts when saving all. Sometimes I want to continue with prompts because I don't want to check out (Subversion) and save all of the changed files, just some of them. (I might have files with some debug changes, for example, that I don't want to save.) But it would be great if this dialog also showed a list of all VIs that need to be saved, so I know if it's only 2 more that will get a prompt, or if it's 35. Two more are okay to do a manual check out for, 35 not. Then I probably will check out a whole class or folder of classes. So please take away the guesswork of how much there is to save!

So, due to massive lag in the project environment, borked graphics drivers on the virtual machine and the resulting random rearrengement of objects on the front panels, i've Locked all objects.

Now, trying to delete a control from the block diagram nothing happens, which is technically correct. No information or warning, however, is borderline Bug in my book. I'd expect a popup "Object is locked", not just a silent denial.


LV2014SP1f3 (which for some reason is instead of 14.1.3.x, but that is another discussion)



Debug mode - Radix

Status: New
by Trusted Enthusiast Trusted Enthusiast on ‎03-05-2016 04:00 AM


         in "debug mode" (retain wire values), be able to choose the "radix"


                something like this:




           yes, I know the custom probes, but I'm not talking about that. .
It would be nice and useful to have this in the native behavior of LabVIEW
                                        sorry for my poor english, i do my best

It would be quite helpful if LabVIEW would automatically grow down a function when bringing a new wire to build array/string concatenate/build cluster/interleave arrays/build matrix/compound arithmetic, allowing the programmer to make a new connection to the function if the function currently does not have room for the connection.  


Even better is if it would grow/insert where the wire is near the function, below an existing connection, similar to 'ADD INPUT'.


High Low Terminal for In Range and Coerce

Status: New
by Knight of NI Knight of NI on ‎03-02-2016 01:37 PM

The In Range and Coerce function is frequently used to determine whether a value is within range of an upper limit and lower limit values.


But when it is out of range, you often also want to know whether the value is out of range too high, or out of range too low.  It is easy enough to add a comparison function alongside and compare the original value to the upper limit.  It's another primitive and 2 more wire branches.  But since comparison is one of the primary purposes of the In Range and Coerce function, why shouldn't it be built into it?


The use case that made me think of this that as come up in my code a few times over the years is with any kind of thermostat type of control, particularly one that would have hysteresis built into it.  If a temperature is within range (True), then you would often do nothing.  If it is lower than the lower limit, you'd want to turn on a heater.  If it is higher than the upper limit, than you'd turn off the heater.  (Or the opposite if you are dealing with a chiller.)


Request Add an additional output to In Range and Coerce that tells whether the out of range condition is higher than the upper limit, or lower than the lower limit.


(That does leave the question as to what should the value of this extra output be when the input value is within range.  Perhaps, the output should not be a boolean, but  a numeric value of 1, 0, and -1, perhaps an enum.)

About LabVIEW Idea Exchange

Have a LabVIEW Idea?

  1. Browse by label or search in the LabVIEW Idea Exchange to see if your idea has previously been submitted. If your idea exists be sure to vote for the idea by giving it kudos to indicate your approval!
  2. If your idea has not been submitted click Post New Idea to submit a product idea to the LabVIEW Idea Exchange. Be sure to submit a separate post for each idea.
  3. Watch as the community gives your idea kudos and adds their input.
  4. As NI R&D considers the idea, they will change the idea status.
  5. Give kudos to other ideas that you would like to see in a future version of LabVIEW!
Idea Statuses
Top Kudoed Authors