Hi Bros, I'm JianBaoxia.
I get a BSPline surface, and points on the face, I want to get the curve between two points on the face.
I look for answer several days, but didn't success.
We did something like that on meshes, see re-define-contour command. The idea is to recursively snap a line connecting two successive points to the boundary of a model. It's possible to do the same thing on splines, but that's gonna be heavier because of intensive B-spline evaluation. Also, your model really looks like a reconstructed laser scan, so you could potentially reconsider the task as contouring on meshes.
Once a polyline is constructed and snapped, you can approximate it with a curve, then turn a curve to edge(s) and imprint it to the model with Boolean operation. There's a brief technical report on similar topic in our blog: http://quaoar.su/blog/page/on-geometric-imprinting-and-debugging-hints We used Booleans and another in-house algorithm.