Thanks for your thoughts TIG.
Inside our ruby we use just 'beam_group'. I added $beam_group = beam_group to the ruby to make it easier to debug the problem the client is having.
I asked him to type in just $beam_group and report the results, but he failed to do that.
Our ruby file does trace the value of beam_group just before the error occurs, ("beam_group: #Sketchup::Group:0xfa63fec"), so it is probably an actual group. If it something else, (except for a few things), then $beam_group.copy would return an error rather than nil.
It is difficult to determine whether it made a copy and failed to report it, since the client is in a different time continent and time zone.
You are right about empty groups, I just tried:
$beam_group.entities.clear! and
$beam_group.copy
and if worked (returned a non nil value).
And, (of course
) The whole process works on my machine.
I will ask him to run all this in an empty model, so I can see what the beam group looked like before it tried to copy it and if anything did get copied. (The whole process stops after the error on the next line when I try to use the 'nil' copy.
This is all part of a ruby which creates parallel semi-transparent light beams to emulate a smokey light effect.