LabVIEW Idea Exchange

Community Browser
Top Authors
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

It is pretty nice that we can create custom palettes for lvclass libraries and set them as default; being able to right-click on a class wire and get an organized menu (i.e. method VIs arranged in sub-palette folders), rather than just an arbitrarily-ordered bunch of all the member VIs. 

 

However, it doesn't appear that the palettes inherit -- if I right-click on the class wire of a child of the class with the custom palette, I am presented with the child members and the parent members, with no palette customization.

 

Example

Parent Class (with custom palette)

 

parent_palette.png

Child class (which includes the parent members, but without the subfolder organization):

child_palette.png

 

Could the IDE support inheritance of the palettes, such that right-clicking on a child class wire showed me parent items in their organized default palette view?

There is a need to have the capabilities to make comment about a type def/strict type def control (in the control editor) that are only visible in the control editor.

 

Control Editor Comment.png

 

For instance you might want to point to the person editing the control that he/she should not rename that particular cluster element or this will brake the code (and you may want to use an arrow pointing to the element along with some text).

 

Currently, if you do that the comment become part of the control and is visible for every front panel instance. This bring absolutely nothing to be able to see that type of comment on the FP and it should not be seen by the user of the control (because this actually make the type def so large an unwieldy).

 

Therefore, there should be a need to select a group of decorations and mark them has only visible in the control editor .

 

Note: Right now the only way to achieve something similar to what I describe, is to put the comment in the control description, but this is no great because:

 

  1. People tend to not expect control to have VI description.
  2. This does not allow to use arrow and such to directly point  to a specific part of a control.

 

PJM

The ctrl+drag and ctrl+alt+drag shortcuts for adding and removing space on the BD are super awesome. But I think they would be even *more* awesome with the following tweak:

Limit space addition/removal to the visible diagram; i.e. don't make any changes to other cases in a case structure.

 

I have had many situations where I was doing cosmetic tweaks in one case of a case structure, only to find I have overlapping items in another case that I wasn't looking at.

 

auto_size_issues.gif

 

Hopefully this simple animated gif demonstrates what I'm talking about.

 

