EgtGeomKernel :

- corretto caso non gestito nelle dimensioni angolari.
This commit is contained in:
Daniele Bariletti
2024-03-22 17:59:40 +01:00
parent 07faeaaa11
commit ba66891539
+18 -2
View File
@@ -28,6 +28,7 @@
#include "/EgtDev/Include/EgtNumUtils.h"
#include "/EgtDev/Include/EGkCurve.h"
#include <new>
#include <algorithm>
using namespace std ;
@@ -319,8 +320,23 @@ ExtDimension::SetAngularEx( const Point3d& ptV1, const Point3d& ptP1,
dLenDir = m_vtDir.Len() ;
}
// assegno gli altri punti notevoli della quotatura
m_ptP1 = ptV1 - ( ptV1 - m_ptP6) * m_vtN * m_vtN ;
m_ptP2 = ptV2 - ( ptV2 - m_ptP6) * m_vtN * m_vtN ;
// se i ptV concidono con l'intersezione tra le linee le sposto leggermente verso l'altro punto di quel lato
Point3d ptV1New = ptV1 ;
Point3d ptV2New = ptV2 ;
if ( AreSamePointApprox( ptV1, ptV)) {
Vector3d vtDir1 ; Line1.GetStartDir( vtDir1) ;
double dLen ; Line1.GetLength( dLen) ;
dLen = max( min( 1., dLen/ 10), 0.01) ;
ptV1New = ptV1 + vtDir1 * dLen ;
}
if ( AreSamePointApprox( ptV2, ptV)) {
Vector3d vtDir2 ; Line2.GetStartDir( vtDir2) ;
double dLen ; Line2.GetLength( dLen) ;
dLen = max( min( 1., dLen/ 10), 0.01) ;
ptV2New = ptV2 + vtDir2 * dLen ;
}
m_ptP1 = ptV1New - ( ptV1New - m_ptP6) * m_vtN * m_vtN ;
m_ptP2 = ptV2New - ( ptV2New - m_ptP6) * m_vtN * m_vtN ;
m_ptP5 = m_ptP6 + vtLine1 * dLenDir ;
double dLen1 = Dist( m_ptP6, m_ptP1) ;
m_ptP3 = m_ptP6 + vtLine1 * ( dLenDir + m_dExtLineLen * ( dLen1 < dLenDir ? 1 : -1)) ;