I have had this problem with quite a few surveys that have only provided 2D information.
First of all I have a script that converts all 2D loci to 3D which I can post later.
Then the next script is still quite long winded.
What it does is if you select the text box with the spot height in it and the 3d loci, it will move the 3D loci in the Z axis to the value in the text box.
Surveys normally come in metres and I work millimetres so it times the value by 1000 to move it in mm you can delete that bit if you want.
{With a textbox and 3dloci selected it moves the 3D loci in the Z axis to the value in the text box}
PROCEDURE ConvTEXTto3DZ;
VAR
waldo,myHan,h,itemHdl : HANDLE;
index,colour : INTEGER;
Zme,locX,locY,locZ :REAL;
testString,criteria :STRING;
BEGIN
Locus(0,0);
waldo:=LNewObj;
myHan:=PrevObj(waldo);
DelObject(waldo);
itemHdl:= myHan;
colour:= 32;
WHILE (itemHdl <> NIL) DO BEGIN
CASE GetType(itemHdl) OF
10:BEGIN
testString:=GetText(itemHdl);
Zme:= Str2Num(testString);
locZ:= Zme * 1000; {converts meters to mm}
SetPenFore(itemhdl,colour);
END;
9:BEGIN
Move3DObj(itemHdl,0,0,locZ);
SetPenFore(itemhdl,colour);
END;
END;
itemHdl:= PrevSObj( itemhdl );
END;
END;
RUN(ConvTEXTto3DZ);
The script also colours both the text box and the 3D loci blue so I know which ones I have done.
It still leaves quite a bit of work to do but if you put the script on your right click menu you get through most surveys quite quickly.
If anyone has any other faster methods I would love to hear them.
Also thanks to waldo for the waldo handle method, I use it a lot.