Merge branch 'master' of ssh://free-cad.git.sourceforge.net/gitroot/free-cad/free-cad

This commit is contained in:
Yorik van Havre 2012-12-12 11:05:12 -02:00
commit d3949cedc7
2 changed files with 18 additions and 0 deletions

View File

@ -104,6 +104,7 @@
#include "SoFCVectorizeU3DAction.h"
#include "SoFCVectorizeSVGAction.h"
#include "SoFCDB.h"
#include "Application.h"
#include "MainWindow.h"
#include "NavigationStyle.h"
#include "ViewProvider.h"
@ -1447,6 +1448,7 @@ void View3DInventorViewer::viewAll(float factor)
void View3DInventorViewer::viewSelection()
{
#if 0
// Search for all SoFCSelection nodes
SoSearchAction searchAction;
searchAction.setType(SoFCSelection::getClassTypeId());
@ -1472,6 +1474,18 @@ void View3DInventorViewer::viewSelection()
root->addChild(select);
}
}
#else
SoGroup* root = new SoGroup();
root->ref();
std::vector<App::DocumentObject*> selection = Selection().getObjectsOfType(App::DocumentObject::getClassTypeId());
for (std::vector<App::DocumentObject*>::iterator it = selection.begin(); it != selection.end(); ++it) {
ViewProvider* vp = Application::Instance->getViewProvider(*it);
if (vp) {
root->addChild(vp->getRoot());
}
}
#endif
SoCamera* cam = this->getCamera();
if (cam) cam->viewAll(root, this->getViewportRegion());

View File

@ -561,11 +561,15 @@ const bool SketchBased::checkLineCrossesFace(const gp_Lin &line, const TopoDS_Fa
TopoDS_Wire wire = ShapeAnalysis::OuterWire(face);
BRepExtrema_DistShapeShape distss(wire, mkEdge.Shape(), Precision::Confusion());
if (distss.IsDone()) {
if (distss.Value() > Precision::Confusion())
return false;
// build up map vertex->edge
TopTools_IndexedDataMapOfShapeListOfShape vertex2Edge;
TopExp::MapShapesAndAncestors(wire, TopAbs_VERTEX, TopAbs_EDGE, vertex2Edge);
for (Standard_Integer i=1; i<= distss.NbSolution(); i++) {
if (distss.PointOnShape1(i).Distance(distss.PointOnShape2(i)) > Precision::Confusion())
continue;
BRepExtrema_SupportType type = distss.SupportTypeShape1(i);
if (type == BRepExtrema_IsOnEdge) {
//This further check is not really needed