These commands are done in the Debug Console. Select the gears icon on the right-hand-side of the wallet, and then Advanced Options, and the Console tab. They are done here because basecoin is not private and should not be used as a normal process in a private wallet.
A miner might give an almost one-word answer to the question, "How can I send Veil to a basecoin address?" by just saying "sendtoaddress, in the console", but this is only correct from the point of view of a miner who sends to an exchange to sell Veil without ever really using it! This is because they are mining to a basecoin balance.
sendtoaddress bvWhateverAddress Amount
is fine for that (sending from basecoin to basecoin), but most Veil in most wallets is either in the zerocoin balance or in stealth and ringct balances. Using the Veil wallet since 2018 (pre-release) I've almost never sent basecoin to basecoin, so sendtoaddress is not a usual command for a Veilien to use.
sendstealthtobasecoin bvAddress 1234
will send 1234 Veil from the stealth balance to a basecoin address.
Likewise, if your Veil is in your ringct balance, use
sendringcttobasecoin bvAddress 1234
To find out which states your Veil are in, just type getbalances.
The most common spending method in Veil is spending zerocoins. In the GUI (graphical interface) it will not allow a basecoin destination, so again, we go to the Debug Console. Probably the only common use for this is to send to an exchange, because if you were going to use Veil normally you would be sending to stealth (CT) with the svAddress, and/or minting to zerocoins.
The Debug Console allows any address as the recipient, including a bv (basecoin) address or an sv (stealth/ringct) address.
spendzerocoin 1234 false true 1 bvAddress
Of the spending commands, this is the only one where the amount is typed first. The other things (`false`, `true`, and `1`) answer (1) whether to mint any change back to zerocoin ("no-one" wants to do that, so I've assumed "false" as a good answer), (2) whether to minimize the amount of change (because of the first answer you will receive your change in your stealth (CT) balance, (3) is the security level, which used to affect how long the transaction would take, but is not relevant anymore.
If the recipient gives you a stealth address to send to, then you can use the graphical interface to send with, or just change the address in the spendzerocoin command to svAddressWhateveritis.
Lastly, with the above commands, the recipient will receive the exact amount specified "1234" in the examples.
While a zerocoin spend incurs no fee, as you've already paid a fee to mint each zerocoin, if you want you specify (with ringct, stealth, and basecoin sources) the amount to deduct from your source exactly (so as not to leave dust remaining in your balance), and the recipient to receive that minus the fee (usually barely a thousandth of one Veil), then you can simply add
"" "" true
to the end of any or all of the sendtoaddress, sendstealthto... or sendringctto... commands, such as
sendringcttobasecoin bvAddress 1234 "" "" true
Oh! Even more lastly! ;) The spendzerocoin command also allows you to specify which zerocoin denomination to spend from, if you want to override the usually good choice that the wallet will normally make.
Simply add
10
to the end of the spendzerocoin command to ensure it will only spend ten denomination zerocoins, for example
spendzerocoin 1000 false true 1 bvAddress 10
I've chosen 1000 as the amount, because zerocoins don't have single unit Veil amounts, so unless someone asked you to send them 1234 Veil, which would then break one more ten denom zerocoin and give you some change, it's most convenience to spend a multiple of the zerocoin denomination that you have. Furthermore, a multiple of 200 is good, because twenty zerocoins (times the ten denomination) is the most that will fit in a zerocoin spend. When spending 1000, it will automatically split it into five transactions! (I don't recommend spending much larger amounts directly in tens, such as fifty thousand, because the wallet will spend too much time calculating all of the transactions before any of them even begin to get accepted into blocks.)