At last!! Something that works.
Thank you Nems and Frazzle!!!!!!!

Code:
function create_objects()
{
var distTrace;
wait(1);
c_setminmax(me);
my.polygon = on;
vec_set(temp, my.x);
vec_sub(temp, vector(0,0,1000));
trace_mode= ignore_me | ignore_passable | use_box;
distTrace = c_trace(my.x,temp,trace_mode);
if (distTrace> 0)
{
my.z -= distTrace;
}
}


string object2_mdl = <tepee_village.mdl>;


//example function
function place_object2()
{
temp.x = 200; // place the object 200 quants in front of the creator
temp.y = 0;
temp.z = 200;
vec_rotate (temp, player.pan);//be carefull to set "current_player" to your player name.
vec_add (temp, player.x);
ent_create(object2_mdl, temp.x, create_objects);
while(!me){wait(1);}


ang_add(normal,my.tilt); //this doesn't work
vec_to_angle(my.tilt,normal); //this doesn't work
}

on_y = place_object2();



The function only placed the model on the surface if the surface was lower than the model. Changing temp.z to 200 cured that.

I tried with the last two lines to get the model to set flat on a hillside. No luck there.

This doesn't exactly fit my needs, but at least I know it can be done on terrain that is mdl and not hmp. I will find a way to adapt it.

The goat is happy...spared for the time being. And many thanx to all you fine gurus who contributed to this thread.