Solid from Multiple profiles with a Spine (CATIA equivalent: MultiSectionsVolume)

Good Day,

i want to create a Solid with multiple Sections which are NOT on a straight line.
the sections are all different too: e.g. 2 circles, one rectangle.
in addition i want to specify a spine for the created solid (like it is possible with the BRepOffsetAPI_MakePipe).

is there a way to define a Spine for the BRepOffsetAPI_ThruSections or more generally what would be the best way to achieve the desired output?

Greetings Jens

Sharjith Naramparambath's picture

Did you try BRepOffsetAPI_MakePipeShell? After looking at the documentation of the constructors and methods it looks like that you could achieve what you want. The section shapes taken are limited to Wire and Points (at the ends). So the created loft will be a shell and not a solid. You could, however, cap the ends by building faces from the end wires and convert the shell to solid.

Regards,
Sharjith

Sharjith Naramparambath's picture

Correction: The class also has the method MakeSolid which converts the shell into a solid unless any of the profiles are open.

Sharjith Naramparambath's picture

Result from BRepOffsetAPI_MakePipeShell (See attached image)

BRepBuilderAPI_MakeWire MkWire(TopoDS::Edge(mySpine));
BRepOffsetAPI_MakePipeShell MkPipeShell(MkWire.Wire());
for(int i = 1; i <= mySeqOfSections->Length(); ++i)
{
MkPipeShell.Add(mySeqOfSections->Value(i));
}

if(MkPipeShell.IsReady())
{
MkPipeShell.Build();
MkPipeShell.MakeSolid();

TopoDS_Shape builtShape = MkPipeShell.Shape();
m_pDoc->GetAISContext()->Display(new AIS_Shape(builtShape));
}

Jens Schmidt's picture

Awesome! Just how i imagined it.
Thank you!