The Index & Bundle Cluster Array function currently discards any labels of the input data. I think it would be more useful if it would try to retain the names (i.e. copy the original array labels (if available) to the element labels of the output).
The picture illustrates the idea. On the left we see the current behavior and on the right what we would get after this idea is implemented.
I am probably not alone in my trepidation in using the Block Diagram Cleanup tool, but I can not help but recognize its power to be a tremendous help. We already have tools (Grids, Align and Distribute, Ctrl-T QD shortcut, etc.) to get Nodes and terminals positioned nicely. Even with this idea in Beta, wiring can still be a tedious chore. The BDCT does a reasonable job routing wires, but also moves things around including control/indicator labels, and is often unsatisfying.
What I want is to be able to lay out the BD, wire things while only worrying about beginning and end, and then have the BDCT only adjust the wire routing.
Despite numerous RCF shortcuts and new behavior in LV10, this is not the same as cleaning wires. The solution is not to methodically select only wires and Ctrl+U. The reason: the process should be a global optimization, not a serial process where each wire route is chosen based on the current state of the BD. The BDCT uses a global optimization, 'Cleaning wires' does not. What I want is the optimization of the BDCT limited to only wires, leave my nodes and terminals and labels alone!
Right now, if you happen to use the right colors, LabVIEW will change the text color on a Boolean. But, if you don't pick the right colors, LabVIEW keeps a single text color.
This would probably be fine IF LabVIEW allowed you to have multiple text colors, but you can only choose one:
But, as you can see, LV only supports one text color. I propose that LV support two text colors (ON and OFF). Obviously LabVIEW has the ability to change the color already since it will do it in the right circumstances, but it would be nice if LV gave us control over it.
In my use case at the moment, I am trying to make a custom illuminated button which the text on the button should be grey went off, and yellow when on.
Even though I use the tools selection in the automatic mode, many times I need some specific tool not accessible in the automatic mode or force one like "Position/Size/Select". Sometimes, mostly designing User Interfaces (UI) that takes all screen, we got the Tools Palette blocking access to something. Then we move the Tools Palette until it get in front of something else.
The idea is to have an option to have all buttons in the toolbar. Some programs allows you "dock" just dragging the over the tool bar.
Many times we have plenty of space to have all buttons there, if not, we can have a second row of buttons. That will be nice to add more buttons as we wish.
I really hate having to dig through a long hierarchy of menus when I know what I want:
Visual Studio (and other MS and non-MS products) have a feature called Intellisense, which is meant to make this easier. Basically, as you type, it pops up a list of matching objects, based on context, so you can quickly select what you want:
It would be nice if LV had a similar feature - click on a property in the property node using the text tool (or Ctrl+click if using the auto-tool) and now you can type in the property name and you will get an Intellisense-like pop-up, which will have all the relevant properties.
Specific features it could have:
It should know all the relevant names - full names with the hierarchy (Boolean Text.Font.Color), long names (Mechanical Action) and short names (MechAction). This could probably be similar to how Quick Drop handles shortcuts or they could simply appear as separate items.
It should be context sensitive. If the class is Boolean, then there's no need to have Listbox properties in the list.
It should match all the properties which include the search string (so "in" on a boolean would match both "Indicator" and "Strings") and only them.
It should have the ability to use caps for acronyms (e.g. in the above screenshot you could use "BT" instead of "Boolean Text", similar to what appears in this video).
It could probably also work on the invoke node, although there it's less needed.
It could probably also be used to quickly select a class if you have a class specifier using the same basic mechanism.
This example (LV 2009) shows how useful this could be. You don't need anything installed. Just run the VI and start changing properties.
It will only work on the last property in the node.
It doesn't have the proper list of names and it doesn't implement all the features in the idea, as this is just a basic example.
Note - this is similar to this idea, but I think that it's much more usable. Also note that the second idea refers to a QDKS which ships with 2010, but that is far from perfect.
When I have an array of clusters and I want to locate the array index where a specific element of the cluster has a certain value, I need to first build an array from the Array of Clusters and then search that to find the Array element I want:
It would be nice (and cleaner and likely faster) if I could wire the Array of Clusters into an unbundle by name function and select String to get the array of string element to search.
In addition, if the cluster contained nested clusters, I could access them the same way, using the dot notation alrerady supported. For example, the unbundle would let me select 'cluster1.subcluster2.String' to access the subarray of an element.
We've all seen the demo that shogg did where he set the color of his splitter bars to the panel color so they disappear at run time, but what if the splitter goes over background controls that you want to persist between panels?
It look slike the smallest i can have my splitter bars is 2 pixels. I totally want them to show up in edit mode, but I'd like them to be 0 pixels wide in run mode (selectable, of course).
Probes are so useful for debugging, but monitoring them within the Probe Watch window can be a headache. I constantly find myself focusing back and fourth between Probe Watch and the code to translate a probe number to a position in the code. A solution would be to have the probe's value float just above the probe itself. LabVIEW already has a similar feature. When you use Highligh Execution wire paths display their current vaules, but using Highlight Execution is too slow and no practical for every debug situation.
Currently to replace something (for instance a node on the block diagram) you have to right-click and then select Replace... and then usually a lengthy navigation into the function palette or onto the disk with the OS file explorer.
Most often I already have a LabVIEW-project open, one or more explorer windows (opened at a useful context), and maybe also one or a couple of pinned sub-palettes - but I am not allowed to replace anything from these locations. I suggest that this will actually be allowed; that is: drag something onto the block diagram, and if you're enough on top of another object, then a replace-outline appears for you to drop your new object into. Here's an illustration for replacing something in the block diagram, but the same could apply to the front panel as well:
All the usual stuff should happen when you replace this way, as if you replaced through the context menu. For instance a prompt to save a VI that leaves memory, automatic update of a project's dependencies etc. Many ideas are submitted to this Idea Exchange to enhance the Replace context menu in different ways, but a feature as I'm suggesting here would improve my own workflow the most, simply because I already have much quicker access to my "replacer", through existing explorer windows, than going through the Replace context menu no matter how intelligently it gets populated.
When calling .NET libraries from LabVIEW, block diagrams explode horizontally - the aspect ratio of the diagram can easily push 5:1 or worse (it's 10:1 in the example below). Some Method Chaining syntactical sugar would yield a more space-efficient-and-readable 4:3 to 16:9 or so.
Property Chaining is already well-established in LabVIEW - let's get us some Method Chaining!
I would like to introduce a little shorthand for creating numeric constants with non-decimal radix. New constants should be able to autoadapt for radix, much like they do for type: Drop a constant, enter '0x20' or 'x20' to get a constant with Hex radix (visible!), and the proper value.
In addition, it would be nice if automatic conversions would take place if radix specifiers are entered into (non-hex) constants (or controls). For example, entering '0x20' into a numeric control with decimal radix should result in a value of 32 being entered (auto conversion). Hex is an exception, obviously, because b and d are already valid. The other radices have no such problem.
It is time to put a dent in the floating point "problems" encountered by many in LV. Due to the (not so?) well-known limitations of floating point representations, comparisons can often lead to surprising results. I propose a new configuration for the comparison functions when floats are involved, call it "Compare Floats" or otherwise. When selected, I suggest that Equals? becomes "Almost Equal?" and the icon changes to the approximately equal sign. EqualToZero could be AlmostEqualToZero, again with appropriate icon changes. GreaterThanorAlmostEqual, etc.
I do not think these need to be new functions on the palette, just a configuration option (Comparison Mode). They should expose a couple of terminals for options so we can control what close means (# of sig figs, # digits, absolute difference, etc.) with reasonable defaults so most cases we do not have to worry about it. We get all of the ease and polymorphism that comes with the built-in functions.
There are many ways to do this, I won't be so bold as to specify which way to go. I am confident that any reasonable method would be a vast improvement over the current method which is hope that you are never bitten by Equals?.
I find often the need of creating array indicators with many elements, and of labelling them is a way which allows easy identification of the element index.
Normally the labels of the elements can be made visible, like in the left example shown:
One way of doing it, if the array has a fixed size, and all of the array is shown at once, is to juxtapose a set of text labels identifying the elements. Tedious to build.
If the array changes size, if it is larger than shown, if it is supposed to be scrolled on the FP, static labels are useless. Currently the label of the element can be made visible, but all elements share the same label. The index display of the array can be shown, but it relates to a single element, which makes cumbersome to identify elements of long arrays.
I usually resort to more sophisticate contraptions, like arrays of clusters, each composed of the element in question and of a numeric indicator; or to two parallel array indicators, one for the elements itself and one for the indices. Both solutions are more cumbersome to build and to size and align equally; the index content has to be prefilled and maintained in sync when array elements are added or deleted (programmatically or via contextual menu); in the second case, a lot of events have to be trapped programmatically, for instance to maintain synchronism when the main array is scrolled.
What I would like to have is an additional label natively visible, showing the element index, like on the right.
The labels could be made optionally visible with a contextual menu ---- left click->visible items->index label.
Options (perhaps properties) in order to set the value of the first element (e.g. 0 or 1 or any other value) and the step value if different than 1 would also be useful. Standard options about location and orientation of the label with respect to the array element would apply.
As shown in below image we can see that, if I index numeric array and wire it with any of the node from numeric function it gives un-aligned wire whereas as same process if I use Boolean function at output of index it gives well aligned wire.
So due to this numeric function node wire to index out terminal makes our code with full of wire bends which is not as per NI LabVIEW coding standards also.
So here, I want to draw attention for NI, to do some correction to specific numeric function nodes so we can make neat and clean code in LabVIEW.