@aerilius said:
Geom::Point3d.== method checks for example if all coordinates (x, y, z) are equal, and then says two points are equal.
uniq appears to check for identity and not for equality.
In Ruby 2.x (SketchUp 2014+,) where we now have a block form of the uniq method, that we can tailor to override C internals of the uniq! method, and tell it what and how to do the comparison.
Ex:
pts = roof.uniq {|a,b| a.==(b) }
or:
pts = roof.uniq {|pt| pt.to_a }
In the future, perhaps, custom uniq methods could be added to a new PointArray subclass of Array., for the API.
Of course any author could create such a custom class within their own namespace(s).
ALSO.. the many od the API classes should have had their eql?() method aliased as the overridden ==() method.
The uniq methods want to call eql?() instead of ==().