EgtGeomKernel 1.5h5 :
- sistemata approssimazione di curve di Bezier con archi - aggiunta a CurveBezier metodo per sapere se è collassata in un punto - in PolyArc e PolyLine sostituite Splice con Join e aggiunte Split - in TSC non si accetta più la creazione di una curva di Bezier collassata in un punto.
This commit is contained in:
+42
-38
@@ -633,7 +633,7 @@ GdbExecutor::CurveLineMake( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo la linea
|
||||
PtrOwner<ICurveLine> pCrvLine( CreateCurveLine()) ;
|
||||
if ( ! IsValid( pCrvLine))
|
||||
if ( IsNull( pCrvLine))
|
||||
return false ;
|
||||
// setto la linea
|
||||
if ( ! pCrvLine->Set( ptStart, ptEnd))
|
||||
@@ -667,7 +667,7 @@ GdbExecutor::CurveLineVersorLength( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo la linea
|
||||
PtrOwner<ICurveLine> pCrvLine( CreateCurveLine()) ;
|
||||
if ( ! IsValid( pCrvLine))
|
||||
if ( IsNull( pCrvLine))
|
||||
return false ;
|
||||
// setto la linea
|
||||
if ( ! pCrvLine->SetPVL( ptStart, vtDir, dLen))
|
||||
@@ -701,7 +701,7 @@ GdbExecutor::CurveLineDirLength( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo la linea
|
||||
PtrOwner<ICurveLine> pCrvLine( CreateCurveLine()) ;
|
||||
if ( ! IsValid( pCrvLine))
|
||||
if ( IsNull( pCrvLine))
|
||||
return false ;
|
||||
// setto la linea
|
||||
if ( ! pCrvLine->SetPDL( ptStart, dDirAngDeg, dLen))
|
||||
@@ -799,7 +799,7 @@ GdbExecutor::CurveLineTgTwoArcs( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// porto il secondo arco nel riferimento del primo
|
||||
PtrOwner<ICurveArc> pArc2Loc( CreateCurveArc()) ;
|
||||
if ( ! IsValid( pArc2Loc))
|
||||
if ( IsNull( pArc2Loc))
|
||||
return false ;
|
||||
pArc2Loc->CopyFrom( pArc2) ;
|
||||
pArc2Loc->LocToLoc( frArc2, frArc1) ;
|
||||
@@ -863,7 +863,7 @@ GdbExecutor::CurveLineMinPointCurve( const STRVECTOR& vsParams)
|
||||
ptEnd.LocToLoc( frCurve, frPoint) ;
|
||||
// creo la linea
|
||||
PtrOwner<ICurveLine> pCrvLine( CreateCurveLine()) ;
|
||||
if ( ! IsValid( pCrvLine))
|
||||
if ( IsNull( pCrvLine))
|
||||
return false ;
|
||||
// setto la linea
|
||||
if ( ! pCrvLine->Set( ptStart, ptEnd))
|
||||
@@ -966,7 +966,7 @@ GdbExecutor::CurveCircleMake( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo l'arco
|
||||
PtrOwner<ICurveArc> pCrvArc( CreateCurveArc()) ;
|
||||
if ( ! IsValid( pCrvArc))
|
||||
if ( IsNull( pCrvArc))
|
||||
return false ;
|
||||
// setto l'arco
|
||||
if ( ! pCrvArc->Set( ptCen, vtN, dRad))
|
||||
@@ -996,7 +996,7 @@ GdbExecutor::CurveCirclePlaneXY( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo l'arco
|
||||
PtrOwner<ICurveArc> pCrvArc( CreateCurveArc()) ;
|
||||
if ( ! IsValid( pCrvArc))
|
||||
if ( IsNull( pCrvArc))
|
||||
return false ;
|
||||
// setto l'arco
|
||||
if ( ! pCrvArc->SetXY( ptCen, dRad))
|
||||
@@ -1042,7 +1042,7 @@ GdbExecutor::CurveArcMake( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo l'arco
|
||||
PtrOwner<ICurveArc> pCrvArc( CreateCurveArc()) ;
|
||||
if ( ! IsValid( pCrvArc))
|
||||
if ( IsNull( pCrvArc))
|
||||
return false ;
|
||||
// setto l'arco
|
||||
if ( ! pCrvArc->Set( ptCen, vtN, dRad, vtS, dAngCenDeg, dDeltaZ))
|
||||
@@ -1084,7 +1084,7 @@ GdbExecutor::CurveArcPlaneXY( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo l'arco
|
||||
PtrOwner<ICurveArc> pCrvArc( CreateCurveArc()) ;
|
||||
if ( ! IsValid( pCrvArc))
|
||||
if ( IsNull( pCrvArc))
|
||||
return false ;
|
||||
// setto l'arco
|
||||
if ( ! pCrvArc->SetXY( ptCen, dRad, dAngIniDeg, dAngCenDeg, dDeltaZ))
|
||||
@@ -1118,7 +1118,7 @@ GdbExecutor::CurveArcCircle3P( const STRVECTOR& vsParams, bool bCirc)
|
||||
return false ;
|
||||
// creo l'arco
|
||||
PtrOwner<ICurveArc> pCrvArc( CreateCurveArc()) ;
|
||||
if ( ! IsValid( pCrvArc))
|
||||
if ( IsNull( pCrvArc))
|
||||
return false ;
|
||||
// setto l'arco
|
||||
if ( ! pCrvArc->Set3P( ptP0, ptP1, ptP2, bCirc))
|
||||
@@ -1187,7 +1187,7 @@ GdbExecutor::CurveArc2PRS( const STRVECTOR& vsParams)
|
||||
bCCW = false ;
|
||||
// creo l'arco
|
||||
PtrOwner<ICurveArc> pCrvArc( CreateCurveArc()) ;
|
||||
if ( ! IsValid( pCrvArc))
|
||||
if ( IsNull( pCrvArc))
|
||||
return false ;
|
||||
// setto l'arco
|
||||
if ( ! pCrvArc->Set2PRS( ptPi, ptPf, dRad, bCCW))
|
||||
@@ -1221,7 +1221,7 @@ GdbExecutor::CurveArcC2P( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo l'arco
|
||||
PtrOwner<ICurveArc> pCrvArc( CreateCurveArc()) ;
|
||||
if ( ! IsValid( pCrvArc))
|
||||
if ( IsNull( pCrvArc))
|
||||
return false ;
|
||||
// setto l'arco
|
||||
if ( ! pCrvArc->SetC2P( ptCen, ptPi, ptNearPf))
|
||||
@@ -1487,7 +1487,7 @@ GdbExecutor::ExecuteCurveBez( const string& sCmd2, const STRVECTOR& vsParams)
|
||||
{
|
||||
// creo la curva di Bezier
|
||||
PtrOwner<ICurveBezier> pCrvBez( CreateCurveBezier()) ;
|
||||
if ( ! IsValid( pCrvBez))
|
||||
if ( IsNull( pCrvBez))
|
||||
return false ;
|
||||
// per cancellazione eventuale arco di origine
|
||||
bool bErase = false ;
|
||||
@@ -1578,6 +1578,10 @@ GdbExecutor::ExecuteCurveBez( const string& sCmd2, const STRVECTOR& vsParams)
|
||||
else
|
||||
return false ;
|
||||
|
||||
// se curva nulla (ovvero ridotta a punto), errore
|
||||
if ( pCrvBez->IsAPoint())
|
||||
return false ;
|
||||
|
||||
// inserisco la curva di Bezier nel DB
|
||||
if ( AddGeoObj( vsParams[0], vsParams[1], Release( pCrvBez))) {
|
||||
// se richiesto, cancello eventuale arco di origine
|
||||
@@ -1650,7 +1654,7 @@ GdbExecutor::CurveCompoMake( const STRVECTOR& vsParams)
|
||||
{
|
||||
// creo la curva composita
|
||||
PtrOwner<ICurveComposite> pCrvCompo( CreateCurveComposite()) ;
|
||||
if ( ! IsValid( pCrvCompo))
|
||||
if ( IsNull( pCrvCompo))
|
||||
return false ;
|
||||
// 3 o 4 parametri
|
||||
bool bErase ;
|
||||
@@ -1689,7 +1693,7 @@ GdbExecutor::CurveCompoMake( const STRVECTOR& vsParams)
|
||||
else {
|
||||
// creo una copia della curva (da buttare alla fine)
|
||||
PtrOwner<ICurve> pModCrv( pCrv->Clone()) ;
|
||||
if ( ! IsValid( pModCrv))
|
||||
if ( IsNull( pModCrv))
|
||||
return false ;
|
||||
// eseguo la trasformazione
|
||||
pModCrv->ToGlob( frSou) ;
|
||||
@@ -1732,7 +1736,7 @@ GdbExecutor::CurveCompoFromPoints( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo la curva composita
|
||||
PtrOwner<ICurveComposite> pCrvCompo( CreateCurveComposite()) ;
|
||||
if ( ! IsValid( pCrvCompo))
|
||||
if ( IsNull( pCrvCompo))
|
||||
return false ;
|
||||
// inserisco i segmenti che uniscono i punti
|
||||
if ( ! pCrvCompo->FromPolyLine( PL))
|
||||
@@ -1758,7 +1762,7 @@ GdbExecutor::CurveCompoFromPointBulges( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo la curva composita
|
||||
PtrOwner<ICurveComposite> pCrvCompo( CreateCurveComposite()) ;
|
||||
if ( ! IsValid( pCrvCompo))
|
||||
if ( IsNull( pCrvCompo))
|
||||
return false ;
|
||||
// inserisco i segmenti che uniscono i punti
|
||||
if ( ! pCrvCompo->FromPolyArc( PA))
|
||||
@@ -1810,7 +1814,7 @@ GdbExecutor::CurveCompoFromPointInterpolation( const STRVECTOR& vsParams)
|
||||
crvByInterp.AddPoint( ptP) ;
|
||||
crvByInterp.End() ;
|
||||
PtrOwner<ICurve> pCrv( crvByInterp.GetCurve( nMethod, nType)) ;
|
||||
if ( ! ::IsValid( pCrv))
|
||||
if ( IsNull( pCrv))
|
||||
return false ;
|
||||
// inserisco la curva composita nel DB
|
||||
return AddGeoObj( vsParams[0], vsParams[1], ::Release( pCrv)) ;
|
||||
@@ -1843,7 +1847,7 @@ GdbExecutor::CurveCompoFromCurveApproximation( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// eseguo l'approssimazione
|
||||
PtrOwner<ICurveComposite> pCC( CreateCurveComposite()) ;
|
||||
if ( ! IsValid( pCC))
|
||||
if ( IsNull( pCC))
|
||||
return false ;
|
||||
if ( nType == 1) { // con linee
|
||||
PolyLine PL ;
|
||||
@@ -1876,7 +1880,7 @@ GdbExecutor::CurveCompoFromSplit( const STRVECTOR& vsParams)
|
||||
|
||||
// creo la curva composita
|
||||
PtrOwner<ICurveComposite> pCrvCompo( CreateCurveComposite()) ;
|
||||
if ( ! IsValid( pCrvCompo))
|
||||
if ( IsNull( pCrvCompo))
|
||||
return false ;
|
||||
|
||||
// salvo nome curva originale per eventuale cancellazione
|
||||
@@ -1944,7 +1948,7 @@ GdbExecutor::CurveCompoFromPolygon( const STRVECTOR& vsParams, int nType)
|
||||
return false ;
|
||||
// creo la curva composita
|
||||
PtrOwner<ICurveComposite> pCrvCompo( CreateCurveComposite()) ;
|
||||
if ( ! IsValid( pCrvCompo))
|
||||
if ( IsNull( pCrvCompo))
|
||||
return false ;
|
||||
// costruisco il poligono
|
||||
switch ( nType) {
|
||||
@@ -2001,7 +2005,7 @@ GdbExecutor::CurveCompoFromBiarc( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// costruisco il biarco
|
||||
PtrOwner<ICurve> pBiArc( GetBiArc( ptP1, dDir1, ptP2, dDir2, dPar)) ;
|
||||
if ( ! ::IsValid( pBiArc))
|
||||
if ( IsNull( pBiArc))
|
||||
return false ;
|
||||
// inserisco la curva nel DB
|
||||
return AddGeoObj( vsParams[0], vsParams[1], Release( pBiArc)) ;
|
||||
@@ -2334,7 +2338,7 @@ GdbExecutor::SurfTriMeshByContour( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo la superficie
|
||||
PtrOwner<ISurfTriMesh> pSTM( CreateSurfTriMesh()) ;
|
||||
if ( ! IsValid( pSTM))
|
||||
if ( IsNull( pSTM))
|
||||
return false ;
|
||||
// costruisco la triangolazione
|
||||
if ( ! pSTM->CreateByFlatContour( PL))
|
||||
@@ -2370,7 +2374,7 @@ GdbExecutor::SurfTriMeshByExtrusion( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo la superficie
|
||||
PtrOwner<ISurfTriMesh> pSTM( CreateSurfTriMesh()) ;
|
||||
if ( ! IsValid( pSTM))
|
||||
if ( IsNull( pSTM))
|
||||
return false ;
|
||||
// costruisco l'estrusione
|
||||
if ( ! pSTM->CreateByExtrusion( PL, vtExtr))
|
||||
@@ -2408,7 +2412,7 @@ GdbExecutor::SurfTriMeshByTwoPaths( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo la superficie
|
||||
PtrOwner<ISurfTriMesh> pSTM( CreateSurfTriMesh()) ;
|
||||
if ( ! IsValid( pSTM))
|
||||
if ( IsNull( pSTM))
|
||||
return false ;
|
||||
// costruisco la rigata tra le due curve
|
||||
if ( ! pSTM->CreateByTwoCurves( PL1, PL2))
|
||||
@@ -2476,7 +2480,7 @@ GdbExecutor::SurfTriMeshByScrewing( bool bMove, const STRVECTOR& vsParams)
|
||||
double dStepRotDeg = sqrt( 8 * dLinTol / dMaxRad) * RADTODEG ;
|
||||
// creo la superficie
|
||||
PtrOwner<ISurfTriMesh> pSTM( CreateSurfTriMesh()) ;
|
||||
if ( ! IsValid( pSTM))
|
||||
if ( IsNull( pSTM))
|
||||
return false ;
|
||||
// costruisco la rivoluzione
|
||||
if ( ! pSTM->CreateByScrewing( PL, ptAx, vtAx, dAngRotDeg, dStepRotDeg, dMove))
|
||||
@@ -2508,7 +2512,7 @@ GdbExecutor::GetPolyLineFromCurve( int nId, const Frame3d& frDest, double dLinTo
|
||||
else {
|
||||
// creo una copia della curva (da buttare alla fine)
|
||||
PtrOwner<ICurve> pModCrv( pCrv->Clone()) ;
|
||||
if ( ! IsValid( pModCrv))
|
||||
if ( IsNull( pModCrv))
|
||||
return false ;
|
||||
// eseguo la trasformazione
|
||||
pModCrv->LocToLoc( frCrv, frDest) ;
|
||||
@@ -2542,7 +2546,7 @@ GdbExecutor::GetPolyArcFromCurve( int nId, const Frame3d& frDest, double dLinTol
|
||||
else {
|
||||
// creo una copia della curva (da buttare alla fine)
|
||||
PtrOwner<ICurve> pModCrv( pCrv->Clone()) ;
|
||||
if ( ! IsValid( pModCrv))
|
||||
if ( IsNull( pModCrv))
|
||||
return false ;
|
||||
// eseguo la trasformazione
|
||||
pModCrv->LocToLoc( frCrv, frDest) ;
|
||||
@@ -2710,7 +2714,7 @@ GdbExecutor::TextSimple( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo il testo
|
||||
PtrOwner<IExtText> pTXT( CreateExtText()) ;
|
||||
if ( ! IsValid( pTXT))
|
||||
if ( IsNull( pTXT))
|
||||
return false ;
|
||||
// lo riempio
|
||||
if ( ! pTXT->Set( sText, ptP, dAngRotDeg, dH))
|
||||
@@ -2785,7 +2789,7 @@ GdbExecutor::TextComplete( const STRVECTOR& vsParams)
|
||||
nInsPos = ETXT_IPBR ;
|
||||
// creo il testo
|
||||
PtrOwner<IExtText> pTXT( CreateExtText()) ;
|
||||
if ( ! IsValid( pTXT))
|
||||
if ( IsNull( pTXT))
|
||||
return false ;
|
||||
// lo riempio
|
||||
if ( ! pTXT->Set( sText, ptP, dAngRotDeg, vsParams[5], nW, bItl, dH, dRat, dAddAdv, nInsPos))
|
||||
@@ -3291,7 +3295,7 @@ GdbExecutor::GetPointParam( const string& sParam, const Frame3d& frPnt, Point3d&
|
||||
PtrOwner<ICurve> crvTrans( nullptr) ;
|
||||
if ( ! AreSameFrame( frEnt, frEnt2)) {
|
||||
crvTrans.Set( pCrv2->Clone()) ;
|
||||
if ( ! ::IsValid( crvTrans))
|
||||
if ( IsNull( crvTrans))
|
||||
return false ;
|
||||
crvTrans->LocToLoc( frEnt2, frEnt) ;
|
||||
pCrv2 = ::Get( crvTrans) ;
|
||||
@@ -4888,7 +4892,7 @@ GdbExecutor::CurveCopyByParamRange( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// copio la parte di curva che interessa e la porto nel riferimento del gruppo destinazione
|
||||
PtrOwner<ICurve> pCopy( pCrv->CopyParamRange( dUStart, dUEnd)) ;
|
||||
if ( ! ::IsValid( pCopy))
|
||||
if ( IsNull( pCopy))
|
||||
return false ;
|
||||
pCopy->LocToLoc( frCrv, frDest) ;
|
||||
// la inserisco nel gruppo
|
||||
@@ -4926,7 +4930,7 @@ GdbExecutor::CurveCopyBySplitClass( const STRVECTOR& vsParams)
|
||||
PtrOwner<ICurve> crvTrans ;
|
||||
if ( ! AreSameFrame( frCrv, frCloCrv)) {
|
||||
crvTrans.Set( pCloCrv->Clone()) ;
|
||||
if ( ! ::IsValid( crvTrans))
|
||||
if ( IsNull( crvTrans))
|
||||
return false ;
|
||||
crvTrans->LocToLoc( frCloCrv, frCrv) ;
|
||||
pCloCrv = ::Get( crvTrans) ;
|
||||
@@ -4965,7 +4969,7 @@ GdbExecutor::CurveCopyBySplitClass( const STRVECTOR& vsParams)
|
||||
continue ;
|
||||
// copio la parte di curva che interessa e la porto nel riferimento del gruppo
|
||||
PtrOwner<ICurve> pSplit( pCrv->CopyParamRange( ccClass[i].dParS, ccClass[i].dParE)) ;
|
||||
if ( ! ::IsValid( pSplit))
|
||||
if ( IsNull( pSplit))
|
||||
continue ;
|
||||
pSplit->LocToLoc( frCrv, frGrp[nGrp]) ;
|
||||
// la inserisco nel gruppo
|
||||
@@ -5033,7 +5037,7 @@ GdbExecutor::CurveCopyByChain( const STRVECTOR& vsParams)
|
||||
while ( chainC.GetChainFromNear( ptNearStart, vIds)) {
|
||||
// creo una curva composita
|
||||
PtrOwner<ICurveComposite> pCrvCompo( CreateCurveComposite()) ;
|
||||
if ( ! IsValid( pCrvCompo))
|
||||
if ( IsNull( pCrvCompo))
|
||||
return false ;
|
||||
// recupero le curve semplici e le inserisco nella curva composita
|
||||
INTVECTOR::iterator Iter ;
|
||||
@@ -5049,7 +5053,7 @@ GdbExecutor::CurveCopyByChain( const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// copio la curva
|
||||
PtrOwner<ICurve> pCopCrv( pCrv->Clone()) ;
|
||||
if ( ! IsValid( pCopCrv))
|
||||
if ( IsNull( pCopCrv))
|
||||
return false ;
|
||||
// se necessario, la inverto
|
||||
if ( bInvert)
|
||||
@@ -5186,7 +5190,7 @@ GdbExecutor::ExecuteOutTextIcci( const string& sCmd2, const STRVECTOR& vsParams)
|
||||
PtrOwner<ICurve> crvTrans ;
|
||||
if ( ! AreSameFrame( frEnt1, frEnt2)) {
|
||||
crvTrans.Set( pCrv2->Clone()) ;
|
||||
if ( ! ::IsValid( crvTrans))
|
||||
if ( IsNull( crvTrans))
|
||||
return false ;
|
||||
crvTrans->LocToLoc( frEnt2, frEnt1) ;
|
||||
pCrv2 = ::Get( crvTrans) ;
|
||||
@@ -5255,7 +5259,7 @@ GdbExecutor::ExecuteOutTextIcci( const string& sCmd2, const STRVECTOR& vsParams)
|
||||
return false ;
|
||||
// creo il testo
|
||||
PtrOwner<IExtText> pTXT( CreateExtText()) ;
|
||||
if ( ! IsValid( pTXT))
|
||||
if ( IsNull( pTXT))
|
||||
return false ;
|
||||
// lo riempio
|
||||
if ( ! pTXT->Set( sText, ptText, 0, dH))
|
||||
|
||||
Reference in New Issue
Block a user