(And yes, I know we could enable "auto-grow" on the case structure to eliminate the shrink-case-smaller-than-contents problem, but that still doesn't address all the potential issues here.)

LabVIEW currently porvides TCP and UDP primatives. It would be nice if it had a PING primative as well.

Allow tables, list boxes, etc to be able to lock the right hand column. Currently if you resize a table or list box (or any control/indicator with columns) you end up seeing more columns. It would be nice to be able to lock the right coumn so no additional columns are displayed. Most instances of tables have a defined set of columns which will be used and it looks rather ugly to resize and end up with empty columns. The current alternative is to have code running that will do this programmatically which is a bit cumbersome. Effectively this is allowing the programmer to set a maximum number of columns.

Populating the Tree Control with items takes very long time.  I suggest improving the performance of a tree control.  Many other applications have tree controls that are populated in a small amount of time, so it should be possible with LabVIEW.

 

I know of three ways to populate a tree control.  The first is to individually add items using the Add Item invoke method.  This method takes a very long time.  Adding 15,000 entries took over 180 seconds.

 

The second way is to use the"Add Multiple Items to End" invoke method.  This took over 20 seconds for 15,000 entries.

 

The third way is to programatically respond to the user expanding an item in the tree and populating only as necessary.  I assume that this is fast, but it seems like a lot of work to do every time a tree control is used that could have a lot of items. Maybe LabVIEW could improve performance by using the third approach internally for the programmer. 

 

Currently I am hesitant to use a tree control because of performance.  LabVIEW is a great product, and making the tree control perform better would improve LabVIEW even more.

 

When a cluster contains refs to different type of controls that have a common ancester, the "cluster top array" primitive should be able to handle it instead of having a broken wire.

 

Example_VI_BD.png

 

Indeed, if the lower snippet works, one can assume that it shouldn't be too hard to get the upper one to work as well when possible.

When working with arrays, it is convention that search functions output -1 when element is not found. There are several functions using this logic. I find myself quite often using "Equal" function to compare this value to -1. While not being overly complicated, considering I do it very often, it would still be nice to have function "equal to -1" which would work similarily to "equal to 0", having only one output.

Current approach:

Rashek_0-1575453021315.png

Suggestion ("equal to -1" icon is only illustratory):

Rashek_1-1575453212574.png

Purpose: Speeding up programming routine

Pop up on a subpanel control. There's an option for "Make Panel Transparent". When you enable that, the background of the panel is transparent and you can see controls/indicators underneath. The key word here is "see". You cannot click on those controls. The subpanel eats the mouse clicks. I talked about this with a couple people and could come up with no use case where you would want a transparent subpanel and not be able to click on the controls behind it. What I think the behavior should be is "if the mouse click hits a control in the subpanel, that control gets the click. If no control in the subpanel gets the click, the click falls through to the controls behind it, if any."

Currently enums can not be in a cluster that you want convert to JSON. It would be great, if this could be added.

 

Either the enum value could be converted to its internal representation (e.g. u16) or the value could be saved as a string (make it easier to read the JSON and parse it outside LabVIEW).

 

The unflatten should be able to handle the u16 easily to convert back to enum or take the string and search through the enum of the datatype that one has to connect to the vi. If there is no match the VI can issue an error.

 

When using a case structure within a loop for a state machine, or when using an event structure, it is frequently necesary to either add a new case/event or add a new state variable to the structure.  This can lead to unexpected behavior if the user has accidentally used "Use Default If Unwired" on an output node, and will require time consuming wiring of all cases otherwise. The Linked Input Tunnel Option helps with this.  However, the mass of state variable wires, if there are several, still creates a confusing and cluttered diagram.

 

It would be nice to add a "Feed Through if Unwired" option.  This would allow us to wire ONLY the variables that need to change, and only need to examine the relevant cases.  Additionally, you would get a nice clean diagram.  Here is one idea, shown for an Event structure:

 

NI Shift Reg Suggestion_sm.JPG

In large &/or dense &/or multi-dimensional arrays, it'd be helpful to be able to tell the location of elements without having to either manually count or use the index values to relate to an element's location. A default tip strip could work - see image below:

Array w Tip Strip.jpg

When building an application, the build will fail if any of the VIs are broken.  But, the build doesn't fail until very late in the build process.  It would be great if the build would fail right away if any VIs are broken.

 

Note: In one of our big applications, it sometimes takes 30 minutes into the build before the build fails.  However, it only takes a couple minutes to detect this by loading the VIs into memory and testing if they are broken.  So, as part of our one-click build, we implemented a pre-build test for broken VIs and abort the build -- this saves us a lot of time (in cases where the build is broken).

I am extensively using the Array to Spreadsheet string Primitive and most of the time I never used the Format string input (Use to wire an empty string constant) and still I am getting the right result what I expect. So I think it would be better if the Required Terminal is changed to an Optional Terminal.

 

It is known that the Array to Spreadsheet string is Polymorphic, but when we wire an array of I32 and DBL the output string is DBL format only. It would be good if the output String adapts the data type that is wired unless otherwise specified by the Format string.

 

Changes needed for Array to Spreadsheet String.png

Searching an array for a certain element can be expensive for large arrays. The speed could be dramatically increased if we can assume that the input array is sorted. The speed difference can be several orders of magnitude.

 

There is an old example that discusses this in more detail. I also wrote a similar tool long ago when I needed to recursively score positions for the tic-tac-toe solver, using a retrograde analysis similar to what's used to generate endgame tablebases for chess. (It literally took hours with the plain old "search array"!).

 

(A similar tool is the "search ordered table.vi", which only works for DBL and returns a fractional index.)

 

Suggestion:

 

"Search array" should have a boolean input (default=FALSE) where we can tell the algorithm that the array is sorted.

 

(The output would be exactly as before, with -1 indicating "not found".). Setting this input to TRUE would switch to a binary search where in the worst case only ln2(N) instead of N comparisons need to be made. (e.g. 20 instead of 1048576 for a 50000x speedup!!!)

 

It could look as follows.

 

Of course it should continue to accept all possible datatypes (including clusters) and not be limited to simple datatypes as the polymorphic example quoted above.

.
Message Edited by altenbach on 08-31-2009 03:30 PM

Currently I have to put

 

"allowmultipleinstances = TRUE"

 

into the ini file manually.

A customer called in to NI technical support with the following idea pertaining to custom error codes and the Error Code Editor.

 

Is it possible to have Error Code Editor remain open during normal LabVIEW coding. This way customer's can add custom codes as they code their projects. The Error Code Editor found by going to tools->Advanced->Edit Error Codes... currently will not allow user to continue using LabVIEW until they have selected the close option as of LabVIEW 2019 sp1. This related to the fact that user must restart LabVIEW after editing custom error codes for them to correcty appear in a new error ring dropped on the block diagram.

 

If a error ring was already created, then the error code file (in XML format) has already been parsed. Thus no new ones will appear for use. If there was a way to more actively add and then use custom error codes, customers could make use of more error handling features.

 

Jesse Grigg

Technical Support Engineering

National Instruments

www.ni.com/support

 

It would be nice if controls/indicators that had a scroll option (most useful for vertical scroll) would have the ability to support automatic scrolling. This is useful for trace windows or long tables which are continually getting updates. At present we need to set the scroll position ourselves for every update.

This idea got triggered by this other idea but this here is a significant variation and deserves it's own entry.

 

There is possibly some need to graph multiple XY plots on the same xy graphs, all sharing the same X values. One problem with the current XY graph implementation is the fact that the x-values need to be duplicated for each plot, unecessarily inflating the data structures.

 

One possible workaround has been suggested here, but I think we can do better!

 

Remember, that in this scenario, all plots have the same number of points, thus the data could fit in a plain 2D array. Why not?

Currently, xy graphs don't accept 2D arrays, so this will not clash. (Of course downconversion will be problematic).

 

I suggest that we should be able to directly wire a plain 2D numeric array to the xy graph terminal. In this case, the first row (or colum as set by a property or other configuration) is taken as X-array, while the remaining rows (or columns, resp.) are Y1, Y2, Y3, etc. arrays.

 

 

(Of course an xy graph should also accept a 1D cluster array where each element is such a 2D array. This is useful if there is more than one set of multiplot data, each with a different x-range or number of points.)

This would replicate the ability of the standard Index Array function to extract a subarray from a multi-dimensional array. Currently both indices must be wired, which only selects scalar elements.

ArrayIndexInPlace.png

 

Another related enhancement that may be useful is to provide the equivalent of "Array Subset" on the In Place Element Structure.