EgtExecutor 1.6f1 :

- corretto errore in trim/extend di curve chiuse
- aggiunta ExeCurveDomain
- aggiunta ExeCurveNearestExtremityToPoint
- modificata ExeGetMinDistPointCurve (aggiunto un parametro).
This commit is contained in:
Dario Sassi
2015-06-06 17:55:02 +00:00
parent e2b54a993b
commit 487f2b68ce
5 changed files with 80 additions and 7 deletions
+20 -3
View File
@@ -452,9 +452,9 @@ ExeTrimExtendCurveByLen( int nId, double dLen, const Point3d& ptNear, int nRefTy
// porto in locale il punto
Point3d ptNearL = GetPointLocal( pGeomDB, ptNear, nRefType, frLoc) ;
// cerco l'estremo più vicino al punto passato
Point3d ptStart, ptEnd ;
if ( bOk && pCurve->GetStartPoint( ptStart) && pCurve->GetEndPoint( ptEnd)) {
if ( SqDist( ptStart, ptNearL) < SqDist( ptEnd, ptNearL)) {
bool bStart ;
if ( bOk && pCurve->GetNearestExtremityToPoint( ptNearL, bStart)) {
if ( bStart) {
if ( dLen < - EPS_SMALL)
bOk = pCurve->TrimStartAtLen( - dLen) ;
else if ( dLen > EPS_SMALL)
@@ -469,6 +469,23 @@ ExeTrimExtendCurveByLen( int nId, double dLen, const Point3d& ptNear, int nRefTy
bOk = pCurve->ExtendEndByLen( dLen) ;
}
}
//Point3d ptStart, ptEnd ;
//if ( bOk && pCurve->GetStartPoint( ptStart) && pCurve->GetEndPoint( ptEnd)) {
// if ( SqDist( ptStart, ptNearL) < SqDist( ptEnd, ptNearL)) {
// if ( dLen < - EPS_SMALL)
// bOk = pCurve->TrimStartAtLen( - dLen) ;
// else if ( dLen > EPS_SMALL)
// bOk = pCurve->ExtendStartByLen( dLen) ;
// }
// else {
// if ( dLen < - EPS_SMALL) {
// double dCrvLen ;
// bOk = pCurve->GetLength( dCrvLen) && pCurve->TrimEndAtLen( dCrvLen + dLen) ;
// }
// else if ( dLen > EPS_SMALL)
// bOk = pCurve->ExtendEndByLen( dLen) ;
// }
//}
else
bOk = false ;
ExeSetModified() ;