Continuity conditions for MakePipe (or MakePipeShell) algorithms

Dear Sirs,

I am trying to build a face sweeping a profile along a spine using the BRepOffsetAPI_MakePipe class. The spine is a wire composed of one edge created from a BSpline curve with C1 continuity while the profile is an edge created from two points. The code I use to create the face is the following (quite basic):

BRepOffsetAPI_MakePipe pipe( spine, profile );
pipe.Build(); pipe.Check();

BRepTools::Write( pipe.Shape(), "swept.brep");

However, as you can see from the swept.brep file I have attached to the message, the swept face has irregularities at the end of the spine. How could these irregularities be generated? Is there any condition on the continuity (or regularity in general) of the spine I should satisfy before safely apply the MakePipe algorithm? Maybe having G2 continuity? If there is any condition, I do not see how I could increase the continuity of my curve in a very easy way...Do you have an advice on how I could fix this issue?

Thank you very much for your help,

Kind regards,

Paolo

Attachments: 
Paolo Tricerri's picture

Dear Sirs,

could please anyone help me finding the problem with my spine? I have tried different methods (MakePipe, MakePipeShell, GeomFill_Pipe) but the results are always wrong. I have attached an igs file with the spine and first and last sections along it. Those are the first and last sections I also pass to the GeomFill_Pipe.

Is there any problem with my spine?

Thanks for your help,

Regards
Paolo

Attachments: 
Paolo Tricerri's picture

Dear Sirs,

a small update. PEBKAC. I think I was asking OCC too much.

Although the spine for the algorithms is very close to a surface (on which in theory it should be defined on) it does not contain any information on the PCurve that describes this curve in the parametric space of the surface. I wanted to sweep along the spine an edge which is perpendicular to the tangent vector to the spine. The problem is that although at the starting point of the spine, the section is well defined, along the spine, there are infinite solutions to the condition tgDir.Dot( sectionAtThatPoint ) = 0, i.e. the problem was not well defined. "Constraining" more the problem, i.e. projecting the spine onto the face and checking that the projection has got a PCurve on the face, and then using the PipeShell algorithm loading the spine support fixes the problem, at least in the case I was working on.

Thanks
P.