EgtInterface 1.5k5 :

- aggiunta EgtTrimExtendCurveByLen
- aggiunta EgtOffsetCurve
- aggiunte EgtCurveLength e EgtCurveLengthAtPoint
- aggiunta EgtGetPointFromSelect.
This commit is contained in:
Dario Sassi
2014-12-01 14:52:58 +00:00
parent 5642eb01eb
commit 339777e202
5 changed files with 476 additions and 19 deletions
+35 -5
View File
@@ -195,7 +195,7 @@ __stdcall EgtExtendCurveEndByLen( int nId, double dLen)
//----------------------------------------------------------------------------
BOOL
__stdcall EgtExtendCurveByLen( int nId, double dLen, const double ptNear[3])
__stdcall EgtTrimExtendCurveByLen( int nId, double dLen, const double ptNear[3])
{
IGeomDB* pGeomDB = GetCurrGeomDB() ;
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
@@ -207,10 +207,26 @@ __stdcall EgtExtendCurveByLen( int nId, double dLen, const double ptNear[3])
Point3d ptStart, ptEnd ;
if ( ! pCurve->GetStartPoint( ptStart) || ! pCurve->GetEndPoint( ptEnd))
return FALSE ;
if ( SqDist( ptStart, ptNear) < SqDist( ptEnd, ptNear))
return ( pCurve->ExtendStartByLen( dLen) ? TRUE : FALSE) ;
else
return ( pCurve->ExtendEndByLen( dLen) ? TRUE : FALSE) ;
if ( SqDist( ptStart, ptNear) < SqDist( ptEnd, ptNear)) {
if ( dLen < - EPS_SMALL)
return ( pCurve->TrimStartAtLen( - dLen) ? TRUE : FALSE) ;
else if ( dLen > EPS_SMALL)
return ( pCurve->ExtendStartByLen( dLen) ? TRUE : FALSE) ;
else
return TRUE ;
}
else {
if ( dLen < - EPS_SMALL) {
double dCrvLen ;
if ( ! pCurve->GetLength( dCrvLen))
return FALSE ;
return ( pCurve->TrimEndAtLen( dCrvLen + dLen) ? TRUE : FALSE) ;
}
else if ( dLen > EPS_SMALL)
return ( pCurve->ExtendEndByLen( dLen) ? TRUE : FALSE) ;
else
return TRUE ;
}
}
//----------------------------------------------------------------------------
@@ -239,6 +255,20 @@ __stdcall EgtSplitCurveAtPoint( int nId, double ptOn[3])
return ( EgtTrimCurveStartAtParam( nCopyId, dU) ? TRUE : FALSE) ;
}
//----------------------------------------------------------------------------
BOOL
__stdcall EgtOffsetCurve( int nId, double dDist, int nSide, int nType)
{
IGeomDB* pGeomDB = GetCurrGeomDB() ;
VERIFY_GEOMDB( pGeomDB, FALSE)
// recupero la curva
ICurve* pCurve = GetCurve( pGeomDB->GetGeoObj( nId)) ;
if ( pCurve == nullptr)
return FALSE ;
// eseguo l'offset
return ( pCurve->Offset( dDist, nSide, nType) ? TRUE : FALSE) ;
}
//-------------------------------------------------------------------------------
BOOL
__stdcall EgtModifyCurveCircleCPN( int nId, const double ptOn[3])