From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Complete list of class IDs and names

Solved!
Go to solution

For those of you who do scripting, you can get block diagram object names in the same fashion.  Block diagram object IDs start at 0x4000.

Message 11 of 20
(3,195 Views)

Brilliant! The ini file mod works.

Thanks

0 Kudos
Message 12 of 20
(3,183 Views)

Just for full disclosure, there is a reason all those methods and properties are hidden behind an undocumented INI token.  Many are buggy, some have not been implemented, and some will crash LabVIEW and corrupt your code (I have run into to all of these at one time or another).  Caveat coder!

Message 13 of 20
(3,170 Views)

Just adding to the tribal knowledge with some search-engine friendly terms on how to determine a reasonably complete list of ClassNames and ClassIDs (Class Names and Class IDs) for scripting block diagram and front panel objects.

 

This snippet may be run in LV2012 and higher. The default value of "All Class Names" in this snippet is set to the results of running this VI in the 12.0.1f5 (32-bit) on Windows.

 

LabVIEW2012-Scripting-All-Class-Names.png

 

 

Message 14 of 20
(3,111 Views)

@mattb-5906 wrote:

Thanks for the info DFGray. I noticed some changes in the last few class IDs between LV version on the online documentation. Seems a bit poor - thought they would have added new ones rather than changing them to maintain backwards compatibility.


Basically that is one of the reasons not to document this! Once documented NI can't change it very easily, as long as it is not documented they can go in and refine it at any time if some other changes make this desirable. So there is a double incentive not to document every detail of the LabVIEW implementation:

 

1) Less effort for the documentation guys and gals to write and maintain the documentation (and I would judge about doubling or tripling the online help in size too).

2) Easier change in those implementation details as new features and insight make it desireable to do so.

 

With every change of something in LabVIEW there is a long list of things that needs to be considered at first. Very high in that list is the point: Has this been documented anywhere officially. If it has, the change really really has to have a very important advantage that it is even considered valid to go further about evaluating the feasibility of the change.   

Rolf Kalbermatter
My Blog
Message 15 of 20
(3,091 Views)

this is the same previous vi. i've sent the classid strings into an enum. all the "generic" items are renemed . generic 8 -> generic

0 Kudos
Message 16 of 20
(2,878 Views)

Or because I like to do things another way.  This gets a reference to a class specific constant and reads what the options are.  This also gives parent information and can be used to make a tree.  This feature was used in my Find References XNode over on LAVA.

 

https://lavag.org/topic/18796-cr-find-references-xnode/

Message 17 of 20
(2,875 Views)

Here's an enum of ClassID's. Since some values are not unique (i.e. "Generic"), this prepends the id number.

 

Note: This is subject to change for future LabVIEW versions.

 

-Ryan

Message 18 of 20
(2,781 Views)

As others have said, there are 12 duplicate 'Generic' class names.

Generic class IDs: 3, 45, 63, 64, 86, 107, 108, 109, 124, 16468, 16469, 16471, 16513.

 

Do these all point to the same data type?

Any idea if/where/why these are used?

 

I wrote a VI that went through every possible end-user accessible class ID (all 0xFFFFFFFF of them in chunks of 0xFFFF) and, after >15 hours iterating through them, there are a total of 299 including duplicates. The greatest class ID was 16547 (0x40A3).

This was in LabVIEW 2018.

LabVIEW_pykteUsQtX.png



Using LV2018 32 bit

Highly recommended open source screen capture software (useful for bug reports).

https://getsharex.com/
0 Kudos
Message 19 of 20
(1,995 Views)

Just to tie up loose ends:

I've since found the NI_Data Type.lvlib:VI Server Generic Type.ctl enum which is used by NI_Data Type.lvlib:Get Refnum Information.vi.

This contains labels for some of the duplicate Generic class names produced by the VI Server:Application:GetClassNameFromID method.

 

Class ID Class ID Hex Enum item
45 0x002D kLVObjOldKnobScale
63 0x003F kLVObjUnused2
64 0x0040 kLVObjSCLControl
86 0x0056 kLVObjUDClassClone
107 0x006B -
108 0x006C -
109 0x006D -
124 0x007C -
16468 0x4054 kLVObjGenClassDeepCopy
16469 0x4055 kLVObjGenClassTagFlat
16513 0x0081 -

 

Full LV2018 list attached



Using LV2018 32 bit

Highly recommended open source screen capture software (useful for bug reports).

https://getsharex.com/
Message 20 of 20
(1,951 Views)