Sorry for the a**-backwards way I do this. I tried using more trig and just "position object" and it wouldn't work after many head desks and broken keyboards.
Function PositionObjectAtCursor(IDNumber, GroundHeight)
OriginalRotation = Object Angle Y(IDNumber)
DistanceFromCamera = tan(90-Camera Angle X()) * (Camera Position Y()-GroundHeight)
Position Object IDNumber, Camera Position X(), GroundHeight, Camera Position Z()
Rotate Object IDNumber, 0 , Object Angle Y(IDNumber) - Object Angle Y(IDNumber) + Camera Angle Y(), 0
Move Object IDNumber, DistanceFromCamera
Rotate Object IDNumber, 0 , Object Angle Y(IDNumber) - Object Angle Y(IDNumber) + OriginalRotation, 0
EndFunction
This will place the object halfway into the ground.
Add "Object Size Y(IDNumber) / 2" to the GroundHeight in Position Object to have it sit on ground.
I hope this comes in handy for people!
Feedback/Optimization is welcome.