Получается такой контур.
Не очень подходит. (
А что вообще планируешь контурить? Это один дом на площадке или оцифровка жилого квартала? А то возможно ты или руководство питаете сверх ожидания от алгоритма...такое тоже бывает).
Для данного случая скорее всего нужно найти точку внешнего контура, например например точку с максимальным Y. Затем обходишь контур по часовой стрелке. Определяешь угол на плоскости первого вектора, а затем определять изменение угла от предыдущего. Изменение угла должно быть только 90, 180, 270, с учетом погрешности.
Убедись что тебе точно нужен подобный не универсальный алгоритм. Как вариант есть готовое решение, подгружаешь точки в Civil 3D, строишь контур поверхности, в цивиле есть инструменты для перестройки контура и ребер, убираешь лишнее, получаешь свой контур.