BSplineSurface vs Plane Boolean Operation

I get different Boolean Operation results when I use a BSplineSurface vs a Plane.
I create a BSpline surface from a Plane by interpolation.
I then use that surface to get the common shape between said surface and a cylinder.
The result is a circular surface. When i inspect the edge on that surface it says that the edge is a BSplineCurve.
If i do the same set of operations but instead of a BSplineSurface I use a Plane i get that the edge is of type Circle.
Why do I get different results?
Is there a way to unify the results?
I also tried SimplfyResult(), but i get the same result.

Mikhail Sazonov's picture

Boolean operation does not change the type of geometry. And, when it produces new geometry as a result of intersection it relies on the result of surface-surface intersection algorithm. In particular, when plane is intersected with cylinder the result can be a circle, but if a planar b-spline surface is intersected with cylinder the result is always a b-spline curve.

If you want to obtain a canonical form of geometry you can compute it yourself using the special classes GeomConvert_SurfToAnaSurf and GeomConvert_CurveToAnaCurve.

Ibrahim Abouelseoud's picture

I see so if I understood correctly, no matter what is generated from an intersection of a BSplineSurface and any other geometry, the result will be of type BSpline. I will try using those classes, but from the documentation, they look like they're gonna do the job.

Would this also explain the difference in number of resulted shapes? For example sometimes I get 1 edge when I intersect a shape with a Planar face, but I will end up with two edges if I intersect the same shape with an identical planar BSplineSurface (by identical I mean that the intersection location and the BSpline surface and Planar Face are identical).

Thanks Mikhail!