LabVIEW Idea Exchange

Community Browser
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!
Showing results for 
Search instead for 
Did you mean: 
Post an idea

Compound arithmetic allows you to invert inputs or outputs. I find myself often checking for a string or path to NOT be empty. It would be nice to be able to invert the output the "Empty String/Path?" function instead of needing to wire up the additional "Not" function. It would look kind of like this:

Empty String Path NOT.png


String functions accept array input.





  1. Avoid placing For loop or Subvi with for loop
  2. Looping performance can be improved with better logic inside the function.
  3. Block diagram space saving without for loops


Thank you


CLA from 2014

For all the years programming LabVIEW this is something that has always bothered me. My development system has a monitor much higher resolution than the monitors on our ATE stations and it is very easy to end up with a panel that is too big for the target machines. 


While I can set a MINIMUM panel size it would be nice to set a MAXIMUM panel size or be able to turn off the "Auto grow" on front panels. 


Also related to this being able to turn off scrolling and "Auto Scroll" on front panels in the IDE.


Once I get a front panel set, I want to be able to "lock it" and have it NOT MOVE up, down, left, right or grow for any reason.

There are several great ideas on this Idea Exchange that were marked as Completed because they were implemented in NXG.

Although arguments could probably have previously been made that this wasn't really "complete" for most requestors, it was reasonable given the idea that NXG would replace LabVIEW 202x.


Given the updated fate of NXG, can these posts all be reevaluated and marked as either New or In Development, as appropriate?

If the evaluation is too effort-intensive, can they all be marked as New again?

Many common functions include a "found" or "exists" output. Examples include:

  • Get Variant Attribute
  • Element of Set?
  • Config file VIs (Read Key, Write Key, Get Key Names, etc)
  • Chek if File or Folder Exists


Why then does Look In Map provide an inverted ("not found") output? Wouldn't it be better if it was consistent with other similar functions??


This is most frustrating when replacing existing code using variant attribute lookups with equivalent maps. "Look In Map" is pin compatible with "Get Variant Attribute" except for that one inverted output! This has caught me out on more than one occasion...

When writing a string key to a configuration file with the Config file "Write" on the File I/O palette, the value will always have quotes around it because of the "Add" in that particular method as you can see in this image.




Not all external programs handle ini files with quotes around strings as well, and this question was already asked and answered in 2010, but for some reason NI never added this VI or the option to remove the quotes to the actual palette.


I would like to have the option to have my string keys with and without quotes.

While writing/debugging applications that make heavy use of reentrancy it is not uncommon for a reentrant VI to be left open after the rest of the application has shut down.  This leaves VIs, Classes, LVLIBs locked in the project and your only recourse is to hunt down the offending reentrant item or close the project and reopen it. 



It would be valuable to be able to see the running clones in the list of reentrant items found by navigating to View>>Browse Relationships>>Reentrant Items, maybe denoted by a *, like this below:


Having that would easily allow me to open the running clones and close them out manually so I can continue debugging.

Please implicitly consider array index during index / replace elements in In Place Elements Structure if I am starting from Index 0


Present method:


Expected method:
image (1).png


[admin edit 2021-02-24]: placed images in-line with text and removed them as attachments

We need a “modal when called” behavior where the VI is NOT modal when the VI is not currently running (being called). Otherwise, accidentally opening the VI during development while the main VI is running will make it so you can’t interact with any other front panels, block diagrams, or any other LabVIEW windows; and you’re stuck — you have to kill LabVIEW from task manager or cmd.exe (taskkill /f /im LabVIEW.exe)




My work-around is to add this little snippet of code that uses a Floating behavior in development and a Modal behavior in a built application (EXE).





Many times, the bulk of LabVIEW development happens on computers that will never interface with hardware. A dozen engineers may be collaborating on code that will ultimately run on a dedicated machine somewhere, that is connected. Yet, as things currently are, I have to install more than I need on my development machine to get access to API VIs. If I am working on my laptop on an application with DAQ, RF, Spectrum analyzer, etc. components, I have to choose to either download and install all of that, or deal with missing VIs and broken arrows. This seems needless, since my particular machine will never actually interface with the hardware.



