NI Home > Community > NI 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

Classes suffer from the following:

  1. Classes are identified by their name.

    1. Renaming a class results in a loss of identity history. The version history is reset

  2. The name consists of the file name and all the libraries the class is nested in.

    1. Moving a class into or out of a library counts as a rename of the class.


So what is the issue with this? Any method you use to save the class data to a file (datalog, xml, flattened string...) will contain the class name (including library position) and the version. If you move/rename the class this data will change and your externally saved class data will be unreadable.


Also using classes in packed libraries will result in the classes being renamed (lvlib-->lvlibp), but the classes will retain their version history. Still, the rename makes saved data unreadable.


I propose that we introduce a static class ID that persists through all the above operations. I'm thinking something like a Class GUID. This GUID would be created together with the class and would be read only. It would be good if Get LV Class would return the Class GUID and if you introduced a Get LV Class Default Value By Class (Class must be in memory). All the operations that saves/flattens etc. and currently uses version and name should then use version, name and GUID. On load/unflatten the name would not be used at all, only the GUID and the version.

If this was implemented:

  • The version would never be required to be reset. As long as the GUID persists the version can remain.

  • Saved class data would not become corrupt upon trivial operations in the project. As it currently is you cannot move a class out of a library and restore it to the same position/name without corrupting your saved class data (unless the class version is already).

  • You would get fewer complaints regarding the OOP implementation.


So there are some problems with doing this. I'll list possible solutions along with the problems:

  1. What should be done on a rename or library relocation:

    1. Version should be incremented retaining the old name. GUID stays the same.

  2. What should be done on a “Save as” - “Copy”:

    1. New GUID created for the copy. Save as will prompt you to retain version history or reset the version to (if you can find find a way to do this), or just reset the version.

  3. What should be done when a class is copied in internet explorer and loaded?

    1. This is currently very very bad for labview, and thus never done.

    2. But now we can detect that we have multiple GUIDs and a pop up should be displayed with a list of all duplicates. There should be three choices for each group of duplicates:

      1. Retain GUID, only one can select this

      2. Get new GUID and prompt for class rename – version history handles as in 2.1

      3. Don't load the class and discard the operation adding it to the project.

  4. What should be done when both a class from a packed library and the library that was packed are trying to be loaded at the same time:

    1. They have the same GUID, prompt the user to choose which to load, only one can be loaded at any time.

  5. What should be done with the version numbers when packing a class in a packed library:

    1. Original has version incremented twice, all version have the same data. Example:

      1. Original class version =

      2. Packed class =

      3. After Packing original is =


The major issue with this is probably that it'll increase the overhead on all classes, right? So it doesn't have to be a GUID, but some form of uniqueness should be attributed to the class because the system is extremely inflexible in the current implementation.


Please don't propose that I implement methods on all classes that saves the private data piece by piece as a work around. If that was the intention that NI had with classes then wiring a class to a flatten/save etc. node should result in a broken wire.


I might have been overly thorough with my explanation but this is a big issue for me due to CAR543330 where the work around is reducing the size of my libraries, which is really really hard when they contain classes that are also saved to a large number of external files.


Best regards Henrik

MathScript for R or Python

Status: New
by Member EngrStudent on ‎08-25-2015 08:30 AM

The MathScript wrapper for MatLab is great.  Well, compared to MatLab it is horrible, but it is fully built.  There are two language groups that are open source (bsd, mit, etc...) and have very large user-bases who would love to interact with "Real world" objects: "R" and "Python".


There are even fair interfaces to C in the form of Cython and Rcpp, or Java in the form of Jython and Rjava, that do a fair bit of the leg-work for wrapping into a compileable paradigm.


Microsoft and their big data engagement came to the conclusion that buying Revolution Analytics (R) and allowing SQL server 2016 to natively run R internally was an excellent business idea.  R is built and maintained by stats majors - it is deeper and broader (technically speaking) than any other language on the planet.  A wrapper for R is a wrapper for the highest analytic sophistication scripting language around.  


0 Kudos

A number of years ago I worked as a drafter.  The software that we used at the time had several features that LabVIEW might find advantageous to consider.  It is also worth mentioning that some of these ideas are multiple decades old so while a copyright may exist for a particular design style, the patents (if they existed) are no longer in force.  That means that you can copy the general function as NI, and copyright the design. 


