EgtGeomKernel :
- tolta da ChainCurves riduzione tolleranza con dimensione pezzi - aggiunte DistPointTriangle, IntersPlaneTria, IntersPlaneSurfTm - correzioni a IntersCrvCompoCrvCompo per topologia intersezioni - completamente riscritta IntersCoplanarLineTria per robustezza topologica.
This commit is contained in:
+5
-4
@@ -845,17 +845,18 @@ PolyLine::MyApproxOnSide( const Vector3d& vtN, bool bLeftSide, double dToler)
|
||||
( ! bLeftSide && dCrossXY > 0 && dCros2XY > 0)) {
|
||||
// calcolo del punto di intersezione tra i segmenti precP-currP e nextP-next2P, allungati al centro
|
||||
CurveLine Line1, Line2 ;
|
||||
if ( Line1.Set( precP->first, currP->first) && Line1.ExtendEndByLen( 1000) &&
|
||||
Line2.Set( nextP->first, nex2P->first) && Line2.ExtendStartByLen( 1000)) {
|
||||
if ( Line1.Set( precP->first, currP->first) &&
|
||||
Line2.Set( nextP->first, nex2P->first)) {
|
||||
// se la normale non coincide con l'asse Z, devo portare le linee nel riferimento OCS di questa
|
||||
Frame3d frNorm ;
|
||||
if ( ! vtN.IsZplus() && ! vtN.IsZminus())
|
||||
frNorm.Set( ORIG, vtN) ;
|
||||
Line1.ToLoc( frNorm) ;
|
||||
Line2.ToLoc( frNorm) ;
|
||||
IntersLineLine IntLL( Line1, Line2) ;
|
||||
IntersLineLine IntLL( Line1, Line2, false) ;
|
||||
IntCrvCrvInfo IntInfo ;
|
||||
if ( IntLL.GetIntCrvCrvInfo( IntInfo) && ! IntInfo.bOverlap) {
|
||||
if ( IntLL.GetIntCrvCrvInfo( IntInfo) &&
|
||||
! IntInfo.bOverlap && IntInfo.IciA[0].dU > 1 && IntInfo.IciB[0].dU < 0) {
|
||||
Point3d ptInt = 0.5 * ( IntInfo.IciA[0].ptI + IntInfo.IciB[0].ptI) ;
|
||||
ptInt.ToGlob( frNorm) ;
|
||||
// verifico che distanza dell'intersezione dal segmento currP-nextP sia inferiore a tolleranza corrente
|
||||
|
||||
Reference in New Issue
Block a user