Jump to content
Tripmeister

Add editor tool, that does not use Plugins as Quickdrop or Rightclick

Recommended Posts

Hi everyone,

I would like to program some little extra functionality to the Blockdiagram Editor. In detail I want to write a tool, that allows me to drag a node over a wire and then automatically inserts it to the wire if it fits (e.g. drag a subVI into an error-wire). I guess I know/can figure out how to write that functionality using VI scripting, but I'm not sure how to implement it to run whenever I edit a VI.

My first approach is to write a simple scripting-VI, that I will run whenever I need the functionality (or just place the exe in autostart). This VI will obtain the reference to the currently active blockdiagram and then uses scripting to move the node into the wire, whenever I drag a node.

But this seems very inefficient, though I know that controlling a drag-operation via VI-Server is inefficient anyway.

 

My basic question is:

Is there a way in LabVIEW to implement LabVIEW-Written functionality to the whole editor?

 

So I don't want to activate anything via Right-Click- or Quickdrop-Plugins. It should be a background VI running constantly, or maybe a solution using internal LabVIEW-Events such as starting a drag-operation on the blockdiagram.

It would be great, if anyone can give me hints or maybe even examples for how to solve this. I would be happy about any different ways on implementing the functionality from my first sentence, but basically its not about the functionality itself and more about curiosity on if there is a way to solve it all using LabVIEW. Maybe I want to write different tools as well then.

 

Thanks for any replies in advance!!

Best,

Jan

Share this post


Link to post
Share on other sites

There are a couple of tools that come to mind which spawn a VI to run, and then stays running, and monitors your development environment and can do things, based on actions.  One is CaseSelect which is a window which helps visualize nested case structures by allowing to collapse sections of it like a tree instead of a single listbox.  It looks for the selected item to be an event structure and then does work if it is.  It gets invoked with either QuickDrop or a right click but then stays running and monitors what items you are selecting.

I'd guess you could do something like this, to spawn a VI that runs continuously and monitors if you are dragging (mouse down+moving+single node selected) and then detect if you are on top of a wire (correlate mouse coordinates with BD objects), then read the data type of the wire, and if an insert is possible, then maybe give a visualization that an insert is going to take place (maybe a semi-transparent VI overlayed on top of your mouse, or changing the mouse pointer?) then invoke the same scripting code that does the insert with QuickDrop.

Lots of work, it probably wouldn't work well, but if you do get anything useful going feel free to post what you've come up with.

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
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 Taylorh140
      Started some work on a simple C code generator for LabVIEW. 
      https://github.com/taylorh140/LabVIEWCGen
      I was working on some ideas to handle some more complex Items. Had some thought about using 
      https://github.com/rxi/vec 
      To handle strings and other arrays/vectors, I would like to pass these more complex data types by pointer. However I am looking for some ideas as to when to make a copy. I know LabVIEW has some internal item that manages this but I haven't found a way of accessing it quite yet. Let me know if you think this is worth some effort. Or if you have any ideas about the architecture that you think would be helpful.
      Also i imagine that this will still only ever support a small subset of LabVIEW, the languages are quite a bit different, and i prefer that the code be as clean as possible.
       
    • By AnnihilationSpectrum
      Hi, I'm new in Labview.  I work as an intern. I have a formula for fitting a spectrum. The left side of the spectrum is higher than the right side. There's a background on the left side.I need to lower the level of the left side to the right by applying this formula. It should be a Gaussian curve.  I need help. Who can help me?


    • By the_mitten
      Has anyone found any properties or methods associated with malleable VIs? Specifically, I was hoping to find a way to invoke the "Convert Instance VI to Standard VI" function after confirming that a selected VI was indeed malleable. LabVIEW reports the class type of a selected malleable VI on the block diagram as a standard Sub VI, and I didn't see any properties/methods under the VI class.
       
      I'm exploring what it would look like to make a utility to convert a malleable VI into a polymorphic VI for the purpose of backwards compatibility. I'd like to have a reference library that uses malleable VIs but create a version that is still accessible to someone using older versions of LabVIEW that don't officially support malleables. 
    • By snowyowl485
      Doesn't work, don't know why, please help, ev3 only
      ev3_sweeper.vi
    • By Bira
      Hi guys! I know that it is an old topic , but I will try ! 
      My DAQ board sends to PC data in the following format.
      !voltage1[0],voltage2[0];voltage1[1],voltage2[1];voltage1[2],voltage2[2].....voltage1[n-1],voltage2[n-1]:TIMER4,TIMER5<CR>
      ! is the starting character
      and we have "," , ":"   and ";" as delimiters.
      In the end of the packet (after ":") my board sends the values of two microcontroller timers (4 and 5).
      The first data packet ends with a <CR> and my boards repeats that every 3 seconds.
       
      I need to plot voltage1[n] and voltage2[n] in two separate graphs and my time base is the value of TIMER4 / n.
       
      The real data is like showed below.
       
      !0016442034,0000727890;0016499095,0000727024;0016543605,0000724990;0016568541,0000722157;0016578803,0000719243;0016587848,0000716010:0123456789,9876543210<CR>
       
      I have used and modified altenbach's VI (https://forums.ni.com/t5/LabVIEW-Idea-Exchange/Contract-multiple-delimiters-for-quot-Spreadsheet-string-to/idc-p/1239830#M7564) but some delimiters are bothering me yet.
       
      Modified Altenbach's VI

      Case value 1 detail

      The result is:

       
       
      The VI was great to separate correctly the values of voltage1 and voltage 2 in two separate strings but I did not know how to avoid the last comma.
      Also in Timer4 and Timer5 I could not avoid the characters ":" and "," right before the numeric values.
      I would be grateful if anybody help to solve this issue or give me other tips to do what I need with that data.
      Thank you everybody in advance !
      DirtySpreadsheetStringToArrayVariable.vi
×
×
  • Create New...

Important Information

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