In general you should use different assets for different types of things, because all units of an asset are fungible from the perspective of the blockchain. If you want to naturally express the conversion of asset units of type A into asset units of type B, I would recommend creating a single transaction which does all of the following:
a) takes some type A assets as an input (you can use preparelockunspentfrom to isolate them)
b) sends those type A assets to the chain's burnaddress (from getinfo). This means they can provably never be recovered.
c) follow-on issues some assets of type B in the same transaction
d) if appropriate, adds some metadata to represent what is going on
So it will be a single atomic operation on the blockchain that destroys assets of type A and creates assets of type B. You will need to have done the initial issuance of the type B ahead of time, with open=true, to allow these follow-on issuances. It will also help you if the same address which performed the original issuance of type B is sent the assets of type A, so that the signature on the single input of this transaction can be used both for burning the type A assets and issuing the type B ones.
There is no high-level API to do all this in a single transaction, so you should use the raw transactions interface: