LabVIEW Idea Exchange

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

Any time I create another Y axis for my plots, I always have to manually adjust the range of each axis to get the grids on both axis to line up in a pleasant way.  For example:

autoscale.jpg

 

It would be nice if I could make Autoscale take into consideration all the axis present on the graph in determining numeric spacing to give the best looking plot.

The current implementation of the "Disabled and Grayed" state of a FP object is unusable in a professional project. It adds a shading to the bounding rectangular region around the FP object, even shading pixels that were previously transparent (see below).

 

DisabledAndGrayed.png

 

This proposal brings this function up to the bare minimum of "usable". As a bonus, consider even introducing new property nodes for FP objects that define new colors for the disabled state.

The current behavior of LabVIEW is as such:

 

UserEventsWithClusters.png

 

The pick list of event data strips the cluster, only allowing access to the elements inside the cluster. In order to manipulate the native datatype, you must reconstitute the cluster inside the event structure, a performance hit on large data structures firing at quick event rates. This is not to mention a messy FP.

 

I suggest that User Events preserve the clustered event datatype, allowing the programmer to access to the native datatype on the consumer end. The option to select only the element "Clustered Typedef.Array of I32s" of course still remains, but is not forced upon you. (Note that the below block diagram is NOT a direct LabVIEW screenshot... brought to you by trickery and a paint program. I clustered the cluster on event datatype [not shown] so that the event structure could eat the outer layer)

 

NewUserEventsWithClusters.png

 

My motivation with this suggestion is directly linked with my other post on the Big Typedef Issue.

I have often the case, that i have to display an array of cluster. It takes a lot of space on the front panel to show all the captions of the cluster elements, cause they will be shown on each array element. A better solution would be, showing the captions or labels just on the top visible element.

IMAG000.jpg

IMAG001.jpg

I frequently see people posting messages about issues they have using the application builder.  They report an error number and the text of the error description.

 

Here are some recent examples:

 

Error 1 while building in 8.2

Build Error, Error 6 occurred at AB_Source_VI.lvclass:

Get Error 6 about 50% of time when building Application

Build installer error code -12 while copying distribution

 

The error description always has a long path through numerous VI's that make up the application builder package pointing to where the error occurred.  But the description never seems to give any detail about what actually caused the error.  It is often too long of a file name, or too deep of a path that gave too long of a path/filename which the app. builder VI's could not handle.

 

It would be helpful to both the people who are having the issue, and to the people trying to help on the forums when they post their message asking for help, to have some information as to where to look.

 

Maybe that information is already available and I just don't know where to find it.  Fortunately for me, I don't think I've come across this problem.  One, I haven't need to build a whole lot of executables.  Two, I keep my project folders at the root level of my hard drive, so the initial part of the path is always short.  (e.g.  c:\ProjectFolder\......)  I know if you stored projects in a My Documents directory, the initial path is ridiculously long because of the way Windows locates My Documents on your hard drive  (e.g. C:\Documents and Settings\My UserName\My Documents\ProjectFolder in XP) so you've already wasted 40-50 characters even before you give the directory name for you project folder.

 

My request:  Let's show some meaningful information in the error dialog box for Applicaiton Builder errors that can help people figure out how to fix it.

Hi,

 

when I have to rework a vi, i usually start by putting the existing code in a disable structure

and then start working in the disabled 'case'.

 

Quite often I end up trying to replace the disable structure with a case structure to test the new or reworked vi.

 

Now I have to copy everyting into a temporary vi, remove the disable structure, put a case structure in place, paste again and rewire iputs and outputs.

 

Please add the ability to replace the disable structure with a case structure.

Earlier, I posted this idea, suggesting that the error in control should not have the default value in parentheses.

 

Following another discussion, I now suggest an extension of that concept - No control should have the default value in parentheses. This clutters up the front panel and the diagram of the subVI.

 

Instead, when you hover over the input of a subVI, LabVIEW should look at it and if it's not required, should add the default value to the tip strip automatically:

 

Default_Value.PNG 

 

This change will require us to modify all our old code if we don't want to have the clutter, but I can personally live with that. Alternatively, LV can try to be clever and do something like: "If the control isn't required and has parentheses at the end, don't display the default value".

I was almost certain this idea already existed, but I couldn't find it. If it does exist, please cross-link and disable this idea.

 

There are a coupe of functions which could really benefit from backwards propagation of data types. By this, I mean the ability to change a functions input datatypes based on a wired output.

 

Some functions already do this (like Variant to Data). However, that implementation has its flaws (as far as I can tell, the backwards propagation only works if wired to an indicator terminal).

 

Functions like Select, Obtain Queue, and Create User Event would benefit greatly from this (as well as many others).

 

Essentially, what I would like is a Type Specialization Structure that works backwards.

 

To implement this using today's technology, I guess we could create express VIs which have scripting function calls whenever the outputs are wired??? But that's janky and not practical for everyday development.

 

Simple example of SelectSimple example of Select

 

 

Here's a previous idea I posted, for this post, I'm proposing a generalized version of what I suggested there.

Sidenote: here's a plugin I created to make working with Select easier.

