EgtInterface 1.5l1 :
- aggiornamento a VS2013 - alle curve si assegna in automatico estrusione come Z di griglia - aggiunta gestione direttorio per librerie Lua - aggiunta gestione frame di griglia (CPlane) in GeomDB - aggiunta gestione visualizzazione riferimento globale - aggiunto comando Lua EgtOffsetCurve - aggiunti comandi Lua EgtExecTsc, EgtOutLog, EgtEraseFile, EgtEmptyDirectory, EgtTextFileCompare, EgtBinaryFileCompare, EgtGetVersion - aggiunti comandi Lua EgtSetGridFrame, EgtGetGridFrame, EgtGetGridVersZ.
This commit is contained in:
+113
-9
@@ -47,6 +47,7 @@ static ICurveLine* __stdcall CreateLinePerpTwoCurves( IGeomDB* pGeomDB, int nPar
|
||||
const Point3d& ptIni, int nIdI, const Point3d& ptFin, int nIdF) ;
|
||||
static ICurveLine* __stdcall CreateLineTgCurvePerpCurve( IGeomDB* pGeomDB, int nParentId,
|
||||
const Point3d& ptIni, int nIdI, const Point3d& ptFin, int nIdF) ;
|
||||
static bool __stdcall SetExtrusionFromGridVersZ( IGeomDB* pGeomDB, int nParentId, ICurve* pCurve) ;
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
@@ -61,6 +62,9 @@ __stdcall EgtCreateCurveLine( int nParentId, const double ptIni[3], const double
|
||||
// setto la linea
|
||||
if ( ! pCrvLine->Set( ptIni, ptFin))
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvLine)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la linea nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvLine)) ;
|
||||
}
|
||||
@@ -153,6 +157,9 @@ __stdcall EgtCreateCurveLineEx( int nParentId, const double ptIni[3], int nSepI,
|
||||
else {
|
||||
return GDB_ID_NULL ;
|
||||
}
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvLine)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la linea nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvLine)) ;
|
||||
}
|
||||
@@ -431,6 +438,9 @@ __stdcall EgtCreateCurveLinePVL( int nParentId, const double ptIni[3], const dou
|
||||
// setto la linea
|
||||
if ( ! pCrvLine->SetPVL( ptIni, vtDir, dLen))
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvLine)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la linea nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvLine)) ;
|
||||
}
|
||||
@@ -472,6 +482,9 @@ __stdcall EgtCreateCurveLineMinPointCurve( int nParentId,
|
||||
// setto la linea
|
||||
if ( ! pCrvLine->Set( ptStart, ptEnd))
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvLine)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la linea nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvLine)) ;
|
||||
}
|
||||
@@ -490,6 +503,9 @@ __stdcall EgtCreateCurveCircle( int nParentId,
|
||||
// setto la circonferenza
|
||||
if ( ! pCrvArc->Set( ptCen, vtN, dRad))
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvArc)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco l'arco nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvArc)) ;
|
||||
}
|
||||
@@ -508,6 +524,9 @@ __stdcall EgtCreateCurveCircleXY( int nParentId,
|
||||
// setto la circonferenza
|
||||
if ( ! pCrvArc->SetXY( ptCen, dRad))
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvArc)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco l'arco nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvArc)) ;
|
||||
}
|
||||
@@ -528,6 +547,9 @@ __stdcall EgtCreateCurveCircleCPN( int nParentId,
|
||||
// setto la circonferenza
|
||||
if ( ! pCrvArc->Set( ptCen, vtN, dRad))
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvArc)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco l'arco nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvArc)) ;
|
||||
}
|
||||
@@ -546,6 +568,9 @@ __stdcall EgtCreateCurveCircle3P( int nParentId,
|
||||
// setto l'arco
|
||||
if ( ! pCrvArc->Set3P( ptP1, ptP2, ptP3, true))
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvArc)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco l'arco nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvArc)) ;
|
||||
}
|
||||
@@ -565,6 +590,9 @@ __stdcall EgtCreateCurveArc( int nParentId,
|
||||
// setto l'arco
|
||||
if ( ! pCrvArc->Set( ptCen, vtN, dRad, vtS, dAngCenDeg, dDeltaN))
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvArc)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco l'arco nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvArc)) ;
|
||||
}
|
||||
@@ -584,6 +612,9 @@ __stdcall EgtCreateCurveArcXY( int nParentId,
|
||||
// setto l'arco
|
||||
if ( ! pCrvArc->SetXY( ptCen, dRad, dAngStartDeg, dAngCenDeg, dDeltaZ))
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvArc)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco l'arco nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvArc)) ;
|
||||
}
|
||||
@@ -600,9 +631,13 @@ __stdcall EgtCreateCurveArc3P( int nParentId,
|
||||
if ( IsNull( pCrvArc))
|
||||
return GDB_ID_NULL ;
|
||||
// setto l'arco
|
||||
if ( pCrvArc->Set3P( ptP1, ptP2, ptP3, false))
|
||||
if ( pCrvArc->Set3P( ptP1, ptP2, ptP3, false)) {
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvArc)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco l'arco nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvArc)) ;
|
||||
}
|
||||
// se risulta essere una retta
|
||||
if ( ( Point3d( ptP2) - Point3d( ptP1)) * ( Point3d( ptP3) - Point3d( ptP2)) > EPS_ZERO)
|
||||
return EgtCreateCurveLine( nParentId, ptP1, ptP3) ;
|
||||
@@ -624,6 +659,9 @@ __stdcall EgtCreateCurveArcC2PN( int nParentId,
|
||||
// setto l'arco
|
||||
if ( ! pCrvArc->SetC2PN( ptCen, ptStart, ptNearEnd, vtNorm))
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvArc)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco l'arco nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvArc)) ;
|
||||
}
|
||||
@@ -640,9 +678,13 @@ __stdcall EgtCreateCurveArc2PVN( int nParentId,
|
||||
if ( IsNull( pCrvArc))
|
||||
return GDB_ID_NULL ;
|
||||
// setto l'arco
|
||||
if ( pCrvArc->Set2PVN( ptStart, ptEnd, vtDirS, vtNorm))
|
||||
if ( pCrvArc->Set2PVN( ptStart, ptEnd, vtDirS, vtNorm)) {
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvArc)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco l'arco nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvArc)) ;
|
||||
}
|
||||
// se risulta essere una retta
|
||||
if ( ( Point3d( ptEnd) - Point3d( ptStart)) * Vector3d( vtDirS) > EPS_ZERO)
|
||||
return EgtCreateCurveLine( nParentId, ptStart, ptEnd) ;
|
||||
@@ -686,6 +728,9 @@ __stdcall EgtCreateCurveBezier( int nParentId, int nDegree, const PNTVECTOR& vPn
|
||||
// se curva nulla (ovvero ridotta a punto), errore
|
||||
if ( pCrvBez->IsAPoint())
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvBez)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la curva nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvBez)) ;
|
||||
}
|
||||
@@ -726,6 +771,9 @@ __stdcall EgtCreateCurveBezierRational( int nParentId, int nDegree, const PNTUVE
|
||||
// se curva nulla (ovvero ridotta a punto), errore
|
||||
if ( pCrvBez->IsAPoint())
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvBez)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la curva nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvBez)) ;
|
||||
}
|
||||
@@ -832,15 +880,16 @@ __stdcall EgtCreateCurveCompo( int nParentId, const INTVECTOR& vIds, bool bErase
|
||||
return false ;
|
||||
}
|
||||
}
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvCompo)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la curva composita nel DB
|
||||
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvCompo)) ;
|
||||
if ( nId != GDB_ID_NULL) {
|
||||
// se richiesto, cancello le curve originali
|
||||
if ( bErase) {
|
||||
for ( Iter = vIds.begin() ; Iter != vIds.end() ; ++Iter) {
|
||||
if ( ! pGeomDB->Erase( *Iter))
|
||||
return GDB_ID_NULL ;
|
||||
}
|
||||
// se ok e richiesto, cancello le curve originali
|
||||
if ( nId != GDB_ID_NULL && bErase) {
|
||||
for ( Iter = vIds.begin() ; Iter != vIds.end() ; ++Iter) {
|
||||
if ( ! pGeomDB->Erase( *Iter))
|
||||
return GDB_ID_NULL ;
|
||||
}
|
||||
}
|
||||
return nId ;
|
||||
@@ -994,6 +1043,9 @@ __stdcall EgtCreateCurveCompoFromPoints( int nParentId, const PolyLine& PL)
|
||||
// inserisco i segmenti che uniscono i punti
|
||||
if ( ! pCrvCompo->FromPolyLine( PL))
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvCompo)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la curva composita nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvCompo)) ;
|
||||
}
|
||||
@@ -1022,10 +1074,43 @@ __stdcall EgtCreateCurveCompoFromPointBulges( int nParentId, const PolyArc& PA)
|
||||
// inserisco i segmenti e gli archi che uniscono i punti
|
||||
if ( ! pCrvCompo->FromPolyArc( PA))
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvCompo)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la curva composita nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvCompo)) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
__stdcall EgtCreateCurveCompoFromRectangle( int nParentId,
|
||||
const double ptIni[3], const double ptFin[3])
|
||||
{
|
||||
// --- Il rettangolo ha i lati paralleli agli assi della griglia corrente ---
|
||||
IGeomDB* pGeomDB = GetCurrGeomDB() ;
|
||||
VERIFY_GEOMDB( pGeomDB, GDB_ID_NULL)
|
||||
// recupero il riferimento di inserimento
|
||||
Frame3d frEnt ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frEnt))
|
||||
return GDB_ID_NULL ;
|
||||
// recupero il riferimento di griglia
|
||||
Frame3d frGrid = pGeomDB->GetGridFrame() ;
|
||||
// calcolo il vettore del lato parallelo a Y
|
||||
Vector3d vtDiag = (Point3d( ptFin) - Point3d( ptIni)) ;
|
||||
vtDiag.LocToLoc( frEnt, frGrid) ;
|
||||
Vector3d vtLatoY( 0, vtDiag.y, 0) ;
|
||||
vtLatoY.LocToLoc( frGrid, frEnt) ;
|
||||
// creo la polilinea con i punti
|
||||
PolyLine PL ;
|
||||
PL.AddUPoint( 0, ptIni) ;
|
||||
PL.AddUPoint( 1, Point3d( ptFin) - vtLatoY) ;
|
||||
PL.AddUPoint( 2, ptFin) ;
|
||||
PL.AddUPoint( 3, Point3d( ptIni) + vtLatoY) ;
|
||||
PL.AddUPoint( 4, ptIni) ;
|
||||
// creo la curva e la inserisco nel GDB
|
||||
return EgtCreateCurveCompoFromPoints( nParentId, PL) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
int
|
||||
__stdcall EgtCreateCurveCompoFromPolygonSide( int nParentId, int nNumSides,
|
||||
@@ -1040,6 +1125,25 @@ __stdcall EgtCreateCurveCompoFromPolygonSide( int nParentId, int nNumSides,
|
||||
// setto la curva
|
||||
if ( ! pCrvCompo->PolygonSide( nNumSides, ptIni, ptFin))
|
||||
return GDB_ID_NULL ;
|
||||
// assegno il versore estrusione
|
||||
if ( ! SetExtrusionFromGridVersZ( pGeomDB, nParentId, Get( pCrvCompo)))
|
||||
return GDB_ID_NULL ;
|
||||
// inserisco la curva nel DB
|
||||
return pGeomDB->AddGeoObj( GDB_ID_NULL, nParentId, Release( pCrvCompo)) ;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------
|
||||
bool
|
||||
__stdcall SetExtrusionFromGridVersZ( IGeomDB* pGeomDB, int nParentId, ICurve* pCurve)
|
||||
{
|
||||
// verifiche sui parametri
|
||||
if ( pGeomDB == nullptr || pCurve == nullptr)
|
||||
return false ;
|
||||
// assegno il versore estrusione a partire dal versore Z della griglia corrente
|
||||
Vector3d vtExtr = pGeomDB->GetGridFrame().VersZ() ;
|
||||
Frame3d frEnt ;
|
||||
if ( ! pGeomDB->GetGroupGlobFrame( nParentId, frEnt))
|
||||
return false ;
|
||||
vtExtr.ToLoc( frEnt) ;
|
||||
return pCurve->SetExtrusion( vtExtr) ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user