Jump to content

[LVTN] LVOOP Assistant

Recommended Posts

ok, here are two pics showing the behaviour

The old class seems to use a big font, but when I use the assistant on a newer class, even if I type the same text it uses a smaller font.

Yes, the reason for that is as explained above.

10-pt would still 'fit' if you always less characters.

Another thing. Don't know if this is related to the LVOOP Assistant or not, but it happened shortly after installing it. Once, when I went to the Class properties dialogue I got a bunch of LV errors and none of the sub-pages loaded properly. The errors were not fatal, and selecting the Properties again caused it to work fine. This has only happened to me once, and I have only been using 2010 for a few weeks now. Will keep you posted if it happens again and try and make a note/screencap of the error messages.

(Are you using the LECC2010 version - v0.16?)

Hmm, I saw this once too, but never with LV 2009, only in LV2010. And like you said it was fine after reloading. I can't seem to replicate it, but will have to keep an eye out.

If anyone has any info on this or seen anything similar before when working with Classes + scripting, please post

Link to comment
  • 2 months later...

I uploaded a new version to LAVA - the main feature is native support for LabVIEW 2010.

The code now checks for LabVIEW version and mass compiles if IDE is newer.

I tried to optimize it as just compiling the directory takes a long time due to a few Libraries and Classes etc...

The workflow is pretty much copied from what I have seen using some JKI tools - so props to them.




  • Version 0.16 was entered in the LECC 2010 but was not added to the LAVACR.
  • Version 0.17 just updates some support files for LAVA and is added to the LAVACR.



Version History (Changelist):

0.17-1 2011 01 23

- Changed (): Rebuild for LAVA distribution. Support files changed only (no code changes).

0.16-1 2010 10 05 (LabVIEW Example Code Contest 2010)

- Added (): Support for LabVIEW 2010. Include Mass Compile option on first load

- Changed (): Now requires Icon Editor API v2.1-1 as dependency

- Fixed (): Popup on New Class Control resolves correct 'Current Icon'

Link to comment

Actually this is not required anymore since VIPM 2010 already does a mass compile after installing packages now.

Yes, that is correct however, for a normal VIs this is great.

For a larger dist with libraries and class I found it was much slower.

The reason being that all code in the directory was handled i.e. open/checked/compiled.

But due to the above VI relationships this was slow.

What I did to optimise it was to only point to a VI Tree so one VI gets handled.

I don't have any benchmarks recorded but it was actually something I wanted to discuss with you.

Link to comment

Yes, that is correct however, for a normal VIs this is great.

For a larger dist with libraries and class I found it was much slower.

The reason being that all code in the directory was handled i.e. open/checked/compiled.

But due to the above VI relationships this was slow.

What I did to optimise it was to only point to a VI Tree so one VI gets handled.

I don't have any benchmarks recorded but it was actually something I wanted to discuss with you.

I don't know how the JKI install works, but you are right.

You only need to compile the hierarchy from the top level VI (which is what your VI tree is doing) rather than compile every VI..

I scan all VI's and see if they have any parents (lone VI's - these will be the top level VIs) then compile "Entire Hierarchy" only for those VIs and just save all the dependants. Opening a reference is quick, but compiling isn't. The advantage of this method is that you don't need a VI Tree VI (so it's more generic) and, for a couple of hundred VI's you only end up compiling a small subset and the compilation process is smart enough that shared VI's that are already compiled and/or saved are skipped (or so it seems)

It's no really an issue in 2009 because it's all very quick. But 2010 is such a slug (installing SQLite API in 2009 takes about 20 seconds. In 2010 it's about 1 minute i.e 3x slower)

Edited by ShaunR
  • Like 1
Link to comment
  • 6 months later...

Yer, Tom let me know about the change he made to PPL in 2011. I think the 2011 Icon Editor API has now been posted. I am away at the moment but will check DL 2011 and check it out when I fly home.

In the meantime, the LVOOP Assistant is not compatible with 2011 - but I guess what you get for using unsupported features. I would love to see the API officially released:


Vote for this Idea to help out :)

Link to comment
  • 6 months later...

I have added a new version to the LAVA-CR - v1.0.0.23


This version supports LabVIEW 2011 and integrates into the LabVIEW Project Provider API

The previous version was broken in 2011 as the Icon Editor API was not supported due to a switch to PPL 2011, so this functionality will not be included at the moment.

I started playing around with the Provider API with Create Child Class which was a good plugin to start with.

Along the way I found out that there was a limitation preventing me from releasing individual packages under one 'banner' so I will just be upgrading this package with new functionality in the future.

And therefore won't be updating the Create Child Class package I posted - it will be done in this package.

I've also moved the Rename LVOOP Labels code into this package as it more intuitive to use with the Provider.

I need to brush up some stuff (examples etc...) but it this package is ready for feedback so please post :)