Currently the only image formats still commonly used today that can be imported into custom controls are non-scalable bitmap formats. The only supported vector formats that I know of are WMF and EMF, which is almost never used anymore to my knowledge. Even worse, it doesn't support features now expected in vector formats, such as gradients and alpha transparency. So if you're developing a custom control, you have to either use an antiquated format or a bitmap format.

 

LabVIEW 2011 introduced the new Silver control set, which to my knowledge still use LabVIEW's internal PICC format, which is completely undocumented. Rather than adding gradients and other new features to this private, undocumented format and using that, it would have made a lot more sense to add support for SVG, a modern, full-featured vector format that is commonly used, and used that for the Silver controls.

 

Not only are the two vector formats LabVIEW supports ancient formats, but their inclusion almost seems like an afterthought. Imported WMF and EMF images aren't anti-aliased like the Silver controls. Because of this, it's practically impossible to create any modern-looking custom controls that look good scaled unless you don't want any diagonal lines or curves, in which case you might as well just use a bitmap.

 

Sorry for the abrupt end!

In most software a tab character (/t) is "visually equivalent" to several space characters (see tab list below in notepad).

 

8-30-2011 2-34-58 PM.png

 

Unfortunately in LabVIEW, a tab character is visually equivalent (in normal display mode) to 1 space character. I am proposing that this should be change to be n space character.

 

8-30-2011 2-38-00 PM.png

I was going to post an idea to make the Find Items With No Callers window resizable.

 

Doing a search for "resizable" returns a few ideas specific to a particular window such as the example finder. But any and all windows should be resizable. Is there any good reason that the user should not be able to resize them?

 

find items with no callers.PNG

 

It would be great if the invert option is given for all possible Boolean terminals like input and output of Boolean functions, controls, indicators like what we have in compound arithmetic function.

 

 

Invert option in boolean terminal

"Auto-insert Feedback Nodes in cycles" option under Tools > Options > Block Diagram should default to OFF. I am a believer and preacher of FN's since Darren's blog post about them, but it seems I can only get FN's to appear when I mis-wire, not when I want one.

 

Plus, they really scare LV beginners (and me!) when I miswire. GAH! What just happened??

 

ScaryFeedbackNodes.png

LabVIEW loops are quite flexible and allow me to do just about anything I want, but I often find myself writing the same code over and over again trying to iterate across different data types and data structures. There are several situations where smarter looping constructs could greatly simplify my code. One simple example is stepping by a delta between a minimum and maximum value. Currently, I have to calculate the number of iterations required ahead of time (for a for loop) or do a comparison with the maximum (with a while loop) and use shift registers to maintain the intermediate value. I'd like to be able to wire the max, min, and delta to my loop and have LabVIEW do the required calculations for me. The iteration terminal could also adapt to the proper data type given the input parameters. Perhaps the iteration terminal would have two outputs, one with the current iteration count and the other with the proper iteration value.

 

stepped-loop.PNG 

 

Another useful feature would be allowing me to wire a queue reference to the loop count terminal of the for loop and having it automatically pop each value from the queue and feed it to me through the iteration terminal. It would do this until there are no values left in the queue or until the code stops the loop. One could write an algorithm that pushes new points into the queue from within the loop or push the current value back onto the queue for later processing.

 

I'm sure there are other useful iteration strategies that are fairly common, please share them with the community

Each page of a tab control should behave just like a pane does.

This means it should be possible to put splitter bars on a tab page.

This way one could build real nice front panels that look good when resizing, even when using tab controls.

 

At the moment I always have to decide: Do I need several tabs or is it important to be able to resize the panel?

There is no way to have both at the same time

 

(OK, there is one way - but I know much better ways to spend my time than programming all those pixel calculations to resize every control programmatically  :smileytongue:)

 

Here is a quick scetch of a dialog front panel that could be improved very much by using splitter bars and  "fit control to pane":

 

 TabCtlExample.png

 

Look what happens when the panel is resized: It's a big waste of space that could be put to a better use by extending the tree.

 

  TabCtlExample2.png

 

Add support to transparency in picture control. When you load a PNG file to the picture control consider the Alpha Channel instead of a threshold.

Structures have many right-click options, but the property dialogs are currently very sparse (only label and subdiagram label). Let's compare the current right-click options of a FOR loop with the actual properties dialog, and we can see that many useful properties are missing (visibility of conditional terminal, autogrow setting, etc.). The parallelization has it's own standalone dialog, why not have all these settings on a new tab instead?

 

I propose that these scattered properties should all be integrated into the single properties dialog to keep things better organized. Here's how the properties dialog of a FOR loop could look like after implementation of this idea.

 

 

 

Similar changes could be made for all other structures.

 

LabVIEW's case selector icon (?) is taller than tunnels, so it interrupts wiring flow whenever a standard VI (4-2-2-4 terminal configuration) uses one of the terminals as the selector and an adjacent terminal is also wired as a tunnel.  I'd like to see the case selector be the same height as a tunnel.

I did a search for explain error - I did find this idea which is similar but for probes.

 

Explain Error is a feature I have been using more lately but its not available for an error that is in an array (LabVIEW 2010).

It would be great if it was!

 

Cheers

-JG

 

 

Explain Error In Error Array.png