Im guessing your "certain condition" refers to a trigger running After Update on Order.
If that is the case, you should have no problem to query for the Opp's OppLineItems, create a new set based on the properties of this old set (all the variables you want to keep, except the ones that are system created like ID and such) and link them properly.
But you already seem to know that, what is specifically your problem at "getting the products to copy over?"
Do you have any sample code or anything that we could look at to help you?
As a wild guess, keep in mind that if you query an object you have to specify every field you want to fetch of it, for example, if you query an Account with the SOQL "[Select Name from Account Where SOMETHING]", and you create a new Account with the info you just fetched, you won't have anything else but the Name of it.
Hope any of this helped you and not complicated things more for you!
Cheers!