How to get outer points of a curved terrain?

Something like this should work for 2018

def outer_edges
  sel = Sketchup.active_model.selection
  edges = sel.grep(Sketchup::Edge)
  edges.find_all { |edge| edge.faces.one? { |face| sel.include?(face) } }
end

def sort_points(edges)
  last_edge = edges.pop
  sorted = [last_edge]
  for i in (0..(edges.count - 1)) do
    last_edge = edges.find do |edge| 
      edge.start.position == last_edge.start.position || 
        edge.start.position == last_edge.end.position || 
        edge.end.position == last_edge.start.position || 
        edge.end.position == last_edge.end.position 
    end
    sorted.push(last_edge)
    edges.delete(last_edge)
  end
  sorted.map { |e| [e.start.position, e.end.position] }.flatten.uniq(&:to_s)
end

sort_points(outer_edges)
1 Like