From b916c387fb2555788db9347b9d7601a91d6405f5 Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 13 Mar 2023 16:50:25 +0100 Subject: [PATCH] Clean Mod/Part. remove old OCC <7.3 and #if 0 code. --- src/Mod/Part/App/AppPartPy.cpp | 63 +- src/Mod/Part/App/CrossSection.cpp | 14 - src/Mod/Part/App/ImportIges.cpp | 74 --- src/Mod/Part/App/OpenCascadeAll.h | 5 - src/Mod/Part/App/PartFeature.cpp | 77 --- src/Mod/Part/App/TopoShape.cpp | 167 +---- src/Mod/Part/App/TopoShapePyImp.cpp | 57 -- src/Mod/Part/App/TopologyPy.cpp | 713 ---------------------- src/Mod/Part/App/TopologyPy.h | 104 ---- src/Mod/Part/Gui/Command.cpp | 91 +-- src/Mod/Part/Gui/SoBrepFaceSet.cpp | 31 - src/Mod/Part/Gui/SoBrepFaceSet.h | 1 - src/Mod/Part/Gui/TaskFaceColors.cpp | 27 +- src/Mod/Part/Gui/ViewProvider2DObject.cpp | 32 - src/Mod/Part/Gui/ViewProviderExt.cpp | 7 - 15 files changed, 21 insertions(+), 1442 deletions(-) delete mode 100644 src/Mod/Part/App/TopologyPy.cpp delete mode 100644 src/Mod/Part/App/TopologyPy.h diff --git a/src/Mod/Part/App/AppPartPy.cpp b/src/Mod/Part/App/AppPartPy.cpp index 4f96492aef..7a1c791784 100644 --- a/src/Mod/Part/App/AppPartPy.cpp +++ b/src/Mod/Part/App/AppPartPy.cpp @@ -736,21 +736,15 @@ private: if (file.hasExtension("stp") || file.hasExtension("step")) { // create new document and add Import feature App::Document *pcDoc = App::GetApplication().newDocument(); -#if 1 ImportStepParts(pcDoc,EncodedName.c_str()); -#else - Part::ImportStep *pcFeature = (Part::ImportStep *)pcDoc->addObject("Part::ImportStep",file.fileNamePure().c_str()); - pcFeature->FileName.setValue(Name); -#endif + pcDoc->recompute(); } -#if 1 else if (file.hasExtension("igs") || file.hasExtension("iges")) { App::Document *pcDoc = App::GetApplication().newDocument(); ImportIgesParts(pcDoc,EncodedName.c_str()); pcDoc->recompute(); } -#endif else { TopoShape shape; shape.read(EncodedName.c_str()); @@ -788,21 +782,14 @@ private: } if (file.hasExtension("stp") || file.hasExtension("step")) { -#if 1 ImportStepParts(pcDoc,EncodedName.c_str()); -#else - // add Import feature - Part::ImportStep *pcFeature = (Part::ImportStep *)pcDoc->addObject("Part::ImportStep",file.fileNamePure().c_str()); - pcFeature->FileName.setValue(Name); -#endif + pcDoc->recompute(); } -#if 1 else if (file.hasExtension("igs") || file.hasExtension("iges")) { ImportIgesParts(pcDoc,EncodedName.c_str()); pcDoc->recompute(); } -#endif else { TopoShape shape; shape.read(EncodedName.c_str()); @@ -1833,50 +1820,6 @@ private: } Py::Object makeLoft(const Py::Tuple& args) { -#if 0 - PyObject *pcObj; - if (!PyArg_ParseTuple(args.ptr(), "O", &pcObj)) - throw Py::Exception; - - NCollection_List theSections; - Py::Sequence list(pcObj); - for (Py::Sequence::iterator it = list.begin(); it != list.end(); ++it) { - if (PyObject_TypeCheck((*it).ptr(), &(Part::GeometryCurvePy::Type))) { - Handle(Geom_Curve) hCurve = Handle(Geom_Curve)::DownCast( - static_cast((*it).ptr())->getGeomCurvePtr()->handle()); - theSections.Append(hCurve); - } - } - - //populate section generator - GeomFill_SectionGenerator aSecGenerator; - for (NCollection_List::Iterator anIt(theSections); anIt.More(); anIt.Next()) { - const Handle(Geom_Curve)& aCurve = anIt.Value(); - aSecGenerator.AddCurve (aCurve); - } - aSecGenerator.Perform (Precision::PConfusion()); - - Handle(GeomFill_Line) aLine = new GeomFill_Line (theSections.Size()); - - //parameters - const Standard_Integer aMinDeg = 1, aMaxDeg = BSplCLib::MaxDegree(), aNbIt = 0; - Standard_Real aTol3d = 1e-4, aTol2d = Precision::Parametric (aTol3d); - - //algorithm - GeomFill_AppSurf anAlgo (aMinDeg, aMaxDeg, aTol3d, aTol2d, aNbIt); - anAlgo.Perform (aLine, aSecGenerator); - - if (!anAlgo.IsDone()) { - PyErr_SetString(PartExceptionOCCError, "Failed to create loft surface"); - return 0; - } - - Handle(Geom_BSplineSurface) aRes; - aRes = new Geom_BSplineSurface(anAlgo.SurfPoles(), anAlgo.SurfWeights(), - anAlgo.SurfUKnots(), anAlgo.SurfVKnots(), anAlgo.SurfUMults(), anAlgo.SurfVMults(), - anAlgo.UDegree(), anAlgo.VDegree()); - return new BSplineSurfacePy(new GeomBSplineSurface(aRes)); -#else PyObject *pcObj; PyObject *psolid=Py_False; PyObject *pruled=Py_False; @@ -1907,7 +1850,7 @@ private: Standard_Boolean anIsClosed = Base::asBoolean(pclosed); TopoDS_Shape aResult = myShape.makeLoft(profiles, anIsSolid, anIsRuled, anIsClosed, degMax); return Py::asObject(new TopoShapePy(new TopoShape(aResult))); -#endif + } Py::Object makeSplitShape(const Py::Tuple& args) { diff --git a/src/Mod/Part/App/CrossSection.cpp b/src/Mod/Part/App/CrossSection.cpp index cd339fb402..e118dba32e 100644 --- a/src/Mod/Part/App/CrossSection.cpp +++ b/src/Mod/Part/App/CrossSection.cpp @@ -120,19 +120,6 @@ void CrossSection::sliceNonSolid(double d, const TopoDS_Shape& shape, std::list< void CrossSection::sliceSolid(double d, const TopoDS_Shape& shape, std::list& wires) const { -#if 0 - gp_Pln slicePlane(a,b,c,-d); - BRepBuilderAPI_MakeFace mkFace(slicePlane); - TopoDS_Face face = mkFace.Face(); - BRepAlgoAPI_Common mkInt(shape, face); - - if (mkInt.IsDone()) { - // sort and repair the wires - TopTools_IndexedMapOfShape mapOfWires; - TopExp::MapShapes(mkInt.Shape(), TopAbs_WIRE, mapOfWires); - connectWires(mapOfWires, wires); - } -#else gp_Pln slicePlane(a,b,c,-d); BRepBuilderAPI_MakeFace mkFace(slicePlane); TopoDS_Face face = mkFace.Face(); @@ -166,7 +153,6 @@ void CrossSection::sliceSolid(double d, const TopoDS_Shape& shape, std::list& edges, std::list& wires) const diff --git a/src/Mod/Part/App/ImportIges.cpp b/src/Mod/Part/App/ImportIges.cpp index ec86ecf6b5..c299b0384f 100644 --- a/src/Mod/Part/App/ImportIges.cpp +++ b/src/Mod/Part/App/ImportIges.cpp @@ -74,7 +74,6 @@ int Part::ImportIgesParts(App::Document *pcDoc, const char* FileName) // check file conformity and output stats aReader.PrintCheckLoad(Standard_True,IFSelect_GeneralInfo); -#if 1 std::string aName = fi.fileNamePure(); #if OCC_VERSION_HEX < 0x070500 Handle(Message_ProgressIndicator) pi = new ProgressIndicator(100); @@ -119,79 +118,6 @@ int Part::ImportIgesParts(App::Document *pcDoc, const char* FileName) ("Part::Feature", name.c_str())); pcFeature->Shape.setValue(comp); } -#else - // put all other free-flying shapes into a single compound - Standard_Boolean emptyComp = Standard_True; - BRep_Builder builder; - TopoDS_Compound comp; - builder.MakeCompound(comp); - - // get all entities - Handle(TColStd_HSequenceOfTransient) aRootList=aReader.GiveList("xst-transferrable-roots"); - Base::SequencerLauncher seq("Reading IGES file...", aRootList->Length()); - Standard_Integer j; - for (j=1; j<=aRootList->Length(); j++) { - seq.next(); - Handle(IGESData_IGESEntity) igesEntity = Handle(IGESData_IGESEntity)::DownCast(aRootList->Value(j)); - if (igesEntity.IsNull()) continue; - // clear any old shape - aReader.ClearShapes(); - -#ifdef _DEBUG - std::string type = igesEntity->DynamicType()->Name(); - (void)type; -#endif - - // is it a group, singular sub-figure or solid? - if (igesEntity->IsKind(STANDARD_TYPE(IGESBasic_Group)) || - igesEntity->IsKind(STANDARD_TYPE(IGESBasic_SingularSubfigure)) || - igesEntity->IsKind(STANDARD_TYPE(IGESSolid_ManifoldSolid))) { - try { - if (aReader.TransferEntity(igesEntity)) { - if (aReader.NbShapes()>0) { - // get the shape - std::string aName = fi.fileNamePure(); - if (igesEntity->HasShortLabel()) { - Handle(TCollection_HAsciiString) aLabel=igesEntity->ShortLabel(); - aName = aLabel->ToCString(); - } - TopoDS_Shape aShape=aReader.OneShape(); - App::DocumentObject* obj = pcDoc->addObject("Part::Feature", aName.c_str()); - obj->Label.setValue(aName); - static_cast(obj)->Shape.setValue(aShape); - int iColor; - if (igesEntity->RankColor()>-1) { - iColor = igesEntity->RankColor(); - } - } - } - } - catch (Standard_Failure) { - } - } - // normal shapes - else { - try { - if (aReader.TransferEntity(igesEntity)) { - if (aReader.NbShapes()>0) { - TopoDS_Shape aShape=aReader.OneShape(); - builder.Add(comp, aShape); - emptyComp = Standard_False; - } - } - } - catch (Standard_Failure) { - } - } - } - - if (!emptyComp) { - std::string name = fi.fileNamePure(); - Part::Feature *pcFeature = static_cast(pcDoc->addObject - ("Part::Feature", name.c_str())); - pcFeature->Shape.setValue(comp); - } -#endif } catch (Standard_Failure& e) { throw Base::CADKernelError(e.GetMessageString()); diff --git a/src/Mod/Part/App/OpenCascadeAll.h b/src/Mod/Part/App/OpenCascadeAll.h index 78f70f2e89..63efc014f8 100644 --- a/src/Mod/Part/App/OpenCascadeAll.h +++ b/src/Mod/Part/App/OpenCascadeAll.h @@ -107,15 +107,10 @@ #include #include -#if OCC_VERSION_HEX < 0x070300 -# include -#endif #include #include #include -#if OCC_VERSION_HEX >= 0x070300 # include -#endif #include #include diff --git a/src/Mod/Part/App/PartFeature.cpp b/src/Mod/Part/App/PartFeature.cpp index 18cbad6044..c1ca03c85e 100644 --- a/src/Mod/Part/App/PartFeature.cpp +++ b/src/Mod/Part/App/PartFeature.cpp @@ -130,14 +130,8 @@ App::DocumentObject *Feature::getSubObject(const char *subname, mat *= Placement.getValue().toMatrix(); if(!pyObj) { -#if 0 - if(subname==0 || *subname==0 || Shape.getShape().hasSubShape(subname)) - return const_cast(this); - return nullptr; -#else // TopoShape::hasSubShape is kind of slow, let's cut outself some slack here. return const_cast(this); -#endif } try { @@ -296,25 +290,16 @@ static TopoShape _getTopoShape(const App::DocumentObject *obj, const char *subna } if(_ShapeCache.getShape(obj,shape,subname)) { - if(noElementMap) { - // shape.resetElementMap(); - // shape.Tag = 0; - // shape.Hasher.reset(); - } } App::DocumentObject *linked = nullptr; App::DocumentObject *owner = nullptr; Base::Matrix4D linkMat; - // App::StringHasherRef hasher; - // long tag; { Base::PyGILStateLocker lock; owner = obj->getSubObject(subname,shape.isNull()?&pyobj:nullptr,&mat,false); if(!owner) return shape; - // tag = owner->getID(); - // hasher = owner->getDocument()->getStringHasher(); linked = owner->getLinkedObject(true,&linkMat,false); if(pmat) { if(resolveLink && obj!=owner) @@ -335,11 +320,6 @@ static TopoShape _getTopoShape(const App::DocumentObject *obj, const char *subna if(!shape.isNull()) { if(obj->getDocument() != linked->getDocument()) _ShapeCache.setShape(obj,shape,subname); - if(noElementMap) { - // shape.resetElementMap(); - // shape.Tag = 0; - // shape.Hasher.reset(); - } Py_DECREF(pyobj); return shape; } @@ -363,11 +343,6 @@ static TopoShape _getTopoShape(const App::DocumentObject *obj, const char *subna _ShapeCache.setShape(obj,shape,subname); } if(!shape.isNull()) { - if(noElementMap) { - // shape.resetElementMap(); - // shape.Tag = 0; - // shape.Hasher.reset(); - } return shape; } } @@ -386,7 +361,6 @@ static TopoShape _getTopoShape(const App::DocumentObject *obj, const char *subna shape.transformShape(mat*linkMat,false,true); else shape.transformShape(linkMat,false,true); - // shape.reTagElementMap(tag,hasher); } else { @@ -406,8 +380,6 @@ static TopoShape _getTopoShape(const App::DocumentObject *obj, const char *subna linked = link->getTrueLinkedObject(false,&baseMat); if(linked && linked!=owner) { baseShape = Feature::getTopoShape(linked,nullptr,false,nullptr,nullptr,false,false); - // if(!link->getShowElementValue()) - // baseShape.reTagElementMap(owner->getID(),owner->getDocument()->getStringHasher()); } } for(auto &sub : owner->getSubObjects()) { @@ -444,7 +416,6 @@ static TopoShape _getTopoShape(const App::DocumentObject *obj, const char *subna shape = baseShape.makeTransform(mat,(TopoShape::indexPostfix()+childName).c_str()); else { shape = baseShape.makeTransform(mat); - // shape.reTagElementMap(subObj->getID(),subObj->getDocument()->getStringHasher()); } } shapes.push_back(shape); @@ -456,8 +427,6 @@ static TopoShape _getTopoShape(const App::DocumentObject *obj, const char *subna if(shapes.empty()) return shape; - // shape.Tag = tag; - // shape.Hasher = hasher; shape.makeCompound(shapes); } @@ -466,16 +435,10 @@ static TopoShape _getTopoShape(const App::DocumentObject *obj, const char *subna if(owner!=obj) { scaled = shape.transformShape(mat,false,true); if(owner->getDocument()!=obj->getDocument()) { - // shape.reTagElementMap(obj->getID(),obj->getDocument()->getStringHasher()); _ShapeCache.setShape(obj,shape,subname); }else if(scaled) _ShapeCache.setShape(obj,shape,subname); } - if(noElementMap) { - // shape.resetElementMap(); - // shape.Tag = 0; - // shape.Hasher.reset(); - } return shape; } @@ -701,15 +664,6 @@ template<> PyObject* Part::FeaturePython::getPyObject() { template class PartExport FeaturePythonT; } -// ---------------------------------------------------------------- -/* -#include -#include -#include -#include -#include -#include -*/ std::vector Part::findAllFacesCutBy( const TopoDS_Shape& shape, const TopoDS_Shape& face, const gp_Dir& dir) { @@ -768,37 +722,6 @@ bool Part::checkIntersection(const TopoDS_Shape& first, const TopoDS_Shape& seco if (quick && !first_bb.IsOut(second_bb)) return true; // assumed intersection - // Try harder - - // This has been disabled because of: - // https://www.freecadweb.org/tracker/view.php?id=3065 - - //extrema method - /*BRepExtrema_DistShapeShape extrema(first, second); - if (!extrema.IsDone()) - return true; - if (extrema.Value() > Precision::Confusion()) - return false; - if (extrema.InnerSolution()) - return true; - - //here we should have touching shapes. - if (touch_is_intersection) - { - - //non manifold condition. 1 has to be a face - for (int index = 1; index < extrema.NbSolution() + 1; ++index) - { - if (extrema.SupportTypeShape1(index) == BRepExtrema_IsInFace || extrema.SupportTypeShape2(index) == BRepExtrema_IsInFace) - return true; - } - return false; - } - else - return false;*/ - - //boolean method. - if (touch_is_intersection) { // If both shapes fuse to a single solid, then they intersect BRepAlgoAPI_Fuse mkFuse(first, second); diff --git a/src/Mod/Part/App/TopoShape.cpp b/src/Mod/Part/App/TopoShape.cpp index 8ee78793ce..e2bc1d8483 100644 --- a/src/Mod/Part/App/TopoShape.cpp +++ b/src/Mod/Part/App/TopoShape.cpp @@ -144,16 +144,11 @@ # include # include -#if OCC_VERSION_HEX < 0x070300 -# include -#endif # include # include -#if OCC_VERSION_HEX >= 0x070300 # include -#endif #if OCC_VERSION_HEX < 0x070600 # include @@ -1773,11 +1768,6 @@ TopoDS_Shape TopoShape::cut(const std::vector& shapes, Standard_Re { if (this->_Shape.IsNull()) return this->_Shape; -#if OCC_VERSION_HEX < 0x060900 - (void)shapes; - (void)tolerance; - throw Base::RuntimeError("Multi cut is available only in OCC 6.9.0 and up."); -#else BRepAlgoAPI_Cut mkCut; mkCut.SetRunParallel(true); TopTools_ListOfShape shapeArguments,shapeTools; @@ -1802,7 +1792,6 @@ TopoDS_Shape TopoShape::cut(const std::vector& shapes, Standard_Re TopoDS_Shape resShape = mkCut.Shape(); return makeShell(resShape); -#endif } TopoDS_Shape TopoShape::common(TopoDS_Shape shape) const @@ -1819,11 +1808,6 @@ TopoDS_Shape TopoShape::common(const std::vector& shapes, Standard { if (this->_Shape.IsNull()) return this->_Shape; -#if OCC_VERSION_HEX < 0x060900 - (void)shapes; - (void)tolerance; - throw Base::RuntimeError("Multi common is available only in OCC 6.9.0 and up."); -#else BRepAlgoAPI_Common mkCommon; mkCommon.SetRunParallel(true); TopTools_ListOfShape shapeArguments,shapeTools; @@ -1848,7 +1832,6 @@ TopoDS_Shape TopoShape::common(const std::vector& shapes, Standard TopoDS_Shape resShape = mkCommon.Shape(); return makeShell(resShape); -#endif } TopoDS_Shape TopoShape::fuse(TopoDS_Shape shape) const @@ -1865,27 +1848,9 @@ TopoDS_Shape TopoShape::fuse(const std::vector& shapes, Standard_R { if (this->_Shape.IsNull()) Standard_Failure::Raise("Base shape is null"); -#if OCC_VERSION_HEX <= 0x060800 - if (tolerance > 0.0) - Standard_Failure::Raise("Fuzzy Booleans are not supported in this version of OCCT"); - TopoDS_Shape resShape = this->_Shape; - if (resShape.IsNull()) - throw Base::ValueError("Object shape is null"); - for (std::vector::const_iterator it = shapes.begin(); it != shapes.end(); ++it) { - if (it->IsNull()) - throw NullShapeException("Input shape is null"); - // Let's call algorithm computing a fuse operation: - BRepAlgoAPI_Fuse mkFuse(resShape, *it); - // Let's check if the fusion has been successful - if (!mkFuse.IsDone()) - throw Base::RuntimeError("Fusion failed"); - resShape = mkFuse.Shape(); - } -#else + BRepAlgoAPI_Fuse mkFuse; -# if OCC_VERSION_HEX >= 0x060900 mkFuse.SetRunParallel(true); -# endif TopTools_ListOfShape shapeArguments,shapeTools; shapeArguments.Append(this->_Shape); for (std::vector::const_iterator it = shapes.begin(); it != shapes.end(); ++it) { @@ -1906,7 +1871,6 @@ TopoDS_Shape TopoShape::fuse(const std::vector& shapes, Standard_R throw Base::RuntimeError("Multi fuse failed"); TopoDS_Shape resShape = mkFuse.Shape(); -#endif return makeShell(resShape); } @@ -1916,12 +1880,8 @@ TopoDS_Shape TopoShape::oldFuse(TopoDS_Shape shape) const Standard_Failure::Raise("Base shape is null"); if (shape.IsNull()) Standard_Failure::Raise("Tool shape is null"); -#if OCC_VERSION_HEX < 0x070300 - BRepAlgo_Fuse mkFuse(this->_Shape, shape); - return mkFuse.Shape(); -#else + throw Standard_Failure("BRepAlgo_Fuse is deprecated since OCCT 7.3"); -#endif } TopoDS_Shape TopoShape::section(TopoDS_Shape shape, Standard_Boolean approximate) const @@ -1930,16 +1890,11 @@ TopoDS_Shape TopoShape::section(TopoDS_Shape shape, Standard_Boolean approximate Standard_Failure::Raise("Base shape is null"); if (shape.IsNull()) Standard_Failure::Raise("Tool shape is null"); -#if OCC_VERSION_HEX < 0x060900 - BRepAlgoAPI_Section mkSection(this->_Shape, shape); - (void)approximate; -#else BRepAlgoAPI_Section mkSection; mkSection.Init1(this->_Shape); mkSection.Init2(shape); mkSection.Approximation(approximate); mkSection.Build(); -#endif if (!mkSection.IsDone()) throw Base::RuntimeError("Section failed"); return mkSection.Shape(); @@ -1951,12 +1906,7 @@ TopoDS_Shape TopoShape::section(const std::vector& shapes, { if (this->_Shape.IsNull()) Standard_Failure::Raise("Base shape is null"); -#if OCC_VERSION_HEX < 0x060900 - (void)shapes; - (void)tolerance; - (void)approximate; - throw Base::RuntimeError("Multi section is available only in OCC 6.9.0 and up."); -#else + BRepAlgoAPI_Section mkSection; mkSection.SetRunParallel(true); mkSection.Approximation(approximate); @@ -1982,7 +1932,6 @@ TopoDS_Shape TopoShape::section(const std::vector& shapes, TopoDS_Shape resShape = mkSection.Shape(); return resShape; -#endif } std::list TopoShape::slice(const Base::Vector3d& dir, double d) const @@ -2020,12 +1969,7 @@ TopoDS_Shape TopoShape::generalFuse(const std::vector &sOthers, St { if (this->_Shape.IsNull()) Standard_Failure::Raise("Base shape is null"); -#if OCC_VERSION_HEX < 0x060900 - (void)sOthers; - (void)tolerance; - (void)mapInOut; - throw Base::AttributeError("GFA is available only in OCC 6.9.0 and up."); -#else + BRepAlgoAPI_BuilderAlgo mkGFA; mkGFA.SetRunParallel(true); TopTools_ListOfShape GFAArguments; @@ -2042,9 +1986,7 @@ TopoDS_Shape TopoShape::generalFuse(const std::vector &sOthers, St mkGFA.SetArguments(GFAArguments); if (tolerance > 0.0) mkGFA.SetFuzzyValue(tolerance); -#if OCC_VERSION_HEX >= 0x070000 mkGFA.SetNonDestructive(Standard_True); -#endif mkGFA.Build(); if (!mkGFA.IsDone()) throw BooleanException("MultiFusion failed"); @@ -2055,7 +1997,6 @@ TopoDS_Shape TopoShape::generalFuse(const std::vector &sOthers, St } } return resShape; -#endif } TopoDS_Shape TopoShape::makePipe(const TopoDS_Shape& profile) const @@ -2108,43 +2049,6 @@ TopoDS_Shape TopoShape::makePipeShell(const TopTools_ListOfShape& profiles, return mkPipeShell.Shape(); } -#if 0 -TopoDS_Shape TopoShape::makeTube() const -{ - // http://opencascade.blogspot.com/2009/11/surface-modeling-part3.html - if (this->_Shape.IsNull()) - Standard_Failure::Raise("Cannot sweep along empty spine"); - if (this->_Shape.ShapeType() != TopAbs_EDGE) - Standard_Failure::Raise("Spine shape is not an edge"); - - const TopoDS_Edge& path_edge = TopoDS::Edge(this->_Shape); - BRepAdaptor_Curve path_adapt(path_edge); - double umin = path_adapt.FirstParameter(); - double umax = path_adapt.LastParameter(); - Handle(Geom_Curve) hPath = path_adapt.Curve().Curve(); - - // Apply placement of the shape to the curve - TopLoc_Location loc1 = path_edge.Location(); - hPath = Handle(Geom_Curve)::DownCast(hPath->Transformed(loc1.Transformation())); - - if (hPath.IsNull()) - Standard_Failure::Raise("Invalid curve in path edge"); - - GeomFill_Pipe mkTube(hPath, radius); - mkTube.Perform(tol, Standard_False, GeomAbs_C1, BSplCLib::MaxDegree(), 1000); - - const Handle(Geom_Surface)& surf = mkTube.Surface(); - double u1,u2,v1,v2; - surf->Bounds(u1,u2,v1,v2); - - BRepBuilderAPI_MakeFace mkBuilder(surf, umin, umax, v1, v2 -#if OCC_VERSION_HEX >= 0x060502 - , Precision::Confusion() -#endif - ); - return mkBuilder.Face(); -} -#else static Handle(Law_Function) CreateBsFunction (const Standard_Real theFirst, const Standard_Real theLast, const Standard_Real theRadius) { (void)theRadius; @@ -2170,7 +2074,9 @@ TopoDS_Shape TopoShape::makeTube(double radius, double tol, int cont, int maxdeg Standard_Failure::Raise("Cannot sweep along empty spine"); #if OCC_VERSION_HEX >= 0x070600 + Handle(Adaptor3d_Curve) myPath; + if (this->_Shape.ShapeType() == TopAbs_EDGE) { const TopoDS_Edge& path_edge = TopoDS::Edge(this->_Shape); myPath = new BRepAdaptor_Curve(path_edge); @@ -2183,14 +2089,7 @@ TopoDS_Shape TopoShape::makeTube(double radius, double tol, int cont, int maxdeg myPath = new BRepAdaptor_HCurve(path_adapt); } #endif - //else if (this->_Shape.ShapeType() == TopAbs_WIRE) { - // const TopoDS_Wire& path_wire = TopoDS::Wire(this->_Shape); - // BRepAdaptor_CompCurve path_adapt(path_wire); - // myPath = new BRepAdaptor_HCompCurve(path_adapt); - //} - //else { - // Standard_Failure::Raise("Spine shape is neither an edge nor a wire"); - //} + else { Standard_Failure::Raise("Spine shape is not an edge"); } @@ -2214,17 +2113,14 @@ TopoDS_Shape TopoShape::makeTube(double radius, double tol, int cont, int maxdeg Standard_Real u1,u2,v1,v2; mySurface->Bounds(u1,u2,v1,v2); - BRepBuilderAPI_MakeFace mkBuilder(mySurface, u1, u2, v1, v2 -#if OCC_VERSION_HEX >= 0x060502 - , Precision::Confusion() -#endif + BRepBuilderAPI_MakeFace mkBuilder(mySurface, u1, u2, v1, v2 , Precision::Confusion() ); return mkBuilder.Shape(); } return TopoDS_Shape(); } -#endif + TopoDS_Shape TopoShape::makeSweep(const TopoDS_Shape& profile, double tol, int fillMode) const { @@ -2271,11 +2167,7 @@ TopoDS_Shape TopoShape::makeSweep(const TopoDS_Shape& profile, double tol, int f mkSweep.Perform(tol, Standard_False, GeomAbs_C1, BSplCLib::MaxDegree(), 1000); const Handle(Geom_Surface)& surf = mkSweep.Surface(); - BRepBuilderAPI_MakeFace mkBuilder(surf, umin, umax, vmin, vmax -#if OCC_VERSION_HEX >= 0x060502 - , Precision::Confusion() -#endif - ); + BRepBuilderAPI_MakeFace mkBuilder(surf, umin, umax, vmin, vmax , Precision::Confusion()); return mkBuilder.Face(); } @@ -2285,7 +2177,6 @@ TopoDS_Shape TopoShape::makeTorus(Standard_Real radius1, Standard_Real radius2, { // https://forum.freecadweb.org/viewtopic.php?f=3&t=1445 // https://forum.freecadweb.org/viewtopic.php?f=3&t=52719 -#if 1 // Build a torus gp_Circ circle; circle.SetRadius(radius2); @@ -2310,15 +2201,6 @@ TopoDS_Shape TopoShape::makeTorus(Standard_Real radius1, Standard_Real radius2, BRepPrimAPI_MakeRevol mkRevol(mkFace.Face(), gp_Ax1(gp_Pnt(0,0,0), gp_Dir(0,0,1)), Base::toRadians(angle3), Standard_True); return mkRevol.Shape(); -#else - (void)isSolid; - BRepPrimAPI_MakeTorus mkTorus(radius1, - radius2, - Base::toRadians(angle1), - Base::toRadians(angle2), - Base::toRadians(angle3)); - return mkTorus.Solid(); -#endif } TopoDS_Shape TopoShape::makeHelix(Standard_Real pitch, Standard_Real height, @@ -2721,18 +2603,11 @@ TopoDS_Shape TopoShape::makeOffsetShape(double offset, double tol, bool intersec } } -#if OCC_VERSION_HEX < 0x070200 - BRepOffsetAPI_MakeOffsetShape mkOffset(inputShape, offset, tol, BRepOffset_Mode(offsetMode), - intersection ? Standard_True : Standard_False, - selfInter ? Standard_True : Standard_False, - GeomAbs_JoinType(join)); -#else BRepOffsetAPI_MakeOffsetShape mkOffset; mkOffset.PerformByJoin(inputShape, offset, tol, BRepOffset_Mode(offsetMode), intersection ? Standard_True : Standard_False, selfInter ? Standard_True : Standard_False, GeomAbs_JoinType(join)); -#endif if (!mkOffset.IsDone()) Standard_Failure::Raise("BRepOffsetAPI_MakeOffsetShape not done"); @@ -2833,10 +2708,6 @@ TopoDS_Shape TopoShape::makeOffset2D(double offset, short joinType, bool fill, b { if (_Shape.IsNull()) throw Base::ValueError("makeOffset2D: input shape is null!"); -#if OCC_VERSION_HEX < 0x060900 - if (allowOpenResult) - throw Base::AttributeError("openResult argument is not supported on OCC < 6.9.0."); -#endif // OUTLINE OF MAKEOFFSET2D // * Prepare shapes to process @@ -3155,19 +3026,11 @@ TopoDS_Shape TopoShape::makeThickSolid(const TopTools_ListOfShape& remFace, double offset, double tol, bool intersection, bool selfInter, short offsetMode, short join) const { -#if OCC_VERSION_HEX < 0x070200 - BRepOffsetAPI_MakeThickSolid mkThick(this->_Shape, remFace, offset, tol, BRepOffset_Mode(offsetMode), - intersection ? Standard_True : Standard_False, - selfInter ? Standard_True : Standard_False, - GeomAbs_JoinType(join)); -#else BRepOffsetAPI_MakeThickSolid mkThick; mkThick.MakeThickSolidByJoin(this->_Shape, remFace, offset, tol, BRepOffset_Mode(offsetMode), intersection ? Standard_True : Standard_False, selfInter ? Standard_True : Standard_False, GeomAbs_JoinType(join)); -#endif - return mkThick.Shape(); } @@ -3925,10 +3788,6 @@ TopoDS_Shape TopoShape::defeaturing(const std::vector& s) const { if (this->_Shape.IsNull()) Standard_Failure::Raise("Base shape is null"); -#if OCC_VERSION_HEX < 0x070300 - (void)s; - throw Base::RuntimeError("Defeaturing is available only in OCC 7.3.0 and up."); -#else BRepAlgoAPI_Defeaturing defeat; defeat.SetRunParallel(true); defeat.SetShape(this->_Shape); @@ -3943,13 +3802,7 @@ TopoDS_Shape TopoShape::defeaturing(const std::vector& s) const const char* cstr2 = resultstr.c_str(); throw Base::RuntimeError(cstr2); } -// if (defeat.HasWarnings()) { -// // warnings treatment -// Standard_SStream aSStream; -// defeat.DumpWarnings(aSStream); -// } return defeat.Shape(); -#endif } /** diff --git a/src/Mod/Part/App/TopoShapePyImp.cpp b/src/Mod/Part/App/TopoShapePyImp.cpp index bdabcb9972..07088063b9 100644 --- a/src/Mod/Part/App/TopoShapePyImp.cpp +++ b/src/Mod/Part/App/TopoShapePyImp.cpp @@ -309,8 +309,6 @@ PyObject* TopoShapePy::writeInventor(PyObject * args, PyObject * keywds) getTopoShapePtr()->exportFaceSet(dev, angle, faceColors, result); getTopoShapePtr()->exportLineSet(result); } - // NOTE: Cleaning the triangulation may cause problems on some algorithms like BOP - //BRepTools::Clean(getTopoShapePtr()->getShape()); // remove triangulation return Py::new_reference_to(Py::String(result.str())); } @@ -1633,11 +1631,7 @@ PyObject* TopoShapePy::makeChamfer(PyObject *args) if (edge.ShapeType() == TopAbs_EDGE) { //Add edge to fillet algorithm const TopoDS_Face& face = TopoDS::Face(mapEdgeFace.FindFromKey(edge).First()); -#if OCC_VERSION_HEX > 0x070300 mkChamfer.Add(radius, radius, TopoDS::Edge(edge), face); -#else - mkChamfer.Add(radius, TopoDS::Edge(edge), face); -#endif } } } @@ -2671,7 +2665,6 @@ PyObject* TopoShapePy::optimalBoundingBox(PyObject *args) return nullptr; try { -#if OCC_VERSION_HEX >= 0x070200 TopoDS_Shape shape = this->getTopoShapePtr()->getShape(); Bnd_Box bounds; BRepBndLib::AddOptimal(shape, bounds, @@ -2691,9 +2684,6 @@ PyObject* TopoShapePy::optimalBoundingBox(PyObject *args) Py::BoundingBox pybox(box); return Py::new_reference_to(pybox); -#else - throw Py::RuntimeError("Need OCCT 7.2.0 or higher"); -#endif } catch (const Standard_Failure& e) { throw Py::RuntimeError(e.GetMessageString()); @@ -2727,53 +2717,6 @@ PyObject* TopoShapePy::defeaturing(PyObject *args) } } -// End of Methods, Start of Attributes - -#if 0 // see ComplexGeoDataPy::Matrix which does the same -Py::Object TopoShapePy::getLocation(void) const -{ - const TopLoc_Location& loc = getTopoShapePtr()->getShape().Location(); - gp_Trsf trf = (gp_Trsf)loc; - Base::Matrix4D mat; - mat[0][0] = trf.Value(1,1); - mat[0][1] = trf.Value(1,2); - mat[0][2] = trf.Value(1,3); - mat[0][3] = trf.Value(1,4); - - mat[1][0] = trf.Value(2,1); - mat[1][1] = trf.Value(2,2); - mat[1][2] = trf.Value(2,3); - mat[1][3] = trf.Value(2,4); - - mat[2][0] = trf.Value(3,1); - mat[2][1] = trf.Value(3,2); - mat[2][2] = trf.Value(3,3); - mat[2][3] = trf.Value(3,4); - return Py::asObject(new Base::MatrixPy(mat)); -} - -void TopoShapePy::setLocation(Py::Object o) -{ - PyObject* p = o.ptr(); - if (PyObject_TypeCheck(p, &(Base::MatrixPy::Type))) { - Base::Matrix4D mat = static_cast(p)->value(); - Base::Rotation rot(mat); - Base::Vector3d axis; - double angle; - rot.getValue(axis, angle); - gp_Trsf trf; - trf.SetRotation(gp_Ax1(gp_Pnt(), gp_Dir(axis.x, axis.y, axis.z)), angle); - trf.SetTranslationPart(gp_Vec(mat[0][3],mat[1][3],mat[2][3])); - TopLoc_Location loc(trf); - getTopoShapePtr()->getShape().Location(loc); - } - else { - std::string error = std::string("type must be 'Matrix', not "); - error += p->ob_type->tp_name; - throw Py::TypeError(error); - } -} -#endif Py::String TopoShapePy::getShapeType() const { diff --git a/src/Mod/Part/App/TopologyPy.cpp b/src/Mod/Part/App/TopologyPy.cpp deleted file mode 100644 index 500386de58..0000000000 --- a/src/Mod/Part/App/TopologyPy.cpp +++ /dev/null @@ -1,713 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2002 Jürgen Riegel * - * * - * This file is part of the FreeCAD CAx development system. * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Library General Public License (LGPL) * - * as published by the Free Software Foundation; either version 2 of * - * the License, or (at your option) any later version. * - * for detail see the LICENCE text file. * - * * - * FreeCAD is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Library General Public License for more details. * - * * - * You should have received a copy of the GNU Library General Public * - * License along with FreeCAD; if not, write to the Free Software * - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * - * USA * - * * - ***************************************************************************/ - - -#include "PreCompiled.h" -#if 0 -#ifndef _PreComp_ -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -# include -#endif - -#include -#include -#include -#include -#include "TopologyPy.h" - -# include -# include -#include -# include - -using Base::Console; - -using namespace Part; - - -//=========================================================================== -// TopoShapePyOld - Wrapper for the TopoDS classes -//=========================================================================== - -//-------------------------------------------------------------------------- -// Type structure -//-------------------------------------------------------------------------- - -PyTypeObject TopoShapePyOld::Type = { - PyObject_HEAD_INIT(&PyType_Type) - 0, /*ob_size*/ - "Part.Shape", /*tp_name*/ - sizeof(TopoShapePyOld), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - /* methods */ - PyDestructor, /*tp_dealloc*/ - 0, /*tp_print*/ - __getattr, /*tp_getattr*/ - __setattr, /*tp_setattr*/ - 0, /*tp_compare*/ - __repr, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash*/ - 0, /*tp_call */ - 0, /*tp_str */ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - /* --- Functions to access object as input/output buffer ---------*/ - 0, /* tp_as_buffer */ - /* --- Flags to define presence of optional/expanded features */ - Py_TPFLAGS_HAVE_CLASS, /*tp_flags */ - "About shape", /*tp_doc */ - 0, /*tp_traverse */ - 0, /*tp_clear */ - 0, /*tp_richcompare */ - 0, /*tp_weaklistoffset */ - 0, /*tp_iter */ - 0, /*tp_iternext */ - TopoShapePyOld::Methods, /*tp_methods */ - 0, /*tp_members */ - 0, /*tp_getset */ - &Base::PyObjectBase::Type, /*tp_base */ - 0, /*tp_dict */ - 0, /*tp_descr_get */ - 0, /*tp_descr_set */ - 0, /*tp_dictoffset */ - PyInit, /*tp_init */ - 0, /*tp_alloc */ - PyMake, /*tp_new */ - 0, /*tp_free Low-level free-memory routine */ - 0, /*tp_is_gc For PyObject_IS_GC */ - 0, /*tp_bases */ - 0, /*tp_mro method resolution order */ - 0, /*tp_cache */ - 0, /*tp_subclasses */ - 0 /*tp_weaklist */ -}; - -//-------------------------------------------------------------------------- -// Methods structure -//-------------------------------------------------------------------------- -PyMethodDef TopoShapePyOld::Methods[] = { - {"hasChild", (PyCFunction) shasChild, Py_NEWARGS}, - {"isNull", (PyCFunction) sisNull, Py_NEWARGS}, - {"isValid", (PyCFunction) sisValid, Py_NEWARGS}, - {"analyze", (PyCFunction) sanalyze, Py_NEWARGS}, - {"importIGES", (PyCFunction) simportIGES, Py_NEWARGS}, - {"exportIGES", (PyCFunction) sexportIGES, Py_NEWARGS}, - {"importSTEP", (PyCFunction) simportSTEP, Py_NEWARGS}, - {"exportSTEP", (PyCFunction) sexportSTEP, Py_NEWARGS}, - {"importBREP", (PyCFunction) simportBREP, Py_NEWARGS}, - {"exportBREP", (PyCFunction) sexportBREP, Py_NEWARGS}, - {"exportSTL", (PyCFunction) sexportSTL, Py_NEWARGS}, - - {NULL, NULL} /* Sentinel */ -}; - -PyObject *TopoShapePyOld::PyMake(PyTypeObject *ignored, PyObject *args, PyObject *kwds) // Python wrapper -{ - return new TopoShapePyOld(); -} - -int TopoShapePyOld::PyInit(PyObject* self, PyObject* args, PyObject*) -{ - PyObject *pcObj=0; - if (!PyArg_ParseTuple(args, "|O!", &(TopoShapePyOld::Type), &pcObj)) // convert args: Python->C - return -1; // NULL triggers exception - - if ( pcObj ) - { - TopoShapePyOld* pcShape = (TopoShapePyOld*)pcObj; - ((TopoShapePyOld*)self)->_cTopoShape = pcShape->_cTopoShape; - } - - return 0; -} - -//-------------------------------------------------------------------------- -// Parents structure -//-------------------------------------------------------------------------- -PyParentObject TopoShapePyOld::Parents[] = {&Base::PyObjectBase::Type,&TopoShapePyOld::Type, NULL}; - -//-------------------------------------------------------------------------- -// constructor -//-------------------------------------------------------------------------- -TopoShapePyOld::TopoShapePyOld(PyTypeObject *T) -: Base::PyObjectBase(0,T) -{ - Base::Console().Log("Create TopoShape: %p \n",this); -} - -TopoShapePyOld::TopoShapePyOld(const TopoDS_Shape &cShape, PyTypeObject *T) - : PyObjectBase( 0,T), _cTopoShape(cShape) -{ - Console().Log("Create TopoShape %p\n",this); -} - -//-------------------------------------------------------------------------- -// TopoShapePyOld destructor -//-------------------------------------------------------------------------- -TopoShapePyOld::~TopoShapePyOld() // Everything handled in parent -{ - Console().Log("Destroy TopoShape %p\n",this); -} - -//-------------------------------------------------------------------------- -// TopoShapePyOld Attributes -//-------------------------------------------------------------------------- -PyObject *TopoShapePyOld::_getattr(const char *attr) // __getattr__ function: note only need to handle new state -{ - try{ - // Access the number of attributes at this label - if (Base::streq(attr, "AttributeCount")) - { - return Py_BuildValue("i", 1); - }else - _getattr_up(PyObjectBase); // send to parent - }catch(...){ - Console().Log("Exception in TopoShapePyOld::_getattr()\n"); - return 0; - } -} - -int TopoShapePyOld::_setattr(const char *attr, PyObject *value) // __setattr__ function: note only need to handle new state -{ - if (Base::streq(attr, "Real")) // settable new state - ; - else - return PyObjectBase::_setattr(attr, value); // send up to parent - return 0; -} - -//-------------------------------------------------------------------------- -// PartFeaturePy representation -//-------------------------------------------------------------------------- -PyObject *TopoShapePyOld::_repr(void) -{ - std::stringstream a; - a << "TopoShape: [ "; - a << "]" << std::endl; - return Py_BuildValue("s", a.str().c_str()); -} - - -//-------------------------------------------------------------------------- -// Python wrappers -//-------------------------------------------------------------------------- - -PyObject *TopoShapePyOld::hasChild(PyObject *args) -{ - if (!PyArg_ParseTuple(args, "" )) - return NULL; - Py_Return; -} - -PyObject *TopoShapePyOld::isNull(PyObject *args) -{ - if (!PyArg_ParseTuple(args, "" )) - return NULL; - - return Py_BuildValue("O", (_cTopoShape.IsNull() ? Py_True : Py_False)); -} - -PyObject *TopoShapePyOld::isValid(PyObject *args) -{ - if (!PyArg_ParseTuple(args, "" )) - return NULL; - if ( !_cTopoShape.IsNull() ) - { - BRepCheck_Analyzer aChecker(_cTopoShape); - return Py_BuildValue("O", (aChecker.IsValid() ? Py_True : Py_False)); - } - - return Py_BuildValue("O", Py_False); -} - -PyObject *TopoShapePyOld::analyze(PyObject *args) -{ - if (!PyArg_ParseTuple(args, "" )) - return NULL; - if ( !_cTopoShape.IsNull() ) - { - BRepCheck_Analyzer aChecker(_cTopoShape); - if (!aChecker.IsValid()) - { - TopoDS_Iterator it(_cTopoShape); - for (;it.More(); it.Next()) - { - if (!aChecker.IsValid(it.Value())) - { - const Handle(BRepCheck_Result)& result = aChecker.Result(it.Value()); - const BRepCheck_ListOfStatus& status = result->StatusOnShape(it.Value()); - - BRepCheck_ListIteratorOfListOfStatus it(status); - while ( it.More() ) - { - BRepCheck_Status& val = it.Value(); - switch (val) - { - case BRepCheck_NoError: - PyErr_SetString(PyExc_StandardError, "No error"); - break; - case BRepCheck_InvalidPointOnCurve: - PyErr_SetString(PyExc_StandardError, "Invalid point on curve"); - break; - case BRepCheck_InvalidPointOnCurveOnSurface: - PyErr_SetString(PyExc_StandardError, "Invalid point on curve on surface"); - break; - case BRepCheck_InvalidPointOnSurface: - PyErr_SetString(PyExc_StandardError, "Invalid point on surface"); - break; - case BRepCheck_No3DCurve: - PyErr_SetString(PyExc_StandardError, "No 3D curve"); - break; - case BRepCheck_Multiple3DCurve: - PyErr_SetString(PyExc_StandardError, "Multiple 3D curve"); - break; - case BRepCheck_Invalid3DCurve: - PyErr_SetString(PyExc_StandardError, "Invalid 3D curve"); - break; - case BRepCheck_NoCurveOnSurface: - PyErr_SetString(PyExc_StandardError, "No curve on surface"); - break; - case BRepCheck_InvalidCurveOnSurface: - PyErr_SetString(PyExc_StandardError, "Invalid curve on surface"); - break; - case BRepCheck_InvalidCurveOnClosedSurface: - PyErr_SetString(PyExc_StandardError, "Invalid curve on closed surface"); - break; - case BRepCheck_InvalidSameRangeFlag: - PyErr_SetString(PyExc_StandardError, "Invalid same-range flag"); - break; - case BRepCheck_InvalidSameParameterFlag: - PyErr_SetString(PyExc_StandardError, "Invalid same-parameter flag"); - break; - case BRepCheck_InvalidDegeneratedFlag: - PyErr_SetString(PyExc_StandardError, "Invalid degenerated flag"); - break; - case BRepCheck_FreeEdge: - PyErr_SetString(PyExc_StandardError, "Free edge"); - break; - case BRepCheck_InvalidMultiConnexity: - PyErr_SetString(PyExc_StandardError, "Invalid multi-connexity"); - break; - case BRepCheck_InvalidRange: - PyErr_SetString(PyExc_StandardError, "Invalid range"); - break; - case BRepCheck_EmptyWire: - PyErr_SetString(PyExc_StandardError, "Empty wire"); - break; - case BRepCheck_RedundantEdge: - PyErr_SetString(PyExc_StandardError, "Redundant edge"); - break; - case BRepCheck_SelfIntersectingWire: - PyErr_SetString(PyExc_StandardError, "Self-intersecting wire"); - break; - case BRepCheck_NoSurface: - PyErr_SetString(PyExc_StandardError, "No surface"); - break; - case BRepCheck_InvalidWire: - PyErr_SetString(PyExc_StandardError, "Invalid wires"); - break; - case BRepCheck_RedundantWire: - PyErr_SetString(PyExc_StandardError, "Redundant wires"); - break; - case BRepCheck_IntersectingWires: - PyErr_SetString(PyExc_StandardError, "Intersecting wires"); - break; - case BRepCheck_InvalidImbricationOfWires: - PyErr_SetString(PyExc_StandardError, "Invalid imbrication of wires"); - break; - case BRepCheck_EmptyShell: - PyErr_SetString(PyExc_StandardError, "Empty shell"); - break; - case BRepCheck_RedundantFace: - PyErr_SetString(PyExc_StandardError, "Redundant face"); - break; - case BRepCheck_UnorientableShape: - PyErr_SetString(PyExc_StandardError, "Unorientable shape"); - break; - case BRepCheck_NotClosed: - PyErr_SetString(PyExc_StandardError, "Not closed"); - break; - case BRepCheck_NotConnected: - PyErr_SetString(PyExc_StandardError, "Not connected"); - break; - case BRepCheck_SubshapeNotInShape: - PyErr_SetString(PyExc_StandardError, "Sub-shape not in shape"); - break; - case BRepCheck_BadOrientation: - PyErr_SetString(PyExc_StandardError, "Bad orientation"); - break; - case BRepCheck_BadOrientationOfSubshape: - PyErr_SetString(PyExc_StandardError, "Bad orientation of sub-shape"); - break; - case BRepCheck_InvalidToleranceValue: - PyErr_SetString(PyExc_StandardError, "Invalid tolerance value"); - break; - case BRepCheck_CheckFail: - PyErr_SetString(PyExc_StandardError, "Check failed"); - break; - } - - if (PyErr_Occurred()) - PyErr_Print(); - it.Next(); - } - } - } - } - } - - Py_Return; -} - -#if 0 // need a define for version of OCC -//#include -//#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -class ProgressIndicator : public MoniTool_ProgressIndicator -//class ProgressIndicator : public Message_ProgressIndicator -{ -public: - ProgressIndicator() {} - virtual ~ProgressIndicator() - { - Base::Sequencer().stop(); - } - - virtual void Reset() - { - } - virtual Standard_Boolean UserBreak() - { - return Base::Sequencer().wasCanceled(); - } - virtual Standard_Boolean Show(const Standard_Boolean force = Standard_True) - { - Standard_Real min, max, step; Standard_Boolean isInf; - GetScale(min, max, step, isInf); - Standard_Real val = GetValue(); - Standard_Integer scopes = GetNbScopes(); - - const MoniTool_ProgressScale& scale = GetScope(scopes); - Handle(TCollection_HAsciiString) name = scale.GetName(); - - if ( val < 2.0 ) - Base::Sequencer().start(name->ToCString(), (unsigned long)max); - else - Base::Sequencer().next(); - - return false; - } -}; -#endif - -PyObject *TopoShapePyOld::importIGES(PyObject *args) -{ - char* filename; - if (!PyArg_ParseTuple(args, "s", &filename )) - return NULL; - - PY_TRY { - - // checking for the file - Base::FileInfo File(filename); - if(!File.isReadable()) { - PyErr_SetString(PartExceptionOCCError,"File to read does not exist or is not readable"); - return NULL; - } - - // read iges file - IGESControl_Reader aReader; - - if (aReader.ReadFile((const Standard_CString)filename) != IFSelect_RetDone) { - PyErr_SetString(PartExceptionOCCError,"Reading IGES failed"); - return NULL; - } - -#if 0 - // get all root shapes - Handle(TColStd_HSequenceOfTransient) aList=aReader.GiveList("xst-transferrable-roots"); - for (Standard_Integer j=1; j<=aList->Length(); j++) { - Handle(IGESData_IGESEntity) igesEntity=Handle(IGESData_IGESEntity)::DownCast(aList->Value(j)); - // get names - Handle(TCollection_HAsciiString) name = igesEntity->NameValue(); - if ( !name.IsNull() ) { - const char* cname = name->ToCString(); - } - if (igesEntity->HasShortLabel()) { - name = igesEntity->ShortLabel(); - if ( !name.IsNull() ) { - const char* cname = name->ToCString(); - } - } - const char* type = igesEntity->DynamicType()->Name(); - } - - //Standard_Integer val = Interface_Static::IVal("read.iges.bspline.continuity"); - //Interface_Static::SetIVal("read.iges.bspline.continuity", 2); - //Standard_Integer ic = Interface_Static::IVal("read.precision.mode"); - //Standard_Real rp = Interface_Static::RVal("read.precision.val"); - - //Handle(TColStd_HSequenceOfTransient) aList; - //aList = aReader.GiveList ("iges-type(114)"); - //int ct = aList->Length(); - //Reader.TransferList(aList); - //ct = aReader.NbShapes(); -#endif - - // one shape that contains all subshapes - aReader.TransferRoots(); - //ct = aReader.NbShapes(); - - _cTopoShape = aReader.OneShape(); - } PY_CATCH; - - Py_Return; -} - -PyObject *TopoShapePyOld::exportIGES(PyObject *args) -{ - char* filename; - if (!PyArg_ParseTuple(args, "s", &filename )) - return NULL; - - PY_TRY { - -#if 0 - // An OCC example - IGESControl_Controller::Init(); - IGESControl_Writer writer( Interface_Static::CVal( "XSTEP.iges.unit" ), - Interface_Static::IVal( "XSTEP.iges.writebrep.mode" ) ); - writer.AddShape ( _cTopoShape ); - writer.ComputeModel(); - writer.Write( (const Standard_CString)filename ); -#endif - - // write iges file - IGESControl_Controller::Init(); - IGESControl_Writer aWriter; - -#if 0 - Handle(Transfer_FinderProcess) proc = aWriter.TransferProcess(); - Handle(MoniTool_ProgressIndicator) prog = new ProgressIndicator(); - proc->SetProgress(prog); - - Standard_CString byvalue = Interface_Static::CVal("write.iges.header.author"); - Interface_Static::SetCVal ("write.iges.header.author", "FreeCAD"); - //Interface_Static::SetCVal ("write.iges.header.company", "FreeCAD"); -#endif - - aWriter.AddShape(_cTopoShape); -#if 0 - aWriter.ComputeModel(); -#endif - - if (aWriter.Write((const Standard_CString)filename) != IFSelect_RetDone) { - PyErr_SetString(PartExceptionOCCError,"Writing IGES failed"); - return NULL; - } - - } PY_CATCH; - - Py_Return; -} - -PyObject *TopoShapePyOld::importSTEP(PyObject *args) -{ - char* filename; - if (!PyArg_ParseTuple(args, "s", &filename )) - return NULL; - - PY_TRY { - // checking for the file - Base::FileInfo File(filename); - if(!File.isReadable()) { - PyErr_SetString(PartExceptionOCCError,"File to read does not exist or is not readable"); - return NULL; - } - - // read step file - STEPControl_Reader aReader; - if (aReader.ReadFile((const Standard_CString)filename) != IFSelect_RetDone) { - PyErr_SetString(PartExceptionOCCError,"Reading STEP failed"); - return NULL; - } - -#if 0 // Some interesting stuff - Handle(TColStd_HSequenceOfTransient) aList=aReader.GiveList("xst-transferrable-roots"); - for (Standard_Integer j=1; j<=aList->Length(); j++) { - Handle(IGESData_IGESEntity) igesEntity=Handle(IGESData_IGESEntity)::DownCast(aList->Value(j)); - // get names - Handle(TCollection_HAsciiString) name = igesEntity->NameValue(); - if ( !name.IsNull() ) { - const char* cname = name->ToCString(); - } - if (igesEntity->HasShortLabel()) { - name = igesEntity->ShortLabel(); - if ( !name.IsNull() ) { - const char* cname = name->ToCString(); - } - } - const char* type = igesEntity->DynamicType()->Name(); - } -#endif - - aReader.TransferRoots(); - _cTopoShape = aReader.OneShape(); - -#if 0 // Some interesting stuff - Handle(XSControl_WorkSession) ws = aReader.WS(); - //SetModel( reader.StepModel() ); - Handle(XSControl_TransferReader) tr = ws->TransferReader(); - Handle(Standard_Transient) ent = tr->EntityFromShapeResult(_cTopoShape, 3); - if ( ! ent.IsNull() ) { - //printf( "Name of STEP-Model: %s\n", ws->Model()->StringLabel(ent)->String() ); - } - TopTools_IndexedMapOfShape smap; - TopExp::MapShapes( _cTopoShape, smap); - for ( Standard_Integer k = 1; k <= smap.Extent(); k++ ) { - const TopoDS_Shape& tsh = smap(k); - Handle(Standard_Transient) ent = tr->EntityFromShapeResult(tsh, 3); - if ( ! ent.IsNull() ) { - //printf( "Part %s ", ws->Model()->StringLabel(ent)->String() ); - //printf( "is a %s\n", ws->Model()->TypeName(ent) ); - //MoniTool_DataMapOfShapeTransient map; - //map.Bind(tsh, ws->Model()->StringLabel(ent)->ShallowCopy() ); - } - } -#endif - - } PY_CATCH; - - Py_Return; -} - -PyObject *TopoShapePyOld::exportSTEP(PyObject *args) -{ - char* filename; - if (!PyArg_ParseTuple(args, "s", &filename)) - return NULL; - - PY_TRY { - - // write step file - STEPControl_Writer aWriter; - - //FIXME: Does not work this way!!! - if (aWriter.Transfer(_cTopoShape, STEPControl_AsIs)) { - PyErr_SetString(PartExceptionOCCError,"Transferring STEP failed"); - return NULL; - } - - if (aWriter.Write((const Standard_CString)filename) != IFSelect_RetDone) { - PyErr_SetString(PartExceptionOCCError,"Writing STEP failed"); - return NULL; - } - - } PY_CATCH; - - Py_Return; -} - -PyObject *TopoShapePyOld::importBREP(PyObject *args) -{ - char* filename; - if (!PyArg_ParseTuple(args, "s", &filename )) - return NULL; - - PY_TRY { - // checking for the file - Base::FileInfo File(filename); - if(!File.isReadable()) { - PyErr_SetString(PartExceptionOCCError,"File to read does not exist or is not readable"); - return NULL; - } - - // read brep file - BRep_Builder aBuilder; - if (!BRepTools::Read(_cTopoShape,(const Standard_CString)filename,aBuilder)) { - PyErr_SetString(PartExceptionOCCError,"Reading BREP failed"); - return NULL; - } - } PY_CATCH; - - Py_Return; -} - -PyObject *TopoShapePyOld::exportBREP(PyObject *args) -{ - char* filename; - if (!PyArg_ParseTuple(args, "s", &filename )) - return NULL; - - PY_TRY { - // read brep file - if (!BRepTools::Write(_cTopoShape,(const Standard_CString)filename)) { - PyErr_SetString(PartExceptionOCCError,"Writing BREP failed"); - return NULL; - } - } PY_CATCH; - - Py_Return; -} - -PyObject *TopoShapePyOld::exportSTL(PyObject *args) -{ - char* filename; - if (!PyArg_ParseTuple(args, "s", &filename )) - return NULL; - - PY_TRY { - // write STL file - StlAPI_Writer writer; - writer.Write( _cTopoShape, (const Standard_CString)filename ); - } PY_CATCH; - - Py_Return; -} - -#endif diff --git a/src/Mod/Part/App/TopologyPy.h b/src/Mod/Part/App/TopologyPy.h deleted file mode 100644 index 05eb54dae5..0000000000 --- a/src/Mod/Part/App/TopologyPy.h +++ /dev/null @@ -1,104 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2002 Jürgen Riegel * - * * - * This file is part of the FreeCAD CAx development system. * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU Library General Public License (LGPL) * - * as published by the Free Software Foundation; either version 2 of * - * the License, or (at your option) any later version. * - * for detail see the LICENCE text file. * - * * - * FreeCAD is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Library General Public License for more details. * - * * - * You should have received a copy of the GNU Library General Public * - * License along with FreeCAD; if not, write to the Free Software * - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * - * USA * - * * - ***************************************************************************/ - - -#ifndef __TOPOLOGY_H__ -#define __TOPOLOGY_H__ -#if 0 -// Std. configurations - -#include - - -#include - -namespace Part -{ - -/** The TopoDSShape wrapper class - * This class wraps the functionality of the Topology package. It wraps not - * strictly after the OCC rules. It also includes a lot of algorithms from other - * packages like BRepTools and BRepBuilder. Also iterators and so on. - */ -class AppPartExport TopoShapePyOld :public Base::PyObjectBase -{ - /** always start with Py_Header */ - Py_Header; - -protected: - /// Destruction - ~TopoShapePyOld(); - -public: - - /// Constructor - TopoShapePyOld(PyTypeObject *T = &Type); - TopoShapePyOld(const TopoDS_Shape &cShape, PyTypeObject *T = &TopoShapePyOld::Type); - /// for Construction in python - static PyObject *PyMake(PyTypeObject*, PyObject*, PyObject*); - static int PyInit(PyObject*, PyObject*, PyObject*); - - - //--------------------------------------------------------------------- - // exported functions goes here +++++++++++++++++++++++++++++++++++++++ - //--------------------------------------------------------------------- - - /// Gets the OCC Label - TopoDS_Shape getTopoShape(void){return _cTopoShape;} - - //--------------------------------------------------------------------- - // python exports goes here +++++++++++++++++++++++++++++++++++++++++++ - //--------------------------------------------------------------------- - - virtual PyObject *_repr(void); // the representation - PyObject *_getattr(const char *attr); // __getattr__ function - // getter setter - int _setattr(const char *attr, PyObject *value); // __setattr__ function - - // methods - PYFUNCDEF_D (TopoShapePyOld,hasChild); - PYFUNCDEF_D (TopoShapePyOld,isNull); - PYFUNCDEF_D (TopoShapePyOld,isValid); - PYFUNCDEF_D (TopoShapePyOld,analyze); - PYFUNCDEF_D (TopoShapePyOld,importIGES); - PYFUNCDEF_D (TopoShapePyOld,exportIGES); - PYFUNCDEF_D (TopoShapePyOld,importSTEP); - PYFUNCDEF_D (TopoShapePyOld,exportSTEP); - PYFUNCDEF_D (TopoShapePyOld,importBREP); - PYFUNCDEF_D (TopoShapePyOld,exportBREP); - PYFUNCDEF_D (TopoShapePyOld,exportSTL); - - - TopoDS_Shape &getShape(void){return _cTopoShape;} - - -protected: - /// The OCC Label - TopoDS_Shape _cTopoShape; - -}; - - -} //namespace App -#endif -#endif // __TOPOLOGY_H__ diff --git a/src/Mod/Part/Gui/Command.cpp b/src/Mod/Part/Gui/Command.cpp index 1b39a29ff2..903fcfee21 100644 --- a/src/Mod/Part/Gui/Command.cpp +++ b/src/Mod/Part/Gui/Command.cpp @@ -1689,11 +1689,9 @@ void CmdPartOffset::activated(int iMsg) doCommand(Doc,"App.ActiveDocument.%s.Source = App.ActiveDocument.%s" ,offset.c_str(), shape->getNameInDocument()); doCommand(Doc,"App.ActiveDocument.%s.Value = 1.0",offset.c_str()); updateActive(); - //if (isActiveObjectValid()) - // doCommand(Gui,"Gui.ActiveDocument.hide(\"%s\")",shape->getNameInDocument()); + doCommand(Gui,"Gui.ActiveDocument.setEdit('%s')",offset.c_str()); - //commitCommand(); adjustCameraPosition(); copyVisual(offset.c_str(), "ShapeColor", shape->getNameInDocument()); @@ -1703,15 +1701,9 @@ void CmdPartOffset::activated(int iMsg) bool CmdPartOffset::isActive() { - { - bool hasShapes = PartGui::hasShapesInSelection(); - std::vector docobjs = Gui::Selection().getObjectsOfType(App::DocumentObject::getClassTypeId()); - return (hasShapes && !Gui::Control().activeDialog() && docobjs.size() == 1); - } - -// Base::Type partid = Base::Type::fromName("Part::Feature"); -// bool objectsSelected = Gui::Selection().countObjectsOfType(partid,0,3) == 1; -// return (objectsSelected && !Gui::Control().activeDialog()); + bool hasShapes = PartGui::hasShapesInSelection(); + std::vector docobjs = Gui::Selection().getObjectsOfType(App::DocumentObject::getClassTypeId()); + return (hasShapes && !Gui::Control().activeDialog() && docobjs.size() == 1); } @@ -1755,11 +1747,7 @@ void CmdPartOffset2D::activated(int iMsg) doCommand(Doc,"App.ActiveDocument.%s.Source = App.ActiveDocument.%s" ,offset.c_str(), shape->getNameInDocument()); doCommand(Doc,"App.ActiveDocument.%s.Value = 1.0",offset.c_str()); updateActive(); - //if (isActiveObjectValid()) - // doCommand(Gui,"Gui.ActiveDocument.hide(\"%s\")",shape->getNameInDocument()); doCommand(Gui,"Gui.ActiveDocument.setEdit('%s')",offset.c_str()); - - //commitCommand(); adjustCameraPosition(); copyVisual(offset.c_str(), "ShapeColor", shape->getNameInDocument()); @@ -1944,8 +1932,6 @@ void CmdPartThickness::activated(int iMsg) obj->getDocument()->getName(), obj->getNameInDocument()); } doCommand(Gui,"Gui.ActiveDocument.setEdit('%s')",thick.c_str()); - - //commitCommand(); adjustCameraPosition(); copyVisual(thick.c_str(), "ShapeColor", obj->getNameInDocument()); @@ -1981,68 +1967,6 @@ CmdShapeInfo::CmdShapeInfo() void CmdShapeInfo::activated(int iMsg) { Q_UNUSED(iMsg); -#if 0 - static const char * const part_pipette[]={ - "32 32 17 1", - "# c #000000", - "j c #080808", - "b c #101010", - "f c #1c1c1c", - "g c #4c4c4c", - "c c #777777", - "a c #848484", - "i c #9c9c9c", - "l c #b9b9b9", - "e c #cacaca", - "n c #d6d6d6", - "k c #dedede", - "d c #e7e7e7", - "m c #efefef", - "h c #f7f7f7", - "w c #ffffff", - ". c None", - "................................", - ".....................#####......", - "...................#######......", - "...................#########....", - "..................##########....", - "..................##########....", - "..................##########....", - ".................###########....", - "...............#############....", - ".............###############....", - ".............#############......", - ".............#############......", - "...............ab######.........", - "..............cdef#####.........", - ".............ghdacf####.........", - "............#ehiacj####.........", - "............awiaaf####..........", - "...........iheacf##.............", - "..........#kdaag##..............", - ".........gedaacb#...............", - ".........lwiac##................", - ".......#amlaaf##................", - ".......cheaag#..................", - "......#ndaag##..................", - ".....#imaacb#...................", - ".....iwlacf#....................", - "....#nlaag##....................", - "....feaagj#.....................", - "....caag##......................", - "....ffbj##......................", - "................................", - "................................"}; - - Gui::Document* doc = Gui::Application::Instance->activeDocument(); - Gui::View3DInventor* view = static_cast(doc->getActiveView()); -#endif - //if (view) { - // Gui::View3DInventorViewer* viewer = view->getViewer(); - // viewer->setEditing(true); - // viewer->getWidget()->setCursor(QCursor(QPixmap(part_pipette),4,29)); - // viewer->addEventCallback(SoMouseButtonEvent::getClassTypeId(), PartGui::ViewProviderPart::shapeInfoCallback); - // } } bool CmdShapeInfo::isActive() @@ -2144,8 +2068,6 @@ void CmdPartRuledSurface::activated(int iMsg) } } - - if (!ok) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QObject::tr("You have to select either two edges or two wires.")); @@ -2543,9 +2465,6 @@ CmdPartSectionCut::CmdPartSectionCut() Gui::Action* CmdPartSectionCut::createAction() { Gui::Action* pcAction = Gui::Command::createAction(); -#if 0 - pcAction->setCheckable(true); -#endif return pcAction; } @@ -2587,8 +2506,6 @@ void CreatePartCommands() rcCmdMgr.addCommand(new CmdPartCompCompoundTools()); rcCmdMgr.addCommand(new CmdPartCompound()); rcCmdMgr.addCommand(new CmdPartSection()); - //rcCmdMgr.addCommand(new CmdPartBox2()); - //rcCmdMgr.addCommand(new CmdPartBox3()); rcCmdMgr.addCommand(new CmdPartPrimitives()); rcCmdMgr.addCommand(new CmdPartImport()); diff --git a/src/Mod/Part/Gui/SoBrepFaceSet.cpp b/src/Mod/Part/Gui/SoBrepFaceSet.cpp index 42adc44679..979e4b24ec 100644 --- a/src/Mod/Part/Gui/SoBrepFaceSet.cpp +++ b/src/Mod/Part/Gui/SoBrepFaceSet.cpp @@ -140,7 +140,6 @@ public: const cc_glglue * glue = cc_glglue_instance((int) context); PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)cc_glglue_getprocaddress(glue, "glDeleteBuffersARB"); #endif - //cc_glglue_glDeleteBuffers(glue, buffer.size(), buffer.data()); auto &buffer = it->second; glDeleteBuffersARB(2, buffer.myvbo); self->vbomap.erase(it); @@ -436,12 +435,8 @@ void SoBrepFaceSet::GLRender(SoGLRenderAction *action) if(normalCacheUsed) this->readUnlockNormalCache(); } - - // Workaround for #0000433 -//#if !defined(FC_OS_WIN32) renderHighlight(action,ctx); renderSelection(action,ctx); -//#endif } //**************************************************************************** @@ -458,13 +453,8 @@ void SoBrepFaceSet::renderSimpleArray() glEnableClientState(GL_NORMAL_ARRAY); glEnableClientState(GL_VERTEX_ARRAY); -#if 0 - glInterleavedArrays(GL_N3F_V3F, 0, vertex_array.data()); - glDrawElements(GL_TRIANGLES, cnt, GL_UNSIGNED_INT, index_array.data()); -#else glInterleavedArrays(GL_N3F_V3F, 0, &(vertex_array[0])); glDrawElements(GL_TRIANGLES, cnt, GL_UNSIGNED_INT, &(index_array[0])); -#endif glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_NORMAL_ARRAY); @@ -485,13 +475,8 @@ void SoBrepFaceSet::renderColoredArray(SoMaterialBundle *const materials) glEnableClientState(GL_NORMAL_ARRAY); glEnableClientState(GL_VERTEX_ARRAY); -#if 0 - glInterleavedArrays(GL_N3F_V3F, 0, vertex_array.data()); - const int32_t* ptr = index_array.data(); -#else glInterleavedArrays(GL_N3F_V3F, 0, &(vertex_array[0])); const int32_t* ptr = &(index_array[0]); -#endif for (int part_id = 0; part_id < num_parts; part_id++) { int tris = partIndex[part_id]; @@ -651,20 +636,10 @@ void SoBrepFaceSet::GLRender(SoGLRenderAction *action) if (hasVBO) { // get the VBO status of the viewer Gui::SoGLVBOActivatedElement::get(state, hasVBO); - // - //if (SoGLVBOElement::shouldCreateVBO(state, numindices)) { - // this->startVertexArray(action, coords, normals, false, false); - //} } renderShape(action, hasVBO, static_cast(coords), cindices, numindices, pindices, numparts, normals, nindices, &mb, mindices, &tb, tindices, nbind, mbind, doTextures?1:0); - // if (!hasVBO) { - // // Disable caching for this node - // SoGLCacheContextElement::shouldAutoCache(state, SoGLCacheContextElement::DONT_AUTO_CACHE); - // }else - // SoGLCacheContextElement::setAutoCacheBits(state, SoGLCacheContextElement::DO_AUTO_CACHE); - if (normalCacheUsed) this->readUnlockNormalCache(); } @@ -971,10 +946,6 @@ void SoBrepFaceSet::getBoundingBox(SoGetBoundingBoxAction * action) { void SoBrepFaceSet::generatePrimitives(SoAction * action) { - //TODO -#if 0 - inherited::generatePrimitives(action); -#else //This is highly experimental!!! if (this->coordIndex.getNum() < 3) @@ -1203,7 +1174,6 @@ void SoBrepFaceSet::generatePrimitives(SoAction * action) if (this->vertexProperty.getValue()) { state->pop(); } -#endif } #undef DO_VERTEX @@ -1386,7 +1356,6 @@ void SoBrepFaceSet::renderSelection(SoGLRenderAction *action, SelContextPtr ctx, } if (push) { state->pop(); - // SoCacheElement::invalidate(state); } if (normalCacheUsed) diff --git a/src/Mod/Part/Gui/SoBrepFaceSet.h b/src/Mod/Part/Gui/SoBrepFaceSet.h index 9f9ae7c49f..ba760d8318 100644 --- a/src/Mod/Part/Gui/SoBrepFaceSet.h +++ b/src/Mod/Part/Gui/SoBrepFaceSet.h @@ -35,7 +35,6 @@ class SoGLCoordinateElement; class SoTextureCoordinateBundle; -// #define RENDER_GLARRAYS namespace PartGui { diff --git a/src/Mod/Part/Gui/TaskFaceColors.cpp b/src/Mod/Part/Gui/TaskFaceColors.cpp index 7a42bf4606..e5315c2901 100644 --- a/src/Mod/Part/Gui/TaskFaceColors.cpp +++ b/src/Mod/Part/Gui/TaskFaceColors.cpp @@ -185,32 +185,13 @@ public: Base::Vector3d pt2d; pt2d = proj(Base::Vector3d(p.X(), p.Y(), p.Z())); if (polygon.Contains(Base::Vector2d(pt2d.x, pt2d.y))) { -#if 0 - // TODO - if (isVisibleFace(k - 1, SbVec2f(pt2d.x, pt2d.y), viewer)) -#endif - { - std::stringstream str; - str << "Face" << k; - Gui::Selection().addSelection(appdoc->getName(), obj->getNameInDocument(), str.str().c_str()); - break; - } + std::stringstream str; + str << "Face" << k; + Gui::Selection().addSelection(appdoc->getName(), obj->getNameInDocument(), str.str().c_str()); + break; } xp_vertex.Next(); } - - //GProp_GProps props; - //BRepGProp::SurfaceProperties(face, props); - //gp_Pnt c = props.CentreOfMass(); - //Base::Vector3d pt2d; - //pt2d = proj(Base::Vector3d(c.X(), c.Y(), c.Z())); - //if (polygon.Contains(Base::Vector2d(pt2d.x, pt2d.y))) { - // if (isVisibleFace(k-1, SbVec2f(pt2d.x, pt2d.y), viewer)) { - // std::stringstream str; - // str << "Face" << k; - // Gui::Selection().addSelection(appdoc->getName(), obj->getNameInDocument(), str.str().c_str()); - // } - //} } } catch (...) { diff --git a/src/Mod/Part/Gui/ViewProvider2DObject.cpp b/src/Mod/Part/Gui/ViewProvider2DObject.cpp index f0578cd822..880586d337 100644 --- a/src/Mod/Part/Gui/ViewProvider2DObject.cpp +++ b/src/Mod/Part/Gui/ViewProvider2DObject.cpp @@ -92,9 +92,6 @@ ViewProvider2DObjectGrid::~ViewProvider2DObjectGrid() SoSeparator* ViewProvider2DObjectGrid::createGrid() { - //double dx = 10 * GridSize.getValue(); // carpet size - //double dy = 10 * GridSize.getValue(); - // float Size = (MaxX-MinX > MaxY-MinY) ? MaxX-MinX : MaxY-MinY; float Step = GridSize.getValue(); //pow(10,floor(log10(Size/5.0))); float MiX, MaX, MiY, MaY; if (TightGrid.getValue()) { @@ -133,35 +130,6 @@ SoSeparator* ViewProvider2DObjectGrid::createGrid() SoBaseColor *mycolor; SoVertexProperty *vts; - // carpet - /* mycolor = new SoBaseColor; - mycolor->rgb.setValue(0.2f, 0.7f, 0.7f); - parent->addChild(mycolor); - - vts = new SoVertexProperty; - vts->vertex.set1Value(0, -0.5*dx, -1.5*dy, 0.5*zGrid); - vts->vertex.set1Value(1, -0.5*dx, -1.5*dy, -0.5*zGrid); - vts->vertex.set1Value(2, 0.5*dx, -1.5*dy, 0.5*zGrid); - vts->vertex.set1Value(3, 0.5*dx, -1.5*dy, -0.5*zGrid); - - SoQuadMesh *carpet = new SoQuadMesh; - carpet->verticesPerColumn = 2; - carpet->verticesPerRow = 2; - carpet->vertexProperty = vts; - parent->addChild(carpet);*/ - - // It seems that SoDepthBuffer will mess up with other object's - // pre-selection highlight. No idea why the setting can leak out of a - // separator. - // - // What's the purpose of using SoDepthBuffer here anyway? If the intention - // is to render grid always on top, shouldn't it be better to use - // SoAnnotation? -#if 0 - SoDepthBuffer *depth = new SoDepthBuffer; - depth->function = SoDepthBuffer::ALWAYS; - parent->addChild(depth); -#endif // gridlines mycolor = new SoBaseColor; diff --git a/src/Mod/Part/Gui/ViewProviderExt.cpp b/src/Mod/Part/Gui/ViewProviderExt.cpp index c2953488d6..8c93ec571e 100644 --- a/src/Mod/Part/Gui/ViewProviderExt.cpp +++ b/src/Mod/Part/Gui/ViewProviderExt.cpp @@ -787,13 +787,6 @@ void ViewProviderPartExt::setHighlightedPoints(const std::vector& co getObject()->touch(true); int size = static_cast(colors.size()); if (size > 1) { -#if 0 - int numPoints = coords->point.getNum() - nodeset->startIndex.getValue(); - if (numPoints != size) { - SoDebugError::postWarning("ViewProviderPartExt::setHighlightedPoints", - "The number of points (%d) doesn't match with the number of colors (%d).", numPoints, size); - } -#endif pcPointBind->value = SoMaterialBinding::PER_VERTEX; pcPointMaterial->diffuseColor.setNum(size); SbColor* ca = pcPointMaterial->diffuseColor.startEditing();