IMPLEMENT_DYNCREATE(CViewer3dDoc, CDocument)
-BEGIN_MESSAGE_MAP(CViewer3dDoc, OCC_3dBaseDoc)
- //{{AFX_MSG_MAP(CViewer3dDoc)
- ON_COMMAND(ID_BOX, OnBox)
- ON_COMMAND(ID_Cylinder, OnCylinder)
- ON_COMMAND(ID_SPHERE, OnSphere)
- ON_COMMAND(ID_ERASEALL, OnRemoveAll)
- ON_COMMAND(ID_NBISOS, OnNbisos)
- ON_COMMAND(ID_FACES, OnFaces)
- ON_COMMAND(ID_EDGES, OnEdges)
- ON_COMMAND(ID_VERTICES, OnVertices)
- ON_COMMAND(ID_NEUTRAL, OnNeutral)
- ON_COMMAND(ID_USERCYLINDER_CHANGEFACECOLOR, OnUsercylinderChangefacecolor)
- ON_COMMAND(ID_FILLET3D, OnFillet3d)
- ON_COMMAND(ID_CIRCLE, OnCircle)
- ON_COMMAND(ID_LINE, OnLine)
- ON_COMMAND(ID_OVERLAPPED_BOX, OnOverlappedBox)
- ON_COMMAND(ID_OVERLAPPED_CYLINDER, OnOverlappedCylinder)
- ON_COMMAND(ID_OVERLAPPED_SPHERE, OnOverlappedSphere)
- ON_COMMAND(ID_POLYGON_OFFSETS, OnPolygonOffsets)
- ON_UPDATE_COMMAND_UI(ID_POLYGON_OFFSETS, OnUpdatePolygonOffsets)
- ON_UPDATE_COMMAND_UI(ID_Cylinder, OnUpdateCylinder)
- ON_UPDATE_COMMAND_UI(ID_SPHERE, OnUpdateSphere)
- ON_UPDATE_COMMAND_UI(ID_BOX, OnUpdateBox)
- ON_UPDATE_COMMAND_UI(ID_OVERLAPPED_CYLINDER, OnUpdateOverlappedCylinder)
- ON_UPDATE_COMMAND_UI(ID_OVERLAPPED_SPHERE, OnUpdateOverlappedSphere)
- ON_UPDATE_COMMAND_UI(ID_OVERLAPPED_BOX, OnUpdateOverlappedBox)
- ON_COMMAND(ID_OBJECT_REMOVE, OnObjectRemove)
- ON_COMMAND(ID_OBJECT_ERASE, OnObjectErase)
- ON_COMMAND(ID_OBJECT_DISPLAYALL, OnObjectDisplayall)
- ON_COMMAND(ID_OBJECT_COLORED_MESH, OnObjectColoredMesh)
- ON_UPDATE_COMMAND_UI(ID_OBJECT_COLORED_MESH, OnUpdateObjectColoredMesh)
- ON_UPDATE_COMMAND_UI(ID_OBJECT_SHADING, OnUpdateObjectShading)
- ON_UPDATE_COMMAND_UI(ID_OBJECT_WIREFRAME, OnUpdateObjectWireframe)
- ON_COMMAND(ID_OPTIONS_TRIHEDRON_DYNAMIC_TRIHEDRON, OnOptionsTrihedronDynamicTrihedron)
- ON_UPDATE_COMMAND_UI(ID_OPTIONS_TRIHEDRON_DYNAMIC_TRIHEDRON, OnUpdateOptionsTrihedronDynamicTrihedron)
- ON_UPDATE_COMMAND_UI(ID_OPTIONS_TRIHEDRON_STATIC_TRIHEDRON, OnUpdateOptionsTrihedronStaticTrihedron)
- ON_COMMAND(ID_OBJECT_MATERIAL, OnObjectMaterial)
- ON_COMMAND(ID_TEXTURE_ON, OnTextureOn)
- ON_COMMAND(ID_BUTTONNext, OnBUTTONNext)
- ON_COMMAND(ID_BUTTONStart, OnBUTTONStart)
- ON_COMMAND(ID_BUTTONRepeat, OnBUTTONRepeat)
- ON_COMMAND(ID_BUTTONPrev, OnBUTTONPrev)
- ON_COMMAND(ID_BUTTONEnd, OnBUTTONEnd)
- ON_UPDATE_COMMAND_UI(ID_BUTTONNext, OnUpdateBUTTONNext)
- ON_UPDATE_COMMAND_UI(ID_BUTTONPrev, OnUpdateBUTTONPrev)
- ON_UPDATE_COMMAND_UI(ID_BUTTONStart, OnUpdateBUTTONStart)
- ON_UPDATE_COMMAND_UI(ID_BUTTONRepeat, OnUpdateBUTTONRepeat)
- ON_UPDATE_COMMAND_UI(ID_BUTTONEnd, OnUpdateBUTTONEnd)
- ON_COMMAND(ID_FILE_NEW, OnFileNew)
- ON_COMMAND(ID_DUMP_VIEW, OnDumpView)
- //}}AFX_MSG_MAP
+BEGIN_MESSAGE_MAP(CViewer3dDoc, OCC_3dDoc)
+ //{{AFX_MSG_MAP(CViewer3dDoc)
+ ON_COMMAND(ID_BOX, OnBox)
+ ON_COMMAND(ID_Cylinder, OnCylinder)
+ ON_COMMAND(ID_SPHERE, OnSphere)
+ ON_COMMAND(ID_ERASEALL, OnRemoveAll)
+ ON_COMMAND(ID_NBISOS, OnNbisos)
+ ON_COMMAND(ID_FACES, OnFaces)
+ ON_COMMAND(ID_EDGES, OnEdges)
+ ON_COMMAND(ID_VERTICES, OnVertices)
+ ON_COMMAND(ID_NEUTRAL, OnNeutral)
+ ON_COMMAND(ID_USERCYLINDER_CHANGEFACECOLOR, OnUsercylinderChangefacecolor)
+ ON_COMMAND(ID_FILLET3D, OnFillet3d)
+ ON_COMMAND(ID_CIRCLE, OnCircle)
+ ON_COMMAND(ID_LINE, OnLine)
+ ON_COMMAND(ID_OVERLAPPED_BOX, OnOverlappedBox)
+ ON_COMMAND(ID_OVERLAPPED_CYLINDER, OnOverlappedCylinder)
+ ON_COMMAND(ID_OVERLAPPED_SPHERE, OnOverlappedSphere)
+ ON_COMMAND(ID_POLYGON_OFFSETS, OnPolygonOffsets)
+ ON_UPDATE_COMMAND_UI(ID_POLYGON_OFFSETS, OnUpdatePolygonOffsets)
+ ON_UPDATE_COMMAND_UI(ID_Cylinder, OnUpdateCylinder)
+ ON_UPDATE_COMMAND_UI(ID_SPHERE, OnUpdateSphere)
+ ON_UPDATE_COMMAND_UI(ID_BOX, OnUpdateBox)
+ ON_UPDATE_COMMAND_UI(ID_OVERLAPPED_CYLINDER, OnUpdateOverlappedCylinder)
+ ON_UPDATE_COMMAND_UI(ID_OVERLAPPED_SPHERE, OnUpdateOverlappedSphere)
+ ON_UPDATE_COMMAND_UI(ID_OVERLAPPED_BOX, OnUpdateOverlappedBox)
+ ON_COMMAND(ID_OBJECT_REMOVE, OnObjectRemove)
+ ON_COMMAND(ID_OBJECT_ERASE, OnObjectErase)
+ ON_COMMAND(ID_OBJECT_DISPLAYALL, OnObjectDisplayall)
+ ON_COMMAND(ID_OBJECT_COLORED_MESH, OnObjectColoredMesh)
+ ON_UPDATE_COMMAND_UI(ID_OBJECT_COLORED_MESH, OnUpdateObjectColoredMesh)
+ ON_UPDATE_COMMAND_UI(ID_OBJECT_SHADING, OnUpdateObjectShading)
+ ON_UPDATE_COMMAND_UI(ID_OBJECT_WIREFRAME, OnUpdateObjectWireframe)
+ ON_COMMAND(ID_OPTIONS_TRIHEDRON_DYNAMIC_TRIHEDRON, OnOptionsTrihedronDynamicTrihedron)
+ ON_UPDATE_COMMAND_UI(ID_OPTIONS_TRIHEDRON_DYNAMIC_TRIHEDRON, OnUpdateOptionsTrihedronDynamicTrihedron)
+ ON_UPDATE_COMMAND_UI(ID_OPTIONS_TRIHEDRON_STATIC_TRIHEDRON, OnUpdateOptionsTrihedronStaticTrihedron)
+ ON_COMMAND(ID_OBJECT_MATERIAL, OnObjectMaterial)
+ ON_COMMAND(ID_TEXTURE_ON, OnTextureOn)
+ ON_COMMAND(ID_BUTTONNext, OnBUTTONNext)
+ ON_COMMAND(ID_BUTTONStart, OnBUTTONStart)
+ ON_COMMAND(ID_BUTTONRepeat, OnBUTTONRepeat)
+ ON_COMMAND(ID_BUTTONPrev, OnBUTTONPrev)
+ ON_COMMAND(ID_BUTTONEnd, OnBUTTONEnd)
+ ON_UPDATE_COMMAND_UI(ID_BUTTONNext, OnUpdateBUTTONNext)
+ ON_UPDATE_COMMAND_UI(ID_BUTTONPrev, OnUpdateBUTTONPrev)
+ ON_UPDATE_COMMAND_UI(ID_BUTTONStart, OnUpdateBUTTONStart)
+ ON_UPDATE_COMMAND_UI(ID_BUTTONRepeat, OnUpdateBUTTONRepeat)
+ ON_UPDATE_COMMAND_UI(ID_BUTTONEnd, OnUpdateBUTTONEnd)
+ ON_COMMAND(ID_FILE_NEW, OnFileNew)
+ ON_COMMAND(ID_DUMP_VIEW, OnDumpView)
+ //}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
CViewer3dDoc::CViewer3dDoc()
:OCC_3dDoc()
{
- myCylinder.Nullify();
- mySphere.Nullify();
- myBox.Nullify();
- myOverlappedCylinder.Nullify();
- myOverlappedSphere.Nullify();
- myOverlappedBox.Nullify();
- myOffsetDlg = NULL;
- myStaticTrihedronAxisIsDisplayed = FALSE;
- myState = -1;
+ myCylinder.Nullify();
+ mySphere.Nullify();
+ myBox.Nullify();
+ myOverlappedCylinder.Nullify();
+ myOverlappedSphere.Nullify();
+ myOverlappedBox.Nullify();
+ myOffsetDlg = NULL;
+ myStaticTrihedronAxisIsDisplayed = FALSE;
+ myState = -1;
- isTextureSampleStarted = FALSE;
+ isTextureSampleStarted = FALSE;
- myPresentation = OCCDemo_Presentation::Current;
- myPresentation->SetDocument(this);
+ myPresentation = OCCDemo_Presentation::Current;
+ myPresentation->SetDocument(this);
- myAISContext->DefaultDrawer()->ShadingAspect()->SetColor(Quantity_NOC_CHARTREUSE1);
- myAISContext->DefaultDrawer()->ShadingAspect()->SetMaterial(Graphic3d_NOM_SILVER);
+ myAISContext->DefaultDrawer()->ShadingAspect()->SetColor(Quantity_NOC_CHARTREUSE1);
+ myAISContext->DefaultDrawer()->ShadingAspect()->SetMaterial(Graphic3d_NOM_SILVER);
- strcpy_s(myDataDir, "Data");
- strcpy_s(myLastPath, ".");
+ strcpy_s(myDataDir, "Data");
+ strcpy_s(myLastPath, ".");
- /*
- Handle(AIS_Trihedron) myTrihedron;
- Handle(Geom_Axis2Placement) myTrihedronAxis=new Geom_Axis2Placement(gp::XOY());
- myTrihedron=new AIS_Trihedron(myTrihedronAxis);
- myAISContext->Display(myTrihedron);
- */
+ /*
+ Handle(AIS_Trihedron) myTrihedron;
+ Handle(Geom_Axis2Placement) myTrihedronAxis=new Geom_Axis2Placement(gp::XOY());
+ myTrihedron=new AIS_Trihedron(myTrihedronAxis);
+ myAISContext->Display(myTrihedron);
+ */
}
CViewer3dDoc::~CViewer3dDoc()
#ifdef _DEBUG
void CViewer3dDoc::AssertValid() const
{
- CDocument::AssertValid();
+ CDocument::AssertValid();
}
void CViewer3dDoc::Dump(CDumpContext& dc) const
{
- CDocument::Dump(dc);
+ CDocument::Dump(dc);
}
#endif //_DEBUG
void CViewer3dDoc::UpdateResultMessageDlg (CString theTitle, const TCollection_AsciiString& theMessage)
{
- CString aText (theMessage.ToCString());
- myCResultDialog.SetText (aText);
- myCResultDialog.SetTitle(theTitle);
+ CString aText (theMessage.ToCString());
+ myCResultDialog.SetText (aText);
+ myCResultDialog.SetTitle(theTitle);
}
void CViewer3dDoc::UpdateResultMessageDlg(CString theTitle, CString theMessage)
myCResultDialog.SetTitle(theTitle);
}
-void CViewer3dDoc::OnBox()
+void CViewer3dDoc::OnBox()
{
- if(myBox.IsNull()){
- BRepPrimAPI_MakeBox B(gp_Pnt(0,-400,-100), 200.,150.,100.);
+ if(myBox.IsNull())
+ {
+ BRepPrimAPI_MakeBox B(gp_Pnt(0,-400,-100), 200.,150.,100.);
- myBox = new AIS_Shape(B.Shape());
+ myBox = new AIS_Shape(B.Shape());
- myAISContext->SetMaterial(myBox,Graphic3d_NOM_PEWTER);
- myAISContext->SetDisplayMode(myBox,1);
+ myAISContext->SetMaterial(myBox,Graphic3d_NOM_PEWTER);
+ myAISContext->SetDisplayMode(myBox,1);
- myAISContext->Display(myBox);
- TCollection_AsciiString Message("\
+ myAISContext->Display(myBox);
+ TCollection_AsciiString Message("\
BRepPrimAPI_MakeBox Box1(gp_Pnt(0,-400,-100), 200.,150.,100.);\n\
- ");
-
- UpdateResultMessageDlg("Create Box",Message);
+ ");
- }
+ UpdateResultMessageDlg("Create Box",Message);
+ }
}
-void CViewer3dDoc::OnCylinder()
+void CViewer3dDoc::OnCylinder()
{
- if(myCylinder.IsNull()) {
- gp_Ax2 CylAx2(gp_Pnt(0,0,-100), gp_Dir(gp_Vec(gp_Pnt(0,0,-100),gp_Pnt(0,0,100))));
-
- //BRepPrimAPI_MakeCylinder C(CylAx2, 80.,200.);
-
- myCylinder = new User_Cylinder(CylAx2, 80.,200.);
-
-// myCylinder = new AIS_Shape(C.Shape());
-/*
- myCylinder->SetTransparency(0.5);
+ if(myCylinder.IsNull())
+ {
+ gp_Ax2 CylAx2(gp_Pnt(0,0,-100), gp_Dir(gp_Vec(gp_Pnt(0,0,-100),gp_Pnt(0,0,100))));
+ myCylinder = new User_Cylinder(CylAx2, 80.,200.);
- myAISContext->SetColor(myCylinder,Quantity_NOC_WHITE);
- myAISContext->SetMaterial(myCylinder,Graphic3d_NOM_SHINY_PLASTIC);
-*/
- myAISContext->SetDisplayMode(myCylinder,1);
+ myAISContext->SetDisplayMode(myCylinder,1);
- myAISContext->Display(myCylinder);
+ myAISContext->Display(myCylinder);
- TCollection_AsciiString Message("\
+ TCollection_AsciiString Message("\
gp_Ax2 CylAx2(gp_Pnt(0,0,-100), gp_Dir(gp_Vec(gp_Pnt(0,0,-100),gp_Pnt(0,0,100))));\n\
C = new User_Cylinder(CylAx2, 80.,200.);;\n\
- ");
-
- UpdateResultMessageDlg("Create Cylinder",Message);
+ ");
- }
+ UpdateResultMessageDlg("Create Cylinder",Message);
+ }
}
-void CViewer3dDoc::OnSphere()
+void CViewer3dDoc::OnSphere()
{
- if(mySphere.IsNull()){
- BRepPrimAPI_MakeSphere S(gp_Pnt(0,300,0), 100.);
+ if(mySphere.IsNull())
+ {
+ BRepPrimAPI_MakeSphere S(gp_Pnt(0,300,0), 100.);
+
+ mySphere = new AIS_Shape(S.Shape());
- mySphere = new AIS_Shape(S.Shape());
-
- myAISContext->SetMaterial(mySphere,Graphic3d_NOM_BRONZE);
- myAISContext->SetDisplayMode(mySphere,1);
+ myAISContext->SetMaterial(mySphere,Graphic3d_NOM_BRONZE);
+ myAISContext->SetDisplayMode(mySphere,1);
- myAISContext->Display(mySphere);
- TCollection_AsciiString Message("\
+ myAISContext->Display(mySphere);
+ TCollection_AsciiString Message("\
BRepPrimAPI_MakeSphere S(gp_Pnt(0,300,0), 100.);\n\
- ");
- UpdateResultMessageDlg("Create Sphere",Message);
- }
+ ");
+ UpdateResultMessageDlg("Create Sphere",Message);
+ }
}
-void CViewer3dDoc::OnRemoveAll()
+void CViewer3dDoc::OnRemoveAll()
{
- AIS_ListOfInteractive aListOfObjects;
- myAISContext->ObjectsInside(aListOfObjects,AIS_KOI_Shape);
+ AIS_ListOfInteractive aListOfObjects;
+ myAISContext->ObjectsInside(aListOfObjects,AIS_KOI_Shape);
- AIS_ListIteratorOfListOfInteractive aListIterator;
- for(aListIterator.Initialize(aListOfObjects);aListIterator.More();aListIterator.Next()){
- myAISContext->Remove(aListIterator.Value());
- }
+ AIS_ListIteratorOfListOfInteractive aListIterator;
+ for(aListIterator.Initialize(aListOfObjects);aListIterator.More();aListIterator.Next()){
+ myAISContext->Remove(aListIterator.Value());
+ }
- myAISContext->Remove(myCylinder);
+ myAISContext->Remove(myCylinder);
- myCylinder.Nullify();
- mySphere.Nullify();
- myBox.Nullify();
- myOverlappedCylinder.Nullify();
- myOverlappedSphere.Nullify();
- myOverlappedBox.Nullify();
- if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
- myOffsetDlg->UpdateValues();
+ myCylinder.Nullify();
+ mySphere.Nullify();
+ myBox.Nullify();
+ myOverlappedCylinder.Nullify();
+ myOverlappedSphere.Nullify();
+ myOverlappedBox.Nullify();
+ if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
+ myOffsetDlg->UpdateValues();
}
void CViewer3dDoc::OnOverlappedBox()
{
- OnBox();
- if(myOverlappedBox.IsNull()){
- BRepPrimAPI_MakeBox B(gp_Pnt(0,-400,-100), 200.,150.,100.);
+ OnBox();
+ if(myOverlappedBox.IsNull()){
+ BRepPrimAPI_MakeBox B(gp_Pnt(0,-400,-100), 200.,150.,100.);
- BRepBuilderAPI_NurbsConvert aNurbsConvert(B.Shape());
- TopoDS_Shape aBoxShape2 = aNurbsConvert.Shape();
+ BRepBuilderAPI_NurbsConvert aNurbsConvert(B.Shape());
+ TopoDS_Shape aBoxShape2 = aNurbsConvert.Shape();
- myOverlappedBox = new AIS_Shape(aBoxShape2);
+ myOverlappedBox = new AIS_Shape(aBoxShape2);
- myAISContext->SetMaterial(myOverlappedBox,Graphic3d_NOM_GOLD);
- myAISContext->SetDisplayMode(myOverlappedBox,1);
+ myAISContext->SetMaterial(myOverlappedBox,Graphic3d_NOM_GOLD);
+ myAISContext->SetDisplayMode(myOverlappedBox,1);
- myAISContext->Display(myOverlappedBox);
- TCollection_AsciiString Message("\
+ myAISContext->Display(myOverlappedBox);
+ TCollection_AsciiString Message("\
BRepPrimAPI_MakeBox Box1(gp_Pnt(0,-400,-100), 200.,150.,100.);\n\
\n\
BRepPrimAPI_MakeBox Box2(gp_Pnt(0,-400,-100), 200.,150.,100.);\n\
BRepBuilderAPI_NurbsConvert aNurbsConvert(Box2.Shape());\n\
- ");
- UpdateResultMessageDlg("Create overlapped boxes",Message);
- if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
- myOffsetDlg->UpdateValues();
-
-
- }
+ ");
+ UpdateResultMessageDlg("Create overlapped boxes",Message);
+ if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
+ myOffsetDlg->UpdateValues();
+ }
}
-void CViewer3dDoc::OnOverlappedCylinder()
+void CViewer3dDoc::OnOverlappedCylinder()
{
- OnCylinder();
+ OnCylinder();
+
+ if(myOverlappedCylinder.IsNull()){
+ gp_Ax2 CylAx2(gp_Pnt(0,0,-100), gp_Dir(gp_Vec(gp_Pnt(0,0,-100),gp_Pnt(0,0,100))));
+ BRepPrimAPI_MakeCylinder C(CylAx2, 80.,200.);
- if(myOverlappedCylinder.IsNull()){
- gp_Ax2 CylAx2(gp_Pnt(0,0,-100), gp_Dir(gp_Vec(gp_Pnt(0,0,-100),gp_Pnt(0,0,100))));
- BRepPrimAPI_MakeCylinder C(CylAx2, 80.,200.);
+ BRepBuilderAPI_NurbsConvert aNurbsConvert(C.Shape());
+ TopoDS_Shape aCylShape2 = aNurbsConvert.Shape();
- BRepBuilderAPI_NurbsConvert aNurbsConvert(C.Shape());
- TopoDS_Shape aCylShape2 = aNurbsConvert.Shape();
+ myOverlappedCylinder = new AIS_Shape(aCylShape2);
- myOverlappedCylinder = new AIS_Shape(aCylShape2);
-
- myAISContext->SetMaterial(myOverlappedCylinder,Graphic3d_NOM_GOLD);
- myAISContext->SetDisplayMode(myOverlappedCylinder,1);
+ myAISContext->SetMaterial(myOverlappedCylinder,Graphic3d_NOM_GOLD);
+ myAISContext->SetDisplayMode(myOverlappedCylinder,1);
- myAISContext->Display(myOverlappedCylinder);
+ myAISContext->Display(myOverlappedCylinder);
- TCollection_AsciiString Message("\
+ TCollection_AsciiString Message("\
gp_Ax2 CylAx2(gp_Pnt(0,0,-100), gp_Dir(gp_Vec(gp_Pnt(0,0,-100),gp_Pnt(0,0,100))));\n\
Cylinder1 = new User_Cylinder(CylAx2, 80.,200.);\n\
\n\
BRepPrimAPI_MakeCylinder Cylinder2(CylAx2, 80.,200.);\n\
BRepBuilderAPI_NurbsConvert aNurbsConvert(Cylinder2.Shape());\n\
- ");
- UpdateResultMessageDlg("Create overlapped cylinders",Message);
- if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
- myOffsetDlg->UpdateValues();
-
- }
+ ");
+ UpdateResultMessageDlg("Create overlapped cylinders",Message);
+ if (myOffsetDlg && myOffsetDlg->IsWindowVisible())
+ {
+ myOffsetDlg->UpdateValues();
+ }
+ }
}
-void CViewer3dDoc::OnOverlappedSphere()
+void CViewer3dDoc::OnOverlappedSphere()
{
- OnSphere();
- if(myOverlappedSphere.IsNull()){
- BRepPrimAPI_MakeSphere S(gp_Pnt(0,300,0), 100.);
+ OnSphere();
+ if(myOverlappedSphere.IsNull()){
+ BRepPrimAPI_MakeSphere S(gp_Pnt(0,300,0), 100.);
- BRepBuilderAPI_NurbsConvert aNurbsConvert(S.Shape());
- TopoDS_Shape aSphereShape2 = aNurbsConvert.Shape();
+ BRepBuilderAPI_NurbsConvert aNurbsConvert(S.Shape());
+ TopoDS_Shape aSphereShape2 = aNurbsConvert.Shape();
- myOverlappedSphere = new AIS_Shape(aSphereShape2);
+ myOverlappedSphere = new AIS_Shape(aSphereShape2);
- myAISContext->SetMaterial(myOverlappedSphere,Graphic3d_NOM_GOLD);
+ myAISContext->SetMaterial(myOverlappedSphere,Graphic3d_NOM_GOLD);
- myAISContext->SetDisplayMode(myOverlappedSphere,1);
+ myAISContext->SetDisplayMode(myOverlappedSphere,1);
- myAISContext->Display(myOverlappedSphere);
+ myAISContext->Display(myOverlappedSphere);
- TCollection_AsciiString Message("\
+ TCollection_AsciiString Message("\
BRepPrimAPI_MakeSphere Sphere1(gp_Pnt(0,300,0), 100.);\n\
\n\
BRepPrimAPI_MakeSphere Sphere2(gp_Pnt(0,300,0), 100.);\n\
BRepBuilderAPI_NurbsConvert aNurbsConvert(Sphere2.Shape());\n\
- ");
- UpdateResultMessageDlg("Create overlapped spheres",Message);
- if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
- myOffsetDlg->UpdateValues();
-
- }
+ ");
+ UpdateResultMessageDlg("Create overlapped spheres",Message);
+ if (myOffsetDlg && myOffsetDlg->IsWindowVisible())
+ {
+ myOffsetDlg->UpdateValues();
+ }
+ }
}
-void CViewer3dDoc::OnPolygonOffsets()
+void CViewer3dDoc::OnPolygonOffsets()
{
-
- myOffsetDlg = new COffsetDlg(this);
- myOffsetDlg->Create(COffsetDlg::IDD,NULL);
- myAISContext->UpdateCurrentViewer();
-
+ myOffsetDlg = new COffsetDlg(this);
+ myOffsetDlg->Create(COffsetDlg::IDD,NULL);
+ myAISContext->UpdateCurrentViewer();
}
void CViewer3dDoc::OnUpdatePolygonOffsets(CCmdUI* pCmdUI)
{
- Standard_Integer aOffsetMode;
- Standard_ShortReal aFactor;
- Standard_ShortReal aCylUnits = 0;
- Standard_ShortReal aSphereUnits = 0;
- Standard_ShortReal aBoxUnits = 0;
-
- BOOL IsOverlappedCylinderDisplayed = myAISContext->IsDisplayed(myOverlappedCylinder);
- BOOL IsOverlappedSphereDisplayed = myAISContext->IsDisplayed(myOverlappedSphere);
- BOOL IsOverlappedBoxDisplayed = myAISContext->IsDisplayed(myOverlappedBox);
- BOOL IsAnyOverlappedObjectDisplayed =
- IsOverlappedCylinderDisplayed || IsOverlappedSphereDisplayed || IsOverlappedBoxDisplayed;
-
- if(!myOverlappedCylinder.IsNull() && IsOverlappedCylinderDisplayed){
- myOverlappedCylinder->PolygonOffsets(aOffsetMode,aFactor,aCylUnits);
- }
-
- if(!myOverlappedSphere.IsNull() && IsOverlappedSphereDisplayed){
- myOverlappedSphere->PolygonOffsets(aOffsetMode,aFactor,aSphereUnits);
- }
-
- if(!myOverlappedBox.IsNull() && IsOverlappedBoxDisplayed){
- myOverlappedBox->PolygonOffsets(aOffsetMode,aFactor,aBoxUnits);
- }
-
- if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
- pCmdUI->SetCheck(TRUE);
- else
- pCmdUI->SetCheck(FALSE);
- if (IsAnyOverlappedObjectDisplayed)
- if(myOffsetDlg)
- pCmdUI->Enable(!myOffsetDlg->IsWindowVisible());
- else
- pCmdUI->Enable(TRUE);
- else
- pCmdUI->Enable(FALSE);
-
-
+ Standard_Integer aOffsetMode;
+ Standard_ShortReal aFactor;
+ Standard_ShortReal aCylUnits = 0;
+ Standard_ShortReal aSphereUnits = 0;
+ Standard_ShortReal aBoxUnits = 0;
+
+ BOOL IsOverlappedCylinderDisplayed = myAISContext->IsDisplayed(myOverlappedCylinder);
+ BOOL IsOverlappedSphereDisplayed = myAISContext->IsDisplayed(myOverlappedSphere);
+ BOOL IsOverlappedBoxDisplayed = myAISContext->IsDisplayed(myOverlappedBox);
+ BOOL IsAnyOverlappedObjectDisplayed =
+ IsOverlappedCylinderDisplayed || IsOverlappedSphereDisplayed || IsOverlappedBoxDisplayed;
+
+ if(!myOverlappedCylinder.IsNull() && IsOverlappedCylinderDisplayed){
+ myOverlappedCylinder->PolygonOffsets(aOffsetMode,aFactor,aCylUnits);
+ }
+
+ if(!myOverlappedSphere.IsNull() && IsOverlappedSphereDisplayed){
+ myOverlappedSphere->PolygonOffsets(aOffsetMode,aFactor,aSphereUnits);
+ }
+
+ if(!myOverlappedBox.IsNull() && IsOverlappedBoxDisplayed){
+ myOverlappedBox->PolygonOffsets(aOffsetMode,aFactor,aBoxUnits);
+ }
+
+ if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
+ pCmdUI->SetCheck(TRUE);
+ else
+ pCmdUI->SetCheck(FALSE);
+ if (IsAnyOverlappedObjectDisplayed)
+ if(myOffsetDlg)
+ pCmdUI->Enable(!myOffsetDlg->IsWindowVisible());
+ else
+ pCmdUI->Enable(TRUE);
+ else
+ pCmdUI->Enable(FALSE);
}
-void CViewer3dDoc::OnUpdateCylinder(CCmdUI* pCmdUI)
+void CViewer3dDoc::OnUpdateCylinder(CCmdUI* pCmdUI)
{
- pCmdUI->Enable(myCylinder.IsNull());
-
+ pCmdUI->Enable(myCylinder.IsNull());
}
-void CViewer3dDoc::OnUpdateSphere(CCmdUI* pCmdUI)
+void CViewer3dDoc::OnUpdateSphere(CCmdUI* pCmdUI)
{
- pCmdUI->Enable(mySphere.IsNull());
-
+ pCmdUI->Enable(mySphere.IsNull());
}
-void CViewer3dDoc::OnUpdateBox(CCmdUI* pCmdUI)
+void CViewer3dDoc::OnUpdateBox(CCmdUI* pCmdUI)
{
- pCmdUI->Enable(myBox.IsNull());
-
+ pCmdUI->Enable(myBox.IsNull());
}
-void CViewer3dDoc::OnUpdateOverlappedCylinder(CCmdUI* pCmdUI)
+void CViewer3dDoc::OnUpdateOverlappedCylinder(CCmdUI* pCmdUI)
{
- pCmdUI->Enable (myOverlappedCylinder.IsNull()
- || myCylinder.IsNull());
-
+ pCmdUI->Enable (myOverlappedCylinder.IsNull()
+ || myCylinder.IsNull());
+
}
-void CViewer3dDoc::OnUpdateOverlappedSphere(CCmdUI* pCmdUI)
+void CViewer3dDoc::OnUpdateOverlappedSphere(CCmdUI* pCmdUI)
{
- pCmdUI->Enable (myOverlappedSphere.IsNull()
- || mySphere.IsNull());
+ pCmdUI->Enable (myOverlappedSphere.IsNull()
+ || mySphere.IsNull());
}
-void CViewer3dDoc::OnUpdateOverlappedBox(CCmdUI* pCmdUI)
+void CViewer3dDoc::OnUpdateOverlappedBox(CCmdUI* pCmdUI)
{
- pCmdUI->Enable (myOverlappedBox.IsNull()
- || myBox.IsNull());
+ pCmdUI->Enable (myOverlappedBox.IsNull()
+ || myBox.IsNull());
}
-void CViewer3dDoc::OnObjectRemove()
-
+void CViewer3dDoc::OnObjectRemove()
{
+ if(myAISContext->IsCurrent(myBox))
+ myBox.Nullify();
- if(myAISContext->IsCurrent(myBox))
- myBox.Nullify();
+ if(myAISContext->IsCurrent(myCylinder))
+ myCylinder.Nullify();
- if(myAISContext->IsCurrent(myCylinder))
- myCylinder.Nullify();
+ if(myAISContext->IsCurrent(mySphere))
+ mySphere.Nullify();
- if(myAISContext->IsCurrent(mySphere))
- mySphere.Nullify();
+ if(myAISContext->IsCurrent(myOverlappedBox))
+ myOverlappedBox.Nullify();
- if(myAISContext->IsCurrent(myOverlappedBox))
- myOverlappedBox.Nullify();
+ if(myAISContext->IsCurrent(myOverlappedCylinder))
+ myOverlappedCylinder.Nullify();
- if(myAISContext->IsCurrent(myOverlappedCylinder))
- myOverlappedCylinder.Nullify();
+ if(myAISContext->IsCurrent(myOverlappedSphere))
+ myOverlappedSphere.Nullify();
- if(myAISContext->IsCurrent(myOverlappedSphere))
- myOverlappedSphere.Nullify();
-
- for(myAISContext->InitCurrent();myAISContext->MoreCurrent();myAISContext->InitCurrent())
- myAISContext->Remove(myAISContext->Current(),Standard_True);
-
- if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
- myOffsetDlg->UpdateValues();
+ for(myAISContext->InitCurrent();myAISContext->MoreCurrent();myAISContext->InitCurrent())
+ myAISContext->Remove(myAISContext->Current(),Standard_True);
+ if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
+ myOffsetDlg->UpdateValues();
}
-void CViewer3dDoc::OnObjectErase()
+void CViewer3dDoc::OnObjectErase()
{
- OCC_3dBaseDoc::OnObjectErase();
- if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
- myOffsetDlg->UpdateValues();
+ OCC_3dBaseDoc::OnObjectErase();
+ if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
+ myOffsetDlg->UpdateValues();
}
-void CViewer3dDoc::OnObjectDisplayall()
+void CViewer3dDoc::OnObjectDisplayall()
{
- OCC_3dBaseDoc::OnObjectDisplayall();
- if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
- myOffsetDlg->UpdateValues();
+ OCC_3dBaseDoc::OnObjectDisplayall();
+ if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
+ myOffsetDlg->UpdateValues();
}
-Handle_User_Cylinder CViewer3dDoc::GetCylinder()
+Handle(User_Cylinder) CViewer3dDoc::GetCylinder()
{
- return myCylinder;
+ return myCylinder;
}
-Handle_AIS_Shape CViewer3dDoc::GetSphere()
+Handle(AIS_Shape) CViewer3dDoc::GetSphere()
{
- return mySphere;
+ return mySphere;
}
-Handle_AIS_Shape CViewer3dDoc::GetBox()
+Handle(AIS_Shape) CViewer3dDoc::GetBox()
{
- return myBox;
+ return myBox;
}
-Handle_AIS_Shape CViewer3dDoc::GetOverlappedCylinder()
+Handle(AIS_Shape) CViewer3dDoc::GetOverlappedCylinder()
{
- return myOverlappedCylinder;
+ return myOverlappedCylinder;
}
-Handle_AIS_Shape CViewer3dDoc::GetOverlappedSphere()
+Handle(AIS_Shape) CViewer3dDoc::GetOverlappedSphere()
{
- return myOverlappedSphere;
+ return myOverlappedSphere;
}
-Handle_AIS_Shape CViewer3dDoc::GetOverlappedBox()
+Handle(AIS_Shape) CViewer3dDoc::GetOverlappedBox()
{
- return myOverlappedBox;
+ return myOverlappedBox;
}
-void CViewer3dDoc::DragEvent(const Standard_Integer x ,
- const Standard_Integer y ,
- const Standard_Integer TheState ,
- const Handle(V3d_View)& aView )
+void CViewer3dDoc::DragEvent (const Standard_Integer theX,
+ const Standard_Integer theY,
+ const Standard_Integer theState,
+ const Handle(V3d_View)& theView)
{
- OCC_3dBaseDoc::DragEvent(x,y, TheState,aView);
- if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
- myOffsetDlg->UpdateValues();
+ OCC_3dBaseDoc::DragEvent (theX, theY, theState, theView);
+ if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
+ myOffsetDlg->UpdateValues();
}
//-----------------------------------------------------------------------------------------
myAISContext->InitSelected();
if (myAISContext->MoreSelected())
{
- Handle_AIS_InteractiveObject Current = myAISContext->SelectedInteractive();
+ Handle(AIS_InteractiveObject) Current = myAISContext->SelectedInteractive();
if (Current->HasColor())
{
CSFColor = myAISContext->Color (Current);
GetBValue (MSColor)/255.0,
Quantity_TOC_RGB);
- TopoDS_Shape S = myAISContext->SelectedShape();
- Handle(Geom_Surface) Surface = BRep_Tool::Surface (TopoDS::Face(S));
- if (Surface->IsKind (STANDARD_TYPE (Geom_Plane)))
- {
- Handle(User_Cylinder)::DownCast (myAISContext->SelectedInteractive())
- ->SetPlanarFaceColor (CSFColor.Name());
- }
- else
- {
- Handle(User_Cylinder)::DownCast (myAISContext->SelectedInteractive())
- ->SetCylindricalFaceColor (CSFColor.Name());
- }
-
- myAISContext->Redisplay (myAISContext->SelectedInteractive());
+ Handle(AIS_InteractiveObject) aSelectedObject = myAISContext->SelectedInteractive();
+ Handle(User_Cylinder)::DownCast (aSelectedObject)->SetColor (CSFColor.Name());
+
+ myAISContext->Redisplay (aSelectedObject);
myState = -1;
myAISContext->CloseLocalContext();
}
//-----------------------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------------------
-void CViewer3dDoc::ShiftDragEvent(const Standard_Integer x ,
- const Standard_Integer y ,
- const Standard_Integer TheState ,
- const Handle(V3d_View)& aView )
+void CViewer3dDoc::ShiftDragEvent (const Standard_Integer theX,
+ const Standard_Integer theY,
+ const Standard_Integer theState,
+ const Handle(V3d_View)& theView)
{
- OCC_3dBaseDoc::ShiftDragEvent(x,y,TheState,aView);
+ OCC_3dBaseDoc::ShiftDragEvent(theX, theY, theState, theView);
if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
myOffsetDlg->UpdateValues();
}
//-----------------------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------------------
-
-void CViewer3dDoc::ShiftInputEvent(const Standard_Integer x ,
- const Standard_Integer y ,
- const Handle(V3d_View)& aView )
+void CViewer3dDoc::ShiftInputEvent (const Standard_Integer theX,
+ const Standard_Integer theY,
+ const Handle(V3d_View)& theView)
{
- OCC_3dBaseDoc::ShiftInputEvent(x,y,aView);
+ OCC_3dBaseDoc::ShiftInputEvent (theX, theY, theView);
if(myOffsetDlg && myOffsetDlg->IsWindowVisible())
myOffsetDlg->UpdateValues();
}
-void CViewer3dDoc::OnObjectColoredMesh()
+void CViewer3dDoc::OnObjectColoredMesh()
{
for(myAISContext->InitCurrent();myAISContext->MoreCurrent();myAISContext->NextCurrent())
if (myAISContext->Current()->IsKind(STANDARD_TYPE(User_Cylinder)))
}
}
-void CViewer3dDoc::OnUpdateObjectColoredMesh(CCmdUI* pCmdUI)
+void CViewer3dDoc::OnUpdateObjectColoredMesh(CCmdUI* pCmdUI)
{
bool CylinderIsCurrentAndDisplayed = false;
for (myAISContext->InitCurrent();myAISContext->MoreCurrent ();myAISContext->NextCurrent ())
- if(myAISContext->Current()->IsKind(STANDARD_TYPE(User_Cylinder)))
- CylinderIsCurrentAndDisplayed=true;
- pCmdUI->Enable (CylinderIsCurrentAndDisplayed);
+ if(myAISContext->Current()->IsKind(STANDARD_TYPE(User_Cylinder)))
+ CylinderIsCurrentAndDisplayed=true;
+ pCmdUI->Enable (CylinderIsCurrentAndDisplayed);
}
-void CViewer3dDoc::OnUpdateObjectWireframe(CCmdUI* pCmdUI)
+void CViewer3dDoc::OnUpdateObjectWireframe(CCmdUI* pCmdUI)
{
bool OneOrMoreInShadingOrColoredMesh = false;
for (myAISContext->InitCurrent();myAISContext->MoreCurrent ();myAISContext->NextCurrent ())
if (myAISContext->IsDisplayed(myAISContext->Current(),1) || myAISContext->IsDisplayed(myAISContext->Current(),6))
- OneOrMoreInShadingOrColoredMesh=true;
- pCmdUI->Enable (OneOrMoreInShadingOrColoredMesh);
+ OneOrMoreInShadingOrColoredMesh=true;
+ pCmdUI->Enable (OneOrMoreInShadingOrColoredMesh);
}
-void CViewer3dDoc::OnUpdateObjectShading(CCmdUI* pCmdUI)
+void CViewer3dDoc::OnUpdateObjectShading(CCmdUI* pCmdUI)
{
bool OneOrMoreInWireframeOrColoredMesh = false;
for (myAISContext->InitCurrent();myAISContext->MoreCurrent ();myAISContext->NextCurrent ())
if (myAISContext->IsDisplayed(myAISContext->Current(),0) || myAISContext->IsDisplayed(myAISContext->Current(),6))
- OneOrMoreInWireframeOrColoredMesh=true;
- pCmdUI->Enable (OneOrMoreInWireframeOrColoredMesh);
+ OneOrMoreInWireframeOrColoredMesh=true;
+ pCmdUI->Enable (OneOrMoreInWireframeOrColoredMesh);
}
-
-void CViewer3dDoc::OnOptionsTrihedronDynamicTrihedron()
+void CViewer3dDoc::OnOptionsTrihedronDynamicTrihedron()
{
- if (myAISContext -> IsDisplayed(myTrihedron))
- {
- myAISContext->Remove(myTrihedron);
- }
- else
- {
- Handle(Geom_Axis2Placement) myTrihedronAxis=new Geom_Axis2Placement(gp::XOY());
- myTrihedron=new AIS_Trihedron(myTrihedronAxis);
- myAISContext->SetTrihedronSize(200, Standard_True);
- myAISContext->Display(myTrihedron);
- }
+ if (myAISContext -> IsDisplayed(myTrihedron))
+ {
+ myAISContext->Remove(myTrihedron);
+ }
+ else
+ {
+ Handle(Geom_Axis2Placement) myTrihedronAxis=new Geom_Axis2Placement(gp::XOY());
+ myTrihedron=new AIS_Trihedron(myTrihedronAxis);
+ myAISContext->SetTrihedronSize(200, Standard_True);
+ myAISContext->Display(myTrihedron);
+ }
}
-void CViewer3dDoc::OnUpdateOptionsTrihedronDynamicTrihedron(CCmdUI* pCmdUI)
+void CViewer3dDoc::OnUpdateOptionsTrihedronDynamicTrihedron(CCmdUI* pCmdUI)
{
- if (myAISContext->IsDisplayed(myTrihedron))
- pCmdUI->SetCheck(1);
- else
- pCmdUI->SetCheck(0);
+ if (myAISContext->IsDisplayed(myTrihedron))
+ pCmdUI->SetCheck(1);
+ else
+ pCmdUI->SetCheck(0);
}
void CViewer3dDoc::SetMyStaticTrihedronAxisIsDisplayed(BOOL IsDisplayed)
{
- myStaticTrihedronAxisIsDisplayed = IsDisplayed;
+ myStaticTrihedronAxisIsDisplayed = IsDisplayed;
}
void CViewer3dDoc::OnUpdateOptionsTrihedronStaticTrihedron(CCmdUI* pCmdUI)
{
- if (myStaticTrihedronAxisIsDisplayed)
- pCmdUI->SetCheck(1);
- else
- pCmdUI->SetCheck(0);
-
+ if (myStaticTrihedronAxisIsDisplayed)
+ pCmdUI->SetCheck(1);
+ else
+ pCmdUI->SetCheck(0);
+
}
void CViewer3dDoc::Popup (const Standard_Integer x,
myAISContext->InitSelected();
if (myAISContext->MoreSelected())
{
- Handle(AIS_Shape) S = Handle(AIS_Shape)::DownCast (myAISContext->SelectedInteractive());
-
- if (S.IsNull())
+ Handle(AIS_Shape) aSelInteractive (Handle(AIS_Shape)::DownCast (myAISContext->SelectedInteractive()));
+ if (aSelInteractive.IsNull())
{
AfxMessageBox (L"It is necessary to activate the edges selection mode\n"
L"and select edges on an object before \nrunning this function");
return;
}
- TopoDS_Shape Sh=S->Shape();
-
- BRepFilletAPI_MakeFillet aFillet(Sh);
+ BRepFilletAPI_MakeFillet aFillet (aSelInteractive->Shape());
for (myAISContext->InitSelected(); myAISContext->MoreSelected(); myAISContext->NextSelected())
{
- TopoDS_Shape aSelShape = myAISContext->SelectedShape();
+ const TopoDS_Shape& aSelShape = myAISContext->SelectedShape();
if (aSelShape.ShapeType() != TopAbs_EDGE)
{
AfxMessageBox (L"It is necessary to activate the edges selection mode\n"
}
}
- BoxRadius dlg(NULL,10.);
- if (dlg.DoModal() == IDOK)
+ BoxRadius aDialog (NULL,10.);
+ if (aDialog.DoModal() == IDOK)
{
for (myAISContext->InitSelected(); myAISContext->MoreSelected(); myAISContext->NextSelected())
{
- TopoDS_Edge anEdge = TopoDS::Edge(myAISContext->SelectedShape());
- aFillet.Add(dlg.m_radius,anEdge);
+ // Selected shape has its own location, and sub-shapes in the solid shape for fillet building
+ // don't have own locations. Fillet builder needs to know that input edge is just the same one as
+ // some sub-shape in our target solid shape, so no location is to be in input edge for fillet builder.
+ TopoDS_Shape aSelShape = myAISContext->SelectedShape().Located (TopLoc_Location());
+ aFillet.Add (aDialog.m_radius, TopoDS::Edge (aSelShape) );
}
}
else
return;
}
- S ->Set (aNewShape);
- myAISContext->Redisplay (S);
+ aSelInteractive ->Set (aNewShape);
+ myAISContext->Redisplay (aSelInteractive);
}
myCResultDialog.SetTitle("Make a fillet");