GetPerpendicularVector is only worth something in 2d as there are an infinite number of perpendiculars to a 3d vector.
A bit of a roundabout but this works.
Dim org As New Point3d(0, 0, 0)
Dim xAxis3d As New Vector3d(1, 0, 0)
Dim v3d As New Vector3d(1, 1, 1)
Dim p As New Plane(org, xAxis3d, v3d)
Dim xAxis2d As Vector2d = xAxis3d.Convert2d(p)
Dim yAxis2d As Vector2d = xAxis2d.GetPerpendicularVector()
Dim m As Matrix3d = Matrix3d.PlaneToWorld(p)
Dim yAxis3d As New Vector3d(yAxis2d.X, yAxis2d.Y, 0)
yAxis3d = yAxis3d.TransformBy(m)
Chris Arps