float CCurvePathBezier3::ProcWeight0( float fP ) const { unsigned int uiIndex; float fPart; SplitIndex( fP, &uiIndex, &fPart ); return m_oLstCurve[uiIndex]->ProcWeight0( fPart ); }
CCurve::TVec CCurvePathBezier3::ProcColor( float fP ) const { unsigned int uiIndex; float fPart; SplitIndex( fP, &uiIndex, &fPart ); return m_oLstCurve[uiIndex]->ProcColor( fPart ); }
//======================================================================= // function: UpdateCommonBlocks // purpose: //======================================================================= void NMTTools_PaveFiller::UpdateCommonBlocks() { myIsDone=Standard_False; // Standard_Integer nE, aNbS, nSp, nEx, nSpx; NMTTools_ListIteratorOfListOfCommonBlock aCBIt; BOPTools_ListIteratorOfListOfPaveBlock aPBIt; // aNbS=myDS->NumberOfShapesOfTheObject(); // for (nE=1; nE<=aNbS; ++nE) { if (myDS->GetShapeType(nE)!=TopAbs_EDGE){ continue; } if (BRep_Tool::Degenerated(TopoDS::Edge(myDS->Shape(nE)))){ continue; } // NMTTools_ListOfCommonBlock& aLCB=myCommonBlockPool(myDS->RefEdge(nE)); /*BOPTools_ListOfPaveBlock& aLPB=*/mySplitShapesPool (myDS->RefEdge(nE)); // aCBIt.Initialize(aLCB); for (; aCBIt.More(); aCBIt.Next()) { NMTTools_CommonBlock& aCB=aCBIt.ChangeValue(); // // Among all PBs of aCB the first PB will be one // that have max tolerance value { Standard_Real aTolEx, aTolExMax; BOPTools_ListOfPaveBlock *pLPB, aLPBx; // aTolExMax=-1.; pLPB=(BOPTools_ListOfPaveBlock *)&aCB.PaveBlocks(); aPBIt.Initialize(*pLPB); for (; aPBIt.More(); aPBIt.Next()) { const BOPTools_PaveBlock& aPBx=aPBIt.Value(); nEx=aPBx.OriginalEdge(); const TopoDS_Edge& aEx=TopoDS::Edge(myDS->Shape(nEx)); aTolEx=BRep_Tool::Tolerance(aEx); if (aTolEx>aTolExMax) { aTolExMax=aTolEx; aLPBx.Prepend(aPBx); } else{ aLPBx.Append(aPBx); } } // pLPB->Clear(); *pLPB=aLPBx; } // BOPTools_PaveBlock& aPB=aCB.PaveBlock1(nE); nSp=SplitIndex(aPB); aPB.SetEdge(nSp); // const BOPTools_ListOfPaveBlock& aCBLPB=aCB.PaveBlocks(); aPBIt.Initialize(aCBLPB); for (; aPBIt.More(); aPBIt.Next()) { BOPTools_PaveBlock& aPBx=aPBIt.Value(); nEx=aPBx.OriginalEdge(); if (nEx==nE) { continue; } // nSpx=SplitIndex(aPBx); aPBx.SetEdge(nSpx); } // } } }