So, in summary v1.0.0.23 supports:

  • Rename LVOOP Labels
  • Create Child Class
  • Clone Method

Right-click on a Class or Class Method VI to access the plugins:


Go to Tools>>LVOOP Assistant to access other stuff:


It also uses the Preferences code I OpenG'd up :)



Link to comment

I have added a new version to the LAVA-CR - v1.1.0.39 which contains the following new features:

- New (): Added 'New Templates' feature

- New (): Added 'Methods Sandbox' feature

- New (): Added 'Refresh Icon' feature

There are now in built templates I use - you can pop-up on a Class and select New Template to add a template to that Class

If there are other common templates, please post and I can look at adding them


By placing your own templates in the Templates Folder...



...You can script new Class Methods with them

Pop up on a Class and select Methods Sandbox

This UI will allow you to quickly script either the inbuilt or custom templates to create new Methods:


The last feature allows you to pop up on a Class Method to quickly refresh a Method's icon without having to open the Class Properties Dialog and refresh all icons


Link to comment
  • 3 weeks later...
  • 10 months later...
  • 11 months later...
  • 3 weeks later...
  • 9 months later...

Hi!  Relative LVOOP newbie.  I last used LV back in 1997 or so and am now getting back into it.  I'm trying to install LVOOP Assistant in LV 2014.  I downloaded what appeared to be the latest version (lava_rsc_lvoop_assistant- and ran VI package manager, got the mass-compile, etc... but I can't find the right-click menu anywhere.  Right-clicking on classes, methods, etc in the Project Explorer, I don't see the LVOOP menu.


Any ideas?




Never mind.. I restarted and now I see it.  I thought the restarting that occurred during installation was sufficient but I was mistaken.  Sorry, n00b :-)

Link to comment
  • 7 months later...

Hi there!

First of all, thank you so much for the awesome work! :D


I have a small question that I'm hoping you can shed some light on; I installed the latest version of the LVOOP assistant, and I wanted to use the quickdrop shortcuts for the Theme Editor, but can't seem to find them in the documentation; do I need to set them up manually? 


Thanks again and have a great day! :)

Link to comment
  • 2 years later...

I realize this topic hasn't been touched for a few years, and if something better than the LVOOP Assistant exists, I'd be happy to hear about it. The GOOP suite is nice, but handles member VI icons poorly, I just wanted something to change the color theme, which is how I found this.

Anyway, I don't know if this is a problem introduced with newer versions of LabVIEW since this was last updated, but any change I make to member VI icons through the theme editor or the library icon viewer does not force a save of the VIs of a class. The functionality works, but I can close the entire class, reopen it, and see the old VI icons. It doesn't prompt me to save them when closing and doesn't show an asterisk in the title bar of any VIs.

I haven't found a way to save all the VIs in a class after changing icons outside of opening each one individually and saving it. Doing a save all or right clicking on the class and choosing save all (this class) don't work.

Did this work previously? Is there any chance of it being looked into at this point?

Link to comment
  • 3 weeks later...
  • 1 year later...

Trying to create a child of a class that is within a packed project library produces Error 1562

This is because CreateChildClass is trying to add the new class to the parent's library.

I propose that it should instead add the new class to My Computer.

To do this, just change "CCC Main.vi" to look like this:

vi.lib\addons\_LAVA\lvoop_assistant\_create_child_class.llb\CCC Main.vi


Edited by Porter
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Ryan Vallieu
      I have seemingly found an issue with the shipping example code for Nested Malleable VIs.  Another user has verified that he saw the same behavior in 2019.
      I am working through the examples and the presentation from NIWeek 2019.  In running the Lesson 2b code (C:\Program Files (x86)\National Instruments\LabVIEW 2019\examples\Malleable VIs\Nested Malleable VIs) I found the Equals.vi in the class was not being leveraged and the search failed.  When I went to my LabVIEW 2018 machine and ran the Lesson 2b.vi the code worked to find the element by correctly leveraging the in-class Equals.vi.
      One difference I see is that in the 2018 example the Equal.vi is in the example folder with the code, and in 2019 the Equal.vi has been moved to VI.lib - otherwise the code looks to be the same.  The Equals.vi code looks identical, and the calling VIM look identical.  I posted on the LabVIEW NI.com forum here: 
      I am trying to determine what may have broken or changed between the implementation in 2018 and 2019, visually the code looks the same.
    • By Voklaif
      Hello all,
      I am programming with LabVIEW for around 2 years and was recently stumbled upon LVOOP.
      I am required to write a communication protocol to work with a micro-controller, which later will be also used for ATP and debug purposes.
      I want to build the program "correctly" from the beginning so it will be maintainable and flexible to additions and changes.
      My natural way of building a program would have been a queued state machine, with several loops, each loop is in charge of a different module (one for GUI obviously), but as I stated in the beginning, I want to use LVOOP.
      Does anyone have a LVOOP project I can use as reference? I've searched online and found some nice examples, but they are small and teach you the basic stuff.
      For me it's important to see the how to use the project tree wisely, where to place the classes, see the managing loop and to learn as much as possible before I create one of my own.
      Thanks in advance,
    • By GregFreeman
      I have an array of classes, let's call the object TestPass, of size 1 (but it is an array because it can scale out to multiple test passes). In this class, there is one other nested class which is not too complex, then various numeric and string fields to hold some private data. There is also an array of clusters. In this cluster there is a string, two XY pair clusters, and an integer. Not very confusing.
      This array of clusters gets fairly large, however, upwards of 80-100k elements. What I am finding is when I index the array of pass classes it is crazy slow. On the order of 30 ms. Doesn't seem like much, but we are indexing the array in our method to "Get Current Pass" which is used in various places throughout our code. This is adding potentially hours to our test time over the 80k devices we are testing. 
      So, I started digging. When I flatten the class to a string and get the length, it's 3 mb. But, when I run the function with the profiler is is allocating close to 20 mb of memory!
      My gut feel was that the string is causing the issues. So I removed the string from the cluster and the index time went to 0 ms. 
      Luckily we can normalize a bit and pull the strings out of the cluster since a lot of them are duplicates. But it makes our data model a bit uglier. 
      Has anyone seen these kind of performance issues before? I saw them in 2013 and 2017.
    • By ted Francis
      I am new to LVOOP and have jsut started writing my first LVOOP program which I have attached.
      I would appreciate greatly help with the question I have
      Thank you in advance 
      This vi will perform two tasks 
      1.Generating Report data sheet for metrology 
      2. updating the scales in a MAX .nce file
      1. Metrology will input calibration information into the tables on the tabs
      Metrology will then click "Update Tables" then "Create Report ( create report section of code is not yet written
      Update Tables will write all information entered in the tabs to class varaibles and will also delete current Max informatiomn
      2. Metrology will click "Load NCE Scale"
      vi will prompt for nce file to load and then once file is selected, display existing scales for two channels (Current Motor 1 and 
      Current Motor 2)
      Metrology will then click "Update Scales"  the program will replace the existing scales with those entered in Step 5.14 and 5.15
      from the tables on the tab
      Question 1.  Steps 5.14 and 5.15 are needed by both classes ( Table Variable and MAX) - what is the best way to share this information
      CAT0000032 Class Version.zip
    • By shoneill
      I was browing through the actor framework discussions on the NI site yesterday and I came across a statement by AQ.
      Never inherit a concrete class from another concrete class
      I had to think about that for a second.  The more I think about it, the more I realise that all of the LVOOP software I have been writing more or less adheres to this idea.  But I had never seen it stated so succinctly before.  Now that may just be down to me being a bit slow and all, but in the muddy and murky world of "correct" in OOP-land, this seems to be a pretty good rult to hold on to.
      Are there others which can help wannabe plebs like me grasp the correct notions a bit better?  How about only ever calling concrete methods from within the owning class, never from without?  I'm learning for a long time now, but somehow, my expectations of LVOOP and the reality always seem a little disconnected.  AQs statement above helped crystallise out some things which, up to that point, had been a bit nebulous in my mind.  Well, I say I'm learning..... I'm certainly using my brain to investigate the subject, whether or not I'm actually LEARNING is a matter for discussion... The older I get, the less sure I am that I've actually properly grasped something.  The old grey cells just seem to get more sceptical with time.  Maybe that in itself is learning...
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.