No not really. I (and other sages) often break down operations into smaller statements so that newb Rubyists can see the simple steps more clearly.
I can of course write it all in one statement, that does not init named references:
jamb_right.transformation.origin + [section_width - 1.5,0,flr_chan_ded]
It is the opposite.
move!() purposely does not insert entries into the undo log, and was made specifically for animation situations.
In normal operations it is always best to allow the user to undo logical editing operations. See the methods for
Oh you need COPIES. You did not say this in your original post. That is a bit easier, but still requires a transformation object.
As Bruce showed above, you can use the matrix multiplication method to apply your movement vector. (Ruby is multi- paradigm.):
movement = Geom::Vector3d::new(
[ section_width - 1.5, 0, flr_chan_ded ]
copy = model.active_entities.add_instance(
orig.transformation * Geom::Transformation::new(movement)
* The above statements are shown multi-line only for clarity. (You can remove all the linefeeds if you prefer really long single line statements.)