Open CASCADE, the 3D modelling kernel
3D modeling & numerical simulation

Search the Forums
See All Topics
Open CASCADEShowroomGet it!Developer CornerSupport and ProductsAbout us
Technical overview
Areas of use
Advantages
FAQ
Screenshots
Shape factory
Shape gallery
Demonstrations
What's new
System requirements
Download Center
Public license
Documentation
Getting started
Forums
Open Source community
Training and e-learning
A-la Carte Support
Value-added software
Complementary Components
Customer Corner
Company Profile
Marketing Materials
Contact Us
News
Home / Developer Corner / Forums / Usage issues / [Bug?] V3d_OrthographicView::V3d_OrthographicView (const Handle(V3d_Viewer)& VM, const Handle(V3d_OrthographicView)& V)

[Bug?] V3d_OrthographicView::V3d_OrthographicView (const Handle(V3d_Viewer)& VM, const Handle(V3d_OrthographicView)& V)

[Bug?] V3d_OrthographicView::V3d_OrthographicView (const Handle(V3d_Viewer)& VM, const Handle(V3d_OrthographicView)& V)
Timo 2012/06/07 12:54
When copying a V3d_OrthographicView via
V3d_OrthographicView (const Handle(V3d_Viewer)& VM, const Handle(V3d_OrthographicView)& V)
the default view mapping is not preserved but just set to the current view mapping of V.

The problem becomes visible if the view V was scaled and the new view is scaled again because scaling is relative to the default view mapping.

A possible solutiong might be to change:

V3d_OrthographicView::V3d_OrthographicView (const Handle(V3d_Viewer)& VM, const Handle(V3d_OrthographicView)& V):V3d_View (VM,V) {
MyType = V3d_ORTHOGRAPHIC ;
MyViewMapping.SetProjection(Visual3d_TOP_PARALLEL) ;
SetViewMappingDefault() ;
SetViewOrientationDefault() ;
}

to:

V3d_OrthographicView::V3d_OrthographicView (const Handle(V3d_Viewer)& VM, const Handle(V3d_OrthographicView)& V):V3d_View (VM,V) {
MyType = V3d_ORTHOGRAPHIC ;
MyViewMapping.SetProjection(Visual3d_TOP_PARALLEL) ;

Visual3d_ViewMapping oldMapping(MyViewMapping);
V->ResetViewMapping();
SetViewMapping( V->ViewMapping() ) ;

SetViewMappingDefault() ;
SetViewOrientationDefault() ;

SetViewMapping( oldMapping ) ;
}

In the same way also V3d_PerspectiveView would have to be changed.

Do you regard this as a bug and possible fix?

Regards,
Timo
Timo 2012/06/07 13:04
In order to reproduce the problem you can use the Import-Export MFC sample.

Modify samples/mfc/05_ImportExport/src/ImportExportDoc.cpp
@@ -265 +265 @@
-     Fit();
+     //Fit();


Modify samples/mfc/Common/OCC_3dView.cpp:

@@ -12,0 +13 @@
+#include <V3d_OrthographicView.hxx>
@@ -114,0 +116,3 @@
+
+     // scale first view
+     myView->SetScale(0.3);
@@ -115,0 +120,9 @@
+     if (myView->Type() == V3d_ORTHOGRAPHIC)
+     {
+          // create second view
+          Handle_V3d_View oldView = myView;
+          myView = new V3d_OrthographicView(GetDocument()->GetViewer(), (Handle_V3d_OrthographicView &) oldView );     
+          // scale second view
+          myView->SetScale(0.3);               
+          V3d::SwitchViewsinWindow( oldView, myView );          
+     }

Now, when you start the Import Export sample and click (twice) on the button for creating a box, it will appear without being fit on the window.
If you comment out the scaling of the second view the box will be bigger, although second view is just a copy of the first view and is scaled by the same factor.

Timo
 
 
Latest news
  • Open CASCADE Technology 6.7.0 is available for download!
  • Open CASCADE Technology 6.6.0 is available for download!
  • Open CASCADE Technology 6.5.5 is available for download!

  • © OPEN CASCADE 2000 - 2014  |  Search  |  Contacts   |  Site map