I would like to have the option to install only the LabVIEW VIs and ignore the driver itself. In many, if not most cases, the LabVIEW API could be independent of driver version. It could install very quickly, since it would just be a set of essentially no-op VIs. I don't care that the VIs would do nothing. They would just be placeholders for my development purposes. This would allow me to have full API access to develop my code without having to carry around large driver installations that I will never actually use.

Sometimes, it would be useful to view string constants as icons to save space on the block diagram.


1_String Constant Right Click.png


2_String Constant Details.png


I use a lot of user events and often define the user event references in a typedef cluster before actually writing the create/generate/destroy code. It would be really helpful if the Create User Event primitive would change its input datatype based on the output (i.e back propagate the datatype), much like the Variant To Data primitive.


Back Propagation of Data Types.gif


As it is now, when we select a structure, we can delete it, but everything in it will be gone as well.


If we right click, we can select Remove <structure>, and that will remove the structure, but keep everything in the active frame.


This idea is quite simple: make Shift+Delete do a Remove <structure>:


Shift Delete To Remove Structure.PNG



As a bonus, CTRL+Delete could execute a Remove and Rewire:


CTRL Delete To Remove and Rewire.PNG

My typical workflow is:


1) Start LabVIEW

2) Realize I have to pull\update my project from SCC

3) Explore to the project manually in windows explorer. Or open project, explore, close project, update SCC, reopen.


It would be nice to have an explore option in the Getting Started Window:

Explore from Getting Started Window.png


Either a right click menu, a button for each item or a button for the selected item would be great.


Same for VIs, maybe even the templates.

I wanted to use a property node in an application today. I happened to have the Help context up and it showed "Run-Time Engine: No". But I could easily have missed that and not discovered the issue until much later, after building a lot of code and wasting time.


If the node had an obvious indication as soon as you put it on the block diagram - for example, a different color - that would help a lot and potentially save a lot of headache.

It seems that if you have a VI (or function) inside of a disabled frame of a Diagram Disable Structure or Conditional Disable Structure then the Find and Find All Instances features in LabVIEW will not report them. I'm OK if this is the default behavior, but maybe the Find dialog should have an option/checkbox to search inside of Disabled Structures.


Note: This is really important for cross-platform and embedded target development where there's lots of use of Disabled Structures.



I find the process of initializing Maps in LabVIEW to be unintuitive and inconsistent with the initialization process for other similar concepts (such as, say, arrays).  After some initial trial and error, the process I've settled into for creating maps is to drop a map constant, and then to drag and drop the appropriate data types onto it for my key and value. I first looked for an Initialize Map VI (which doesn't exist) and then tried to create the constant by wiring up appropriate types to an "Insert Into Map" and creating the constant from there -- but this doesn't work as expected because the terminals don't update appropriately.


What drove me to coming to the forum today though, was that in creating a malleable VI with a map inside of it, I found a breaking point for the "drop constant and drag values into it" approach. Since the map data types need to be dynamic to support malleable VIs, I've had to get creative to get around that...







V1.0 of TOML was recently released :

There is an MIT Licensed open source project here :


It's a nice starting point, but :

- it's not complete

- it's based of v0.4 of TOML

- it not maintained as stated here :

- it's not native

I work with large projects.  And I often need to move items around in my projects.  However...  while you're dragging an item in the Project Explorer, if the cursor is at the top or bottom of the visible area, the window does not scroll.  This means that the item you're moving, and its destination, must both be visible at the same time in order to drag and drop it.


I regularly have to un-expand items in order to be able to simply move a file.  This is time consuming and forces me to un-expand tree items that I would prefer to keep expanded.

If I have a Control labelled '%s In', I would like to be able to right click on it and select Create Indicator, resulting in a terminal label of '%s Out'. Likewise, if I have an Indicator labelled '% Out', I would like to select Create Control and automatically label it '%s In'.




Simple enough, but one of those tiny little tweaks that would save me a tiny fraction of effort every time I do it 🙂