These include:

  • "Fence" selection - when a left-to-right selection box is made, only objects inside it are selected, but when a right-to-left selection is used, anything crossing the "fence" of the selection box is selected.  This allows single-move selection instead of control-click each, or other ergonomic (and speed reducing) methods.
  •  "Control-click menus".  Hold control and right-click and a new set of quick menus happen.  This means that instead of moving the mouse to the menu-bar you can get to the most useful items with quick actions.  Again - ergonomics and speed.  If they can be user-customized, all the better.
  • "Zoom in and out".  Multiple scales are important for visual languages.  
  • "Via's".  Yes it is from routing electrical circuits, but having a "magic manhole" that wires go into and out of to visually handle intersections in an intuitive manner is going to make things cleaner.  One of the things that naturally come with via's is layers.  The metaphor for the block diagram is a piece of paper, but what about translucency?  Layers might give an intuitive metaphor to sub-vi's that make them more accessible.

As I do more of this work, and more of the "I wish they had that" come to mind, I hope to append them to this thread.


Best regards.

0 Kudos

popsicle patterns for terminals

Status: New
by Member EngrStudent on ‎08-24-2015 12:46 PM

I would like to make sub-vi's that look like the following:


Resistor arrays can come in multiple forms, and each form has a purpose.

4600X SERIES 8-SIP_tmb.JPG <---- Resistor Array SIPP


SOMC 16-SOIC_tmb.jpg <---- Resistor Array SOIC


There is a time and a place for each.


The VI "desktop" is at a premium for larger or more complex systems.  Being able to reduce the "ink" to what is absolutely necessary can have good value.  I wish that the icons could be made to be "text plus pins" without requiring artwork.  



I am moving from MatLab/R to LabVIEW and the "documentation of blocks" is a challenge.  I have resorted to single panes of flat sequences to group and retain relationships that define an element of function.  


My goal there is entirely to partially resist the confusing effect of "clean up" on these elements of function.  I can then justify and more completely describe using labels for the components and the "documentation" for the sequence chunk.  



If you look at the above diagram, the wires overlap the label text.  Can you make an option that allows the label text to not be obscured?



Implement Symlog scales

Status: New
by Trusted Enthusiast on ‎08-22-2015 02:58 PM

Graphs allow displaying data in linear or log scale.

This doesn't go without glitches, so my first suggestion would be fix all the annoying bugs which exist.

But a common way to get motivated to fix a bug being to implement a few feature, here is a unique opportunity:


Implement symmetric log scales (aka symlog scale) on all Graphs


What is a symlog scale, you will ask?

It is a log scale accepting negative arguments.


If x > 0, then Log(x) is computed (and labeled "x", hence the log scale apparence).

if x < 0, -Log(-x) is computer and labeled "x"


To get a visual representation of what this all mean, Google "symlog scale" and you will most likely end up on this page from which I am linking this figure:



Of course this should work on both axes (or all 3 axes for a 3D Graph).


The benefit is that when a curve has negative values, using a log scale to represent the plot results in a clipped plot. All negative values are gone, leaving gaps in the plot. The only way to visualize them is to revert to a linear scale, which now clumps all small positive values to pretty much the same location on the axis.

Edit / Find and Replace (coercion dots)

Status: Duplicate
by Trusted Enthusiast on ‎08-22-2015 01:53 PM



                                                     Be able to find the " coercion dots "




Fix Size of Global Variables on Block Diagram

Status: New
by Member Mercuri on ‎08-21-2015 04:29 PM

This isn't a major issue, but it hurts my LabVIEW OCD. Global variables are one pixel too tall and it gets annoying when unbundling a cluster of values into globals.


Globoal Vars.png


Resize Rearrange Cases window

Status: New
by Member pawhan11 on ‎08-20-2015 10:41 AM



Could You allow to resize Rearrange Cases window? 




By default it fits only 8 cases and it is hard to move and work with it when we have to rearrange 30 or more...

Other idea is to select many cases by holding Shift

Event Structure: Configurable timeout terminal

Status: New
by Member MGiacomet on ‎08-20-2015 08:18 AM

Tired of resizing an event structure and having to relocate the timeout constant?... Simply double-click on the hourglass and type the timeout value!


Of course, the option of wiring to the event structure timeout input should still exist. Just like the timed loop, where you can double click and set the period, etc.




LabVIEW Help is painful to use for 21st century users.

When you click on a link in a Help page, you are sent to that page, and so on and so forth,

This means that when you are done with reading the many tidbits you did not know or forgot about, you have to use the Back arrow as many times as you have progressed in your branching search:


Screen Shot 2015-08-19 at 12.27.03.png


That's so 2000 (at best)!

This problem of having a single window/tab is of course not limited to the Help application (see the countless requests for improvements of the Search and other windows) but the Help files are fundamentally HTML files, so you would expect that the amount of work for the custom browser that the Help application is using would be negligible.


My suggestion: Offer an option to "Open in New Tab" and "Open in New Window" right-click options for links in Help pages.

                         Or purely and simply drop the Help application and use the default browser instead.

I recently starting putting String Indicators in some of my programs that identified the Routine, along with its Version Number.  I have also created Dialog Boxes with one-line Messages, usually in large size, often Bold, sometimes colored and with a colored background.  I wanted to have the String indicator displaying these one-line messages "fit the text" (if the indicator was too short, the message would be truncated, and if too long, it "looked unprofessional" and wasted space).  I found code on the Forum that was awkward and didn't scale with fonts -- I found a work-around, got in touch with NI to inquire about filing a CAR to fix the specific flaw in their Get Text Rect function that I discovered, but was told they were not interested ("You just need to add a constant").


After more investigation, I found an even better solution to this problem, which I have posted to the LabVIEW Community here.  While this seems to work, I would like to propose that NI provide a simple Method or Property that could be used to scale the horizontal size of the contents of both the String and Path controls to just fit the content to be displayed in these controls.  This Method or Property should work regardless of the other properties, such as Font Size or Font Attribute (Bold, Italic, etc.).  It should also work regardless of the "family" of the control (Silver, Modern, Classic, or System).   I do note that System Strings might be a problem, but I could get my code to work with the System 2.0 String indicators available on the LabVIEW Tools Network.


The figures show a Front Panel with "too small" indicators truncating the display of their (variable, and run-time-dependent) content, plus the same Front Panel after I run my "Size-to-Text" code on the indicators.  I'm suggesting that NI provide a Method/Property to do the "dirty work" for me.


Notice truncation of Text and Paths


After programmatic adjustment of Indicators to "fit" their content.


Bob Schor

0 Kudos

Move between elements in array

Status: Duplicate
by Active Participant RTSLVU on ‎08-18-2015 10:03 AM

When filling values into an Array constant you hae to select each element individually and enter the value.


It would be nice to hit Enter and have it move to the next element or Arrow keys to move between Array elements when the Array is highlighted.

Case Structure cases preview

Status: New
by Member thilprakash on ‎08-18-2015 05:22 AM

Instead Moving to cases instead selecting one by one every time,  whenever we highlight the cases it has to show the cases.  It will reduce the

programming or debugging time.



0 Kudos

Return Z transformation Delay feedback data

Status: New
by Trusted Enthusiast on ‎08-14-2015 08:39 AM

This is from a colleague of mine when discussing simple circular buffers.


Allow the data stored in a Feedback Z-Transformation to be returned as an optional output.  This simple change allows for generic circular buffers of any type.  The output would be an array of Z size of the feedback's data type.  This allows for very simple circular buffering of any data type with no real implementation. If you combine itis with theenable terminal you cna make it a read access only (IE on some loops I want to just access the data history without adding an element).  







0 Kudos

Display Case Structure cases as tabs

Status: New
by Member Ladejarlen on ‎08-14-2015 05:26 AM

I wish there was a option to display Case Structure cases as tabs in LabVIEW.

Something like this; 


Case Structure tab display


Project path visible in the Title Bar

Status: New
by Trusted Enthusiast Trusted Enthusiast on ‎08-13-2015 09:32 AM

We have a software product where we have started working with branches and sometimes have a few different versions of the repository checked out for code implementation / testing / exploration.


It happens that I have two (or even more) versions of projects with the same name open at a time from different paths.  Currently I switch to files view and back to check which version I am currently looking at and I just thought it would nbe nice to see the path of the project file int he title bar of the project window.


I know I can the project, I know there are other ways to get this information but can't we have a simple indication as to the path at least SOMEWHERE in the project window?

0 Kudos

Current OPC UA monitor function - Add Monitored - will only trigger a monitor on value change.

It would be very useful to have the possibility of monitors for timestamp changes. E.g. if the same value was writtent twice I would still like to detect this.


This is also how shared variable monitoring works.



In the Configure Timed Loop Dialog Box documentation we are told that:


Period—Specifies the amount of time that elapses between two subsequent iterations of the Timed Loop. The unit of the period changes depending on the timing source you select in Source Type.


But nowhere are we explicitly told what the unit of Period is. This ought to be made explicit for each of the possible Loop Timing Source Types. I'm guessing that if I select 1 kHz Clock the unit of Period is 1 millisecond. But I shouldn't have to guess!


[note: this is a cross post from the NI Discussion Forums]

Highlight a block of text (Ctrl+Shift+Arrow)

Status: Declined
by Member okubik on ‎08-11-2015 02:55 AM

Hi guys,

I'm still missing block highlighting of the text in LabVIEW. Wouldn't it be awesome to be able to select text by blocks not letter by letter as it works now for free labels, object labels (including sub diagram labels) and captions, text in all LV dialogs and string inputs?


Common key combo is CTRL+SHIFT with any of the arrow keys





How it works in LV?


TextHighlight LV.png


...and in the rest of the world:


Status: Declined

Moved to CAR database: CAR 540989

Latest LabVIEW Idea Exchange Blog Posts
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!
Top Kudoed Authors
Idea Statuses