//================================================================ // Function : TexturesExt_Presentation::sampleBottle // Purpose : //================================================================ void TexturesExt_Presentation::sampleBottle() { TopoDS_Shape aShape; if (!loadShape(aShape, "bottle.brep")) return; // resize and move the shape to the center of the viewer gp_Trsf aTrsf1, aTrsf2; aTrsf1.SetScale(gp_Pnt(0,0,0), 0.8); aTrsf2.SetTranslation(gp_Pnt(0,0,0),gp_Pnt(0,0,-20)); aTrsf1.Multiply(aTrsf2); BRepBuilderAPI_Transform Transformer(aTrsf1); Transformer.Perform(aShape); aShape = Transformer.Shape(); TopTools_IndexedMapOfShape aFaces; TopExp::MapShapes(aShape, TopAbs_FACE, aFaces); // display original shape in shaded display mode Handle_AIS_Shape aShapeIO = drawShape(aShape, Graphic3d_NOM_BRASS, Standard_False); getAISContext()->SetDisplayMode(aShapeIO, AIS_Shaded, Standard_False); // Set increased polygon offset for the main shape to avoid depth collision with textured faces aShapeIO->SetPolygonOffsets(Aspect_POM_Fill, 1.5, 0.5); DISP(aShapeIO); Handle_AIS_TexturedShape aTFace1 = Texturize(aFaces(16), "carrelage1.gif", 1, 1, 3, 2); DISP(aTFace1); Handle_AIS_TexturedShape aTFace2 = Texturize(aFaces(21), "carrelage1.gif", 1, 1, 3, 2); DISP(aTFace2); getViewer()->Update(); }
void occQt::testCut() { gp_Ax2 anAxis; anAxis.SetLocation(gp_Pnt(0.0, 90.0, 0.0)); TopoDS_Shape aTopoBox = BRepPrimAPI_MakeBox(anAxis, 3.0, 4.0, 5.0); TopoDS_Shape aTopoSphere = BRepPrimAPI_MakeSphere(anAxis, 2.5); TopoDS_Shape aCuttedShape1 = BRepAlgoAPI_Cut(aTopoBox, aTopoSphere); TopoDS_Shape aCuttedShape2 = BRepAlgoAPI_Cut(aTopoSphere, aTopoBox); gp_Trsf aTrsf; aTrsf.SetTranslation(gp_Vec(8.0, 0.0, 0.0)); BRepBuilderAPI_Transform aTransform1(aCuttedShape1, aTrsf); aTrsf.SetTranslation(gp_Vec(16.0, 0.0, 0.0)); BRepBuilderAPI_Transform aTransform2(aCuttedShape2, aTrsf); Handle_AIS_Shape anAisBox = new AIS_Shape(aTopoBox); Handle_AIS_Shape anAisSphere = new AIS_Shape(aTopoSphere); Handle_AIS_Shape anAisCuttedShape1 = new AIS_Shape(aTransform1.Shape()); Handle_AIS_Shape anAisCuttedShape2 = new AIS_Shape(aTransform2.Shape()); anAisBox->SetColor(Quantity_NOC_SPRINGGREEN); anAisSphere->SetColor(Quantity_NOC_STEELBLUE); anAisCuttedShape1->SetColor(Quantity_NOC_TAN); anAisCuttedShape2->SetColor(Quantity_NOC_SALMON); mContext->Display(anAisBox); mContext->Display(anAisSphere); mContext->Display(anAisCuttedShape1); mContext->Display(anAisCuttedShape2); }
int main(int argc, char** argv) { QApplication app(argc, argv); Handle_V3d_Viewer occViewer = internal::createOccViewer(); Handle_AIS_InteractiveContext occContext = new AIS_InteractiveContext(occViewer); // Load BRep files specified at command line for (int i = 1; i < argc; ++i) { TopoDS_Shape shape; BRep_Builder brepBuilder; BRepTools::Read(shape, argv[i], brepBuilder); Handle_AIS_Shape aisShape = new AIS_Shape(shape); aisShape->SetMaterial(Graphic3d_NOM_PLASTIC); aisShape->SetDisplayMode(AIS_Shaded); aisShape->SetColor(Quantity_NOC_GRAY50); aisShape->Attributes()->SetFaceBoundaryDraw(Standard_True); occContext->Display(aisShape, i == (argc - 1)); } occ::QtView qtView(occContext); new QtViewController(&qtView); qtView.show(); return app.exec(); }
void occQt::makeBox() { TopoDS_Shape aTopoBox = BRepPrimAPI_MakeBox(3.0, 4.0, 5.0); Handle_AIS_Shape anAisBox = new AIS_Shape(aTopoBox); anAisBox->SetColor(Quantity_NOC_AZURE); mContext->Display(anAisBox); }
void occQt::makeSphere() { gp_Ax2 anAxis; anAxis.SetLocation(gp_Pnt(0.0, 20.0, 0.0)); TopoDS_Shape aTopoSphere = BRepPrimAPI_MakeSphere(anAxis, 3.0); Handle_AIS_Shape anAisSphere = new AIS_Shape(aTopoSphere); anAisSphere->SetColor(Quantity_NOC_BLUE1); mContext->Display(anAisSphere); }
void occQt::makeFillet() { gp_Ax2 anAxis; anAxis.SetLocation(gp_Pnt(0.0, 50.0, 0.0)); TopoDS_Shape aTopoBox = BRepPrimAPI_MakeBox(anAxis, 3.0, 4.0, 5.0); BRepFilletAPI_MakeFillet MF(aTopoBox); // Add all the edges to fillet. for (TopExp_Explorer ex(aTopoBox, TopAbs_EDGE); ex.More(); ex.Next()) { MF.Add(1.0, TopoDS::Edge(ex.Current())); } Handle_AIS_Shape anAisShape = new AIS_Shape(MF.Shape()); anAisShape->SetColor(Quantity_NOC_VIOLET); mContext->Display(anAisShape); }
void occQt::makeTorus() { gp_Ax2 anAxis; anAxis.SetLocation(gp_Pnt(0.0, 40.0, 0.0)); TopoDS_Shape aTopoTorus = BRepPrimAPI_MakeTorus(anAxis, 3.0, 1.0); Handle_AIS_Shape anAisTorus = new AIS_Shape(aTopoTorus); anAisTorus->SetColor(Quantity_NOC_YELLOW); anAxis.SetLocation(gp_Pnt(8.0, 40.0, 0.0)); TopoDS_Shape aTopoElbow = BRepPrimAPI_MakeTorus(anAxis, 3.0, 1.0, M_PI_2); Handle_AIS_Shape anAisElbow = new AIS_Shape(aTopoElbow); anAisElbow->SetColor(Quantity_NOC_THISTLE); mContext->Display(anAisTorus); mContext->Display(anAisElbow); }
void occQt::makeCylinder() { gp_Ax2 anAxis; anAxis.SetLocation(gp_Pnt(0.0, 30.0, 0.0)); TopoDS_Shape aTopoCylinder = BRepPrimAPI_MakeCylinder(anAxis, 3.0, 5.0); Handle_AIS_Shape anAisCylinder = new AIS_Shape(aTopoCylinder); anAisCylinder->SetColor(Quantity_NOC_RED); anAxis.SetLocation(gp_Pnt(8.0, 30.0, 0.0)); TopoDS_Shape aTopoPie = BRepPrimAPI_MakeCylinder(anAxis, 3.0, 5.0, M_PI_2 * 3.0); Handle_AIS_Shape anAisPie = new AIS_Shape(aTopoPie); anAisPie->SetColor(Quantity_NOC_TAN); mContext->Display(anAisCylinder); mContext->Display(anAisPie); }
void occQt::makeCone() { gp_Ax2 anAxis; anAxis.SetLocation(gp_Pnt(0.0, 10.0, 0.0)); TopoDS_Shape aTopoReducer = BRepPrimAPI_MakeCone(anAxis, 3.0, 1.5, 5.0); Handle_AIS_Shape anAisReducer = new AIS_Shape(aTopoReducer); anAisReducer->SetColor(Quantity_NOC_BISQUE); anAxis.SetLocation(gp_Pnt(8.0, 10.0, 0.0)); TopoDS_Shape aTopoCone = BRepPrimAPI_MakeCone(anAxis, 3.0, 0.0, 5.0); Handle_AIS_Shape anAisCone = new AIS_Shape(aTopoCone); anAisCone->SetColor(Quantity_NOC_CHOCOLATE); mContext->Display(anAisReducer); mContext->Display(anAisCone); }
void occQt::testCommon() { gp_Ax2 anAxis; anAxis.SetLocation(gp_Pnt(0.0, 110.0, 0.0)); TopoDS_Shape aTopoBox = BRepPrimAPI_MakeBox(anAxis, 3.0, 4.0, 5.0); TopoDS_Shape aTopoSphere = BRepPrimAPI_MakeSphere(anAxis, 2.5); TopoDS_Shape aCommonShape = BRepAlgoAPI_Common(aTopoBox, aTopoSphere); gp_Trsf aTrsf; aTrsf.SetTranslation(gp_Vec(8.0, 0.0, 0.0)); BRepBuilderAPI_Transform aTransform(aCommonShape, aTrsf); Handle_AIS_Shape anAisBox = new AIS_Shape(aTopoBox); Handle_AIS_Shape anAisSphere = new AIS_Shape(aTopoSphere); Handle_AIS_Shape anAisCommonShape = new AIS_Shape(aTransform.Shape()); anAisBox->SetColor(Quantity_NOC_SPRINGGREEN); anAisSphere->SetColor(Quantity_NOC_STEELBLUE); anAisCommonShape->SetColor(Quantity_NOC_ROYALBLUE); mContext->Display(anAisBox); mContext->Display(anAisSphere); mContext->Display(anAisCommonShape); }
void occQt::makeLoft() { // bottom wire. TopoDS_Edge aCircleEdge = BRepBuilderAPI_MakeEdge(gp_Circ(gp_Ax2(gp_Pnt(0.0, 80.0, 0.0), gp::DZ()), 1.5)); TopoDS_Wire aCircleWire = BRepBuilderAPI_MakeWire(aCircleEdge); // top wire. BRepBuilderAPI_MakePolygon aPolygon; aPolygon.Add(gp_Pnt(-3.0, 77.0, 6.0)); aPolygon.Add(gp_Pnt(3.0, 77.0, 6.0)); aPolygon.Add(gp_Pnt(3.0, 83.0, 6.0)); aPolygon.Add(gp_Pnt(-3.0, 83.0, 6.0)); aPolygon.Close(); BRepOffsetAPI_ThruSections aShellGenerator; BRepOffsetAPI_ThruSections aSolidGenerator(true); aShellGenerator.AddWire(aCircleWire); aShellGenerator.AddWire(aPolygon.Wire()); aSolidGenerator.AddWire(aCircleWire); aSolidGenerator.AddWire(aPolygon.Wire()); // translate the solid. gp_Trsf aTrsf; aTrsf.SetTranslation(gp_Vec(18.0, 0.0, 0.0)); BRepBuilderAPI_Transform aTransform(aSolidGenerator.Shape(), aTrsf); Handle_AIS_Shape anAisShell = new AIS_Shape(aShellGenerator.Shape()); Handle_AIS_Shape anAisSolid = new AIS_Shape(aTransform.Shape()); anAisShell->SetColor(Quantity_NOC_OLIVEDRAB); anAisSolid->SetColor(Quantity_NOC_PEACHPUFF); mContext->Display(anAisShell); mContext->Display(anAisSolid); }
void occQt::makeChamfer() { gp_Ax2 anAxis; anAxis.SetLocation(gp_Pnt(8.0, 50.0, 0.0)); TopoDS_Shape aTopoBox = BRepPrimAPI_MakeBox(anAxis, 3.0, 4.0, 5.0); BRepFilletAPI_MakeChamfer MC(aTopoBox); TopTools_IndexedDataMapOfShapeListOfShape aEdgeFaceMap; TopExp::MapShapesAndAncestors(aTopoBox, TopAbs_EDGE, TopAbs_FACE, aEdgeFaceMap); for (Standard_Integer i = 1; i <= aEdgeFaceMap.Extent(); ++i) { TopoDS_Edge anEdge = TopoDS::Edge(aEdgeFaceMap.FindKey(i)); TopoDS_Face aFace = TopoDS::Face(aEdgeFaceMap.FindFromIndex(i).First()); MC.Add(0.6, 0.6, anEdge, aFace); } Handle_AIS_Shape anAisShape = new AIS_Shape(MC.Shape()); anAisShape->SetColor(Quantity_NOC_TOMATO); mContext->Display(anAisShape); }
void occQt::makeRevol() { gp_Ax1 anAxis; // revol a vertex result is an edge. anAxis.SetLocation(gp_Pnt(0.0, 70.0, 0.0)); TopoDS_Vertex aVertex = BRepBuilderAPI_MakeVertex(gp_Pnt(2.0, 70.0, 0.0)); TopoDS_Shape aRevolVertex = BRepPrimAPI_MakeRevol(aVertex, anAxis); Handle_AIS_Shape anAisRevolVertex = new AIS_Shape(aRevolVertex); // revol an edge result is a face. anAxis.SetLocation(gp_Pnt(8.0, 70.0, 0.0)); TopoDS_Edge anEdge = BRepBuilderAPI_MakeEdge(gp_Pnt(6.0, 70.0, 0.0), gp_Pnt(6.0, 70.0, 5.0)); TopoDS_Shape aRevolEdge = BRepPrimAPI_MakeRevol(anEdge, anAxis); Handle_AIS_Shape anAisRevolEdge = new AIS_Shape(aRevolEdge); // revol a wire result is a shell. anAxis.SetLocation(gp_Pnt(20.0, 70.0, 0.0)); anAxis.SetDirection(gp::DY()); TopoDS_Edge aCircleEdge = BRepBuilderAPI_MakeEdge(gp_Circ(gp_Ax2(gp_Pnt(15.0, 70.0, 0.0), gp::DZ()), 1.5)); TopoDS_Wire aCircleWire = BRepBuilderAPI_MakeWire(aCircleEdge); TopoDS_Shape aRevolCircle = BRepPrimAPI_MakeRevol(aCircleWire, anAxis, M_PI_2); Handle_AIS_Shape anAisRevolCircle = new AIS_Shape(aRevolCircle); // revol a face result is a solid. anAxis.SetLocation(gp_Pnt(30.0, 70.0, 0.0)); anAxis.SetDirection(gp::DY()); TopoDS_Edge aEllipseEdge = BRepBuilderAPI_MakeEdge(gp_Elips(gp_Ax2(gp_Pnt(25.0, 70.0, 0.0), gp::DZ()), 3.0, 2.0)); TopoDS_Wire aEllipseWire = BRepBuilderAPI_MakeWire(aEllipseEdge); TopoDS_Face aEllipseFace = BRepBuilderAPI_MakeFace(gp_Pln(gp::XOY()), aEllipseWire); TopoDS_Shape aRevolEllipse = BRepPrimAPI_MakeRevol(aEllipseFace, anAxis, M_PI_4); Handle_AIS_Shape anAisRevolEllipse = new AIS_Shape(aRevolEllipse); anAisRevolVertex->SetColor(Quantity_NOC_LIMEGREEN); anAisRevolEdge->SetColor(Quantity_NOC_LINEN); anAisRevolCircle->SetColor(Quantity_NOC_MAGENTA1); anAisRevolEllipse->SetColor(Quantity_NOC_MAROON); mContext->Display(anAisRevolVertex); mContext->Display(anAisRevolEdge); mContext->Display(anAisRevolCircle); mContext->Display(anAisRevolEllipse); }
void occQt::makeExtrude() { // prism a vertex result is an edge. TopoDS_Vertex aVertex = BRepBuilderAPI_MakeVertex(gp_Pnt(0.0, 60.0, 0.0)); TopoDS_Shape aPrismVertex = BRepPrimAPI_MakePrism(aVertex, gp_Vec(0.0, 0.0, 5.0)); Handle_AIS_Shape anAisPrismVertex = new AIS_Shape(aPrismVertex); // prism an edge result is a face. TopoDS_Edge anEdge = BRepBuilderAPI_MakeEdge(gp_Pnt(5.0, 60.0, 0.0), gp_Pnt(10.0, 60.0, 0.0)); TopoDS_Shape aPrismEdge = BRepPrimAPI_MakePrism(anEdge, gp_Vec(0.0, 0.0, 5.0)); Handle_AIS_Shape anAisPrismEdge = new AIS_Shape(aPrismEdge); // prism a wire result is a shell. gp_Ax2 anAxis; anAxis.SetLocation(gp_Pnt(16.0, 60.0, 0.0)); TopoDS_Edge aCircleEdge = BRepBuilderAPI_MakeEdge(gp_Circ(anAxis, 3.0)); TopoDS_Wire aCircleWire = BRepBuilderAPI_MakeWire(aCircleEdge); TopoDS_Shape aPrismCircle = BRepPrimAPI_MakePrism(aCircleWire, gp_Vec(0.0, 0.0, 5.0)); Handle_AIS_Shape anAisPrismCircle = new AIS_Shape(aPrismCircle); // prism a face or a shell result is a solid. anAxis.SetLocation(gp_Pnt(24.0, 60.0, 0.0)); TopoDS_Edge aEllipseEdge = BRepBuilderAPI_MakeEdge(gp_Elips(anAxis, 3.0, 2.0)); TopoDS_Wire aEllipseWire = BRepBuilderAPI_MakeWire(aEllipseEdge); TopoDS_Face aEllipseFace = BRepBuilderAPI_MakeFace(gp_Pln(gp::XOY()), aEllipseWire); TopoDS_Shape aPrismEllipse = BRepPrimAPI_MakePrism(aEllipseFace, gp_Vec(0.0, 0.0, 5.0)); Handle_AIS_Shape anAisPrismEllipse = new AIS_Shape(aPrismEllipse); anAisPrismVertex->SetColor(Quantity_NOC_PAPAYAWHIP); anAisPrismEdge->SetColor(Quantity_NOC_PEACHPUFF); anAisPrismCircle->SetColor(Quantity_NOC_PERU); anAisPrismEllipse->SetColor(Quantity_NOC_PINK); mContext->Display(anAisPrismVertex); mContext->Display(anAisPrismEdge); mContext->Display(anAisPrismCircle); mContext->Display(anAisPrismEllipse); }