EgtGeomKernel : Migliorata interfaccia calcolo distanza punto-curva,
inoltre sistemata gestione per punti singoli e tratti continui
This commit is contained in:
+8
-3
@@ -292,8 +292,8 @@ GdbExecutor::ExecuteCurveLine( const string& sCmd2, const STRVECTOR& vsParams)
|
||||
}
|
||||
// creazione linea di minima distanza tra punto e curva
|
||||
else if ( sCmd2 == "MINPOINTCURVE" || sCmd2 == "MPC") {
|
||||
// 4 parametri
|
||||
if ( vsParams.size() != 4)
|
||||
// almeno 4 parametri
|
||||
if ( vsParams.size() < 4)
|
||||
return false ;
|
||||
// recupero l'identificativo del gruppo destinazione
|
||||
int nIdParent ;
|
||||
@@ -322,10 +322,15 @@ GdbExecutor::ExecuteCurveLine( const string& sCmd2, const STRVECTOR& vsParams)
|
||||
// porto il punto nel riferimento della curva
|
||||
Point3d ptSloc = ptStart ;
|
||||
ptSloc.LocToLoc( frPoint, frCurve) ;
|
||||
// recupero eventuale parametro per discriminare tra più soluzioni
|
||||
double dNearParam ;
|
||||
if ( vsParams.size() < 5 || ! FromString( vsParams[4], dNearParam))
|
||||
dNearParam = 0 ;
|
||||
// calcolo il punto a minima distanza
|
||||
int nFlag ;
|
||||
Point3d ptEnd ;
|
||||
DistPointCurve dstPtCurve( ptSloc, *pCurve) ;
|
||||
if ( ! dstPtCurve.GetPointMinDist( ptEnd))
|
||||
if ( ! dstPtCurve.GetMinDistPoint( dNearParam, ptEnd, nFlag))
|
||||
return false ;
|
||||
// porto il punto finale nel riferimento di creazione
|
||||
ptEnd.LocToLoc( frCurve, frPoint) ;
|
||||
|
||||
Reference in New Issue
Block a user