Virtual array - V1.0

Love the new virtual array feature. :slight_smile: One issue, I nearly always run in ‘Cut selected graphics’ mode and it doesn’t seem possible to select the entire array for printing. The only way to get them all to print is by disabling ‘Cut selected graphics’.

Am I missing something or is this a feature request? :grin:

More like the developer of the feature (me) potentially missed some ways that people might use it.
Virtual arrays are a little weird because you cannot actually select the array object so it’s hard to tell it to output all of the array but not other stuff - the assumption is that if you are using a virtual array you are always outputting everything for the most part.
We’re currently discussing this and I’ll work on getting it to make sense for that workflow.

Thank you Adam. That makes perfect sense. I understand the problem. How do you select something that isn’t really there without making it more confusing for the user when you can’t then do anything with them after they are selected?

BTW - I just posted and then deleted another question about virtual arrays in that I (unwisely) assumed that I would be able to click the array button again to edit them and was confused when it was greyed out. That was my misunderstanding which was resolved when I found the right-click option to edit the array.

Correct, as they do not really exist, they are virtual. Currently, you can turn off 'Cut Selected, as you mention. You can also flatten the virtual array to allow for selection of the resulting shapes.

We could, feasibly have an option pop up to ask, “just send the single item, or send the entire array of them?” or just have it automatically send all the copies if you ‘Cut selected’ when something is used in a virtual array.

It’s somewhat ambiguous, so we’ll could make it a user choice with a “use this option in the future” button or something, but we’ll discuss and try different options to see what feels right, or at least works. :slight_smile:

1 Like

Thank you all. I’m not trying to look a gift horse in the mouth here. This is a really useful feature!

You are welcome, you are good. Software…this can happen. During the design, implementation and development cycles, we try to think of every possible flow, which is not always easy. We learn a bunch while beta testing as well. Creative users come up with creative flows. Thank you for stimulating additional thinking around the usage scenarios. :slight_smile:

1 Like

FWIW - I use my laser cutter for making engineering prototypes for lighting products. These often have multiple materials on the same drawing. Different thicknesses of acrylic and wood for example. It’s very convenient to keep these on the same drawing and then just ‘Cut selected graphics’ for each material.

The other reason for doing this is when just one part is wrong, and I want to tweak it and print multiple versions.

That sounds like fun! :smiley:

Your use case totally makes sense! No worries.
And I think we have a solution.
I’ve made it so that it will only output the shapes you selected, even if you only selected some of the shapes in an array. If you want to avoid only partially selecting shapes on a virtual array you’ll need to group them.
This felt the most sensible and it will work well with how virtual arrays work for DSP controllers once we implement that.

Now I’m a little confused again. I use a DSP controller, Ruida, with Lightburn configured for that, and I’ve happily been playing with the new virtual arrays. However, I must admit I’ve not actually tried cutting anything with them yet, are you saying they won’t work? How would I know that? They look fine in the preview.

Have no fear :wink: Sorry for the confusion - I’ll explain.

There are 2 levels of virtual array support.

  • In LightBurn itself where it understands the link between shapes and the array so that it renders it as if all those other shapes existed.
  • In DSP controllers there is often a native concept of a virtual array where you tell it “burn this one thing X by Y times” and it will do it for you.

Right now we only have the first but what we do when outputting to the laser is we “flatten” it to a non-virtual array and send it to the laser like that. It’s as if the array was never virtual - just like it used to be.

In the future, we’ll be able to do the other option - sending the DSP a file that has only the single object and instructions of how to virtually array it out. The benefit to this is that the file you send is much smaller - which is good since DSPs usually only have 128-256 MB of onboard storage for job files.

But as it is now, you don’t need to worry about it. Just use the virtual array like you did the old arrays - just now with all the new features. We completely abstract everything else away for you.

1 Like

Just chiming in as another data point for 'people who use “cut selected/use selection origin” 99% of the time. It’d be great to have the virtual arrays be able to be stay ‘virtual’ but get output if selected. Thanks!

1 Like

It’s already been fixed and will be out in the next bugfix release (soon-ish).

Just my two cents on the new features :slightly_smiling_face:



One more question about the virtual arrays - the job origin is based at the corner of the original part, instead of respecting the outside boundary of all the parts when being output. Can this be corrected?

I believe it has. :wink:

  • Bugfix: render virtual arrays correctly when machine origin changes.

Hi Rick!

Running 1.0.01, screenshot below:

I think it’s related to ‘use selection origin’, which I guess makes sense as expected behaviour? We almost always run with ‘cut selected graphics’ and ‘use selection origin’ enabled, as we may have many parts laid out in a file and be cutting singles or groups on their own.

I guess (in my mind), in the way that selecting the primary array object and sending it as a job will send the entire array, then the outside boundary and origin would behave the same way. I’ve put in a couple of posts/feature requests relating to this concept (and how it relates to the alignment tools for example).

Make any sense at all? :slight_smile:

@opto thanks for reporting this!
It is 100% because you have “Use Selected Origin” checked. Virtual Arrays cannot be selected directly (this is intentional for a bunch of reasons) and as such it’s doing what it thinks is right, basing the origin off the selection only. Which is only that one shape.
I tried to make all this work in a way that seemed logical but as one often finds in the software world, most users don’t use it the way you expect :slight_smile: Which is totally fine! This is really helping me understand the various possible work flows better.

And actually, yeah - I think I can consider this particular use-case broken. The 1.0.01 patch release updated it so that selecting anything in a virtual array will cause that and all virtual copies to be output when “Cut Selected Graphics” is checked. But Since “Use Selection Origin” is basing it only off the single shape, that would cause placement problems most likely - or you’d have to just be aware and adjust accordingly. This will certainly have to be fixed, it’s just dependent on how we decide is the best and most user friendly to update it.

So I’ll pose this question: How would you want this to function?
Would you rather “Use Selection Origin” respect the entire array if anything in the array is selected?
Would it be better to you if I provided a way to select the virtual array objects in some way?

The latter is actually something Oz and I have discussed earlier today for very similar reasons.

We don’t have another release in the pipeline as of yet, though the v1.0 release makes doing patches like this easier - but I cannot guarantee a date this would be updated by. Certainly as soon as we possibly can make it happen.

In the mean time, your best bet will either be to avoid “Use Selection Origin” or to flatten the array.
You mentioned potentially selecting and cutting singles or groups of objects from an array on their own and I’m not 100% sure that will ever really be possible with virtual arrays - the intent was for everything to always be output. This is in part because of Part 2 of the virtual array plan which is to add hardware level support - some DSP controllers can do this in hardware and this would flow into that. So these things were meant to work together.
But now that I know that’s a potential workflow, I may be able to figure something out.
Stay tuned.

Firstly, let me say how nice it is to have such great developers that actually care how other people use it, instead of saying “you’re holding it wrong.” You guys are ace!

This is how I think I’d expect it to work. While everything about the virtual part of the arrays is awesome, I think it should ‘know’ how big it is overall, and respond accordingly. This would be for job origin, as well as alignment and actually outputting the job.

This one is more tricky. Being able to click any object (original or virtual) in the array to select the array would be useful, as I’ve certainly tried to do this repeatedly before remembering to pick the original. Perhaps clicking any item of the array could select the original.

No, apologies, I was unclear on this point. I don’t mean picking out single bits of the array, I just meant other objects in the file, as the reason ‘cut selected’ and ‘selection origin’ are always enabled. If I want a single bit of the array I can flatten, or resize, no worries!

Thanks Adam!

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.