It's not as difficult as it might seem. How you read things using
nlread() is completely analogous to how you put them in, using
nlsave(). If you want a bit more detailed control of this process, it's recommended to add your own labels and ids to identify a particular data set, as discussed in the manual:
http://quantumwise.com/documents/manuals/ATK-2009.11/ReferenceManual/ref.nlsave.html. These can later be used to retrieve the same data set uniquely.
What happens when you use VNL to set up the script, is that no custom ids are (currently) used, instead they are autogenerated, as you can see if you select the NC file in VNL (in the main window).
So instead of extracting the transmission as your script does, you could do
transmission_spectrum = nlread("/home/zjl/JOB/Si_0_0.nc",object_id=XYZ)
where XYZ is the ID you can get by looking into the NC file in VNL.
The more explicit version of the code for the example you used is really
transmission_spectrum = nlread("/home/zjl/JOB/Si_0_0.nc",class_type=TransmissionSpectrum)
This simply means "read alla transmission spectra from the NC file". If there is only one, then naturally you will use
transmission_spectrum[0], but if there were several (for different bias, typically) you would also be interested in
transmission_spectrum[1],
transmission_spectrum[2], etc. Then it can get a bit messy if you don't directly know which bias each one corresponds to, so using ID's both on
nlsave() and
nlread() might help, but you can actually extract the bias from the transmission spectrum object itself, so it's not strictly necessary.