Поверхностные пересечения с ОТКРЫТЫМ КАСКАДОМ

У меня проблема с пересечением двух поверхностей. Первый обрезается, а второй не обрезается.

Я использую BRepAlgoAPI_Section пересечь две поверхности и получить ребра пересечения (в моем случае только одну):

Это мой код, здесь я делаю пересечение:

TopoDS_Face trimface, face;

BRepAlgoAPI_Section ffsect( trimface, face, Standard_True);
ffsect.Approximation(Standard_True);
ffsect.Build();

Здесь я перебираю края раздела. Для каждого края я создаю TopoDS_Edge поставить на экран.

Standard_Real pFirst, pLast;    

TopTools_ListOfShape edges = ffsect.SectionEdges();

TopTools_ListIteratorOfListOfShape eIter(edges);
while ( eIter.More() ) {

    // For each edge I create a TopoDS_Edge object and I put it on screen   
    TopoDS_Edge edge = TopoDS::Edge(eIter.Value());         
    Handle(AIS_Shape) anAisEdge;
    anAisEdge = new AIS_Shape(edge);
    anAisEdge->SetColor(Quantity_NOC_RED);
    anAisEdge->SetWidth(2.0);
    // get my Ais_InteractiveContext
    myOccView->getContext()->Display(anAisEdge);

    // Create a Geom_BSplineCurve from edge
    Handle(Geom_BSplineCurve) myCurve =     Handle(Geom_BSplineCurve)::DownCast(BRep_Tool::Curve(edge, pFirst, pLast));

    // Now create a TopoDS_Edge from my curve 
    TopoDS_Edge edge2 = BRepBuilderAPI_MakeEdge(myCurve);
    Handle(AIS_Shape) anAisEdge2;
    anAisEdge2 = new AIS_Shape(edge2);
    anAisEdge2->SetColor(Quantity_NOC_RED);
    anAisEdge2->SetWidth(2.0);
    myOccView->getContext()->Display(anAisEdge2);

    eIter.Next();
}

Если я проверю отдельно дисплей на экране anAisEdge а также anAisEdge2 Я получаю два разных результата. Я не понимаю почему. На двух изображениях вверху первый дисплей, а внизу второй.

введите описание изображения здесь

1 ответ

В документации OCC для класса BRepBuilderAPI_MakeEdge указано, что "Если кривая является усеченной кривой, используется базисная кривая". В этом случае, я думаю, вы должны непосредственно указать необходимые значения параметров кривой в конструкторе BRepBuilderAPI_MakeEdge.

Другие вопросы по тегам