Merge remote-tracking branch 'origin/master' into MoreBezier

This commit is contained in:
Daniele Bariletti
2024-10-04 15:22:43 +02:00
8 changed files with 86 additions and 10 deletions
+4 -2
View File
@@ -37,7 +37,7 @@ enum { POCKET_ZIGZAG = 0,
POCKET_ONEWAY = 1,
POCKET_SPIRALIN = 2,
POCKET_SPIRALOUT = 3,
POCKET_CONFORMAL_ZIGZAG = 4,
POCKET_CONFORMAL_ZIGZAG = 4,
POCKET_CONFORMAL_ONEWAY = 5} ;
enum { TEMP_PROP_SMOOTH = -2,
@@ -47,4 +47,6 @@ enum { TEMP_PROP_SMOOTH = -2,
TEMP_PROP_OUT_START = 2,
TEMP_PROP_SINGLE_CURVE = 3,
TEMP_PROP_OPT_TRAPEZOID = 4,
TEMP_PROP_BORDER_CURVE = 5} ;
TEMP_PROP_BORDER_CURVE = 5,
TEMP_PROP_CURVE_ACTIVE = 6,
TEMP_PROP_CURVE_INACTIVE = 7} ;
+4 -2
View File
@@ -126,16 +126,18 @@ EGK_EXPORT ICurve* ProjectCurveOnPlane( const ICurve& crCrv, const Plane3d& plPl
EGK_EXPORT bool AdjustCurveSlope( ICurveComposite* pCrv, double dNini, double dNfin) ;
//----------------------------------------------------------------------------
//! Calcolo del diagramma di Voronoi della curva, nei TempParam dei risultati la distanza
//! Calcolo del diagramma di Voronoi della curva/e, nei TempParam dei risultati la distanza
//! Per nBound tenere valore di default.
EGK_EXPORT bool CalcCurveVoronoiDiagram( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, int nBound = 3) ;
EGK_EXPORT bool CalcCurvesVoronoiDiagram( const CICURVEPVECTOR& vCrvC, ICURVEPOVECTOR& vCrvs, int nBound = 3) ;
//----------------------------------------------------------------------------
//! Calcolo del Medial Axis della curva (sottoinsieme del diagramma di Voronoi), nei TempParam dei risultati la distanza
//! Calcolo del Medial Axis della curva/e (sottoinsieme del diagramma di Voronoi), nei TempParam dei risultati la distanza
const int WMAT_BOTHSIDES = 0 ;
const int WMAT_LEFT = 1 ;
const int WMAT_RIGHT = 2 ;
EGK_EXPORT bool CalcCurveMedialAxis( const ICurve& crvC, ICURVEPOVECTOR& vCrvs, int nSide) ;
EGK_EXPORT bool CalcCurvesMedialAxis( const CICURVEPVECTOR& vCrvC, ICURVEPOVECTOR& vCrvs, int nSide) ;
//----------------------------------------------------------------------------
//! Calcola l'offset completo di una curva
+67
View File
@@ -177,4 +177,71 @@ SaveCurveCompo( ICRVCOMPOPOVECTOR& vCompo, bool bUniform, const std::string& sFi
return bOk ;
}
bool SaveVoronoi( const ICRVCOMPOPOVECTOR& vCrvsCompo, const ICURVEPOVECTOR& vBisectors,
bool bUniform, const std::string& sFile, int nFlag = GDB_SV_BIN)
{
// controllo validità delle curve
std::vector<IGeoObj*> vpGObj_crv ;
for ( int i = 0 ; i < int( vCrvsCompo.size()) ; ++ i) {
if ( vCrvsCompo[i] == nullptr || ! vCrvsCompo[i]->IsValid())
return false ;
vpGObj_crv.emplace_back( static_cast<IGeoObj*>( vCrvsCompo[i]->Clone())) ;
}
std::vector<IGeoObj*> vpGObj_bisect ;
for ( int i = 0 ; i < int( vBisectors.size()) ; ++ i) {
if ( vBisectors[i] == nullptr || ! vBisectors[i]->IsValid())
return false ;
vpGObj_bisect.emplace_back( static_cast<IGeoObj*>( vBisectors[i]->Clone())) ;
}
// creo GeomDB temporaneo
PtrOwner<IGeomDB> pGeomDB( CreateGeomDB()) ;
if ( IsNull( pGeomDB))
return false ;
INTVECTOR vIds ;
// salvo le curve
int nPartId = pGeomDB->AddGroup( GDB_ID_NULL, GDB_ID_ROOT, Frame3d()) ;
int nLayId = pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
pGeomDB->SetName( nLayId, "Curves") ;
for ( int i = 0 ; i < int( vpGObj_crv.size()) ; ++i) {
// inserisco l'oggetto nel GeomDB
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nLayId, vpGObj_crv[i]->Clone()) ;
if ( nId == GDB_ID_NULL)
return false ;
vIds.push_back( nId) ;
pGeomDB->SetMaterial( nId, LIME) ;
}
// salvo i bisettori
nLayId = pGeomDB->AddGroup( GDB_ID_NULL, nPartId, Frame3d()) ;
pGeomDB->SetName( nLayId, "Bisectors") ;
for ( int i = 0 ; i < int( vpGObj_bisect.size()) ; ++i) {
// inserisco l'oggetto nel GeomDB
int nId = pGeomDB->AddGeoObj( GDB_ID_NULL, nLayId, vpGObj_bisect[i]->Clone()) ;
if ( nId == GDB_ID_NULL)
return false ;
vIds.push_back( nId) ;
if ( bUniform)
pGeomDB->SetMaterial( nId, RED) ;
else {
if ( vBisectors[i]->GetTempParam( 0) < EPS_SMALL ||
vBisectors[i]->GetTempParam( 1) < EPS_SMALL)
pGeomDB->SetMaterial( nId, ORANGE) ;
else
pGeomDB->SetMaterial( nId, RED) ;
}
pGeomDB->SetInfo( nId, "START_PARAM", vBisectors[i]->GetTempParam( 0)) ;
pGeomDB->SetInfo( nId, "END_PARAM", vBisectors[i]->GetTempParam( 1)) ;
}
// eseguo il salvataggio
bool bOk = pGeomDB->Save( vIds, sFile, nFlag) ;
// rimuovo l'oggetto dal GeomDB
for ( int i = 0 ; i < int( vIds.size()); ++i)
bOk = ( pGeomDB->RemoveGeoObjAndErase( vIds[i]) != nullptr) && bOk ;
return bOk ;
}
+1
View File
@@ -55,6 +55,7 @@ class __declspec( novtable) ISurfFlatRegion : public ISurf
virtual int GetChunkSimpleClassification( int nChunk, const ISurfFlatRegion& Other, int nOthChunk) const ; // compare only outsides
virtual bool GetChunkMaxOffset( int nChunk, double& dOffs) const = 0 ;
virtual int GetLoopCount( int nChunk) const = 0 ;
virtual int GetLoopCurveCount( int nChunk, int nLoop) const = 0 ;
virtual ICurve* GetLoop( int nChunk, int nLoop) const = 0 ; // nChunk 0-based, nLoop 0-based (1°esterno, successivi interni)
virtual bool ApproxLoopWithLines( int nChunk, int nLoop, double dLinTol, double dAngTolDeg, int nType, PolyLine& PL) const = 0 ;
virtual bool SetCurveTempProp( int nChunk, int nLoop, int nCrv, int nProp, int nPropInd = 0) = 0 ;
+2 -1
View File
@@ -413,7 +413,7 @@ EIN_EXPORT BOOL __stdcall EgtSetStatus( int nId, int nStat) ;
EIN_EXPORT BOOL __stdcall EgtRevertStatus( int nId) ;
EIN_EXPORT BOOL __stdcall EgtGetStatus( int nId, int* pnStat) ;
EIN_EXPORT BOOL __stdcall EgtGetCalcStatus( int nId, int* pnStat) ;
EIN_EXPORT BOOL __stdcall EgtSetMark( int nId) ;
EIN_EXPORT BOOL __stdcall EgtSetMark( int nId, int nMark) ;
EIN_EXPORT BOOL __stdcall EgtResetMark( int nId) ;
EIN_EXPORT BOOL __stdcall EgtGetMark( int nId, BOOL* pnMark) ;
EIN_EXPORT BOOL __stdcall EgtGetCalcMark( int nId, BOOL* pnMark) ;
@@ -551,6 +551,7 @@ EIN_EXPORT BOOL __stdcall EgtCutSurfTmClosedCurve( int nSurfId, int nCurveId, BO
EIN_EXPORT BOOL __stdcall EgtSurfTmAdd( int nId1, int nId2, BOOL bTwoColors) ;
EIN_EXPORT BOOL __stdcall EgtSurfTmSubtract( int nId1, int nId2, BOOL bTwoColors) ;
EIN_EXPORT BOOL __stdcall EgtSurfTmIntersect( int nId1, int nId2, BOOL bTwoColors) ;
EIN_EXPORT BOOL __stdcall EgtSurfTmSetFaceColor( int nId, int nFacet, int nColor) ;
EIN_EXPORT BOOL __stdcall EgtSurfTmResetTwoColors( int nId) ;
EIN_EXPORT int __stdcall EgtSurfTmSplit( int nId, int nSplitterId, int* pnCount) ;
EIN_EXPORT BOOL __stdcall EgtSurfTmCut( int nId, int nCutterId, BOOL bInVsOut, BOOL bSaveOnEq) ;
+5 -2
View File
@@ -325,7 +325,9 @@ enum { SAWFIN_LL_STD = 0,
enum { POCKET_SUB_ZIGZAG = 0,
POCKET_SUB_ONEWAY = 1,
POCKET_SUB_SPIRALIN = 2,
POCKET_SUB_SPIRALOUT = 3} ;
POCKET_SUB_SPIRALOUT = 3,
POCKET_SUB_CONFORMAL_ZIGZAG = 4,
POCKET_SUB_CONFORMAL_ONEWAY = 5} ;
// Tipo di attacco
enum { POCKET_LI_NONE = 0,
POCKET_LI_GLIDE = 1,
@@ -371,7 +373,8 @@ enum { SURFROU_SUB_ZIGZAG = 0,
SURFROU_SUB_ONEWAY = 1,
SURFROU_SUB_SPIRALIN = 2,
SURFROU_SUB_SPIRALOUT = 3,
SURFROU_SUB_CONFORMAL_ZIGZAG = 4} ;
SURFROU_SUB_CONFORMAL_ZIGZAG = 4,
SURFROU_SUB_CONFORMAL_ONEWAY = 5} ;
// Tipo di attacco
enum { SURFROU_LI_NONE = 0,
SURFROU_LI_GLIDE = 1,
+2 -2
View File
@@ -634,8 +634,8 @@ EXE_EXPORT bool ExeProjectCurveOnSurfBz( int nCurveId, int nSurfBzId, const Vect
double dLinTol, double dMaxSegmLen, int nRefType) ;
EXE_EXPORT bool ExeProjectCurveOnSurfBzExt( int nCurveId, int nSurfBzId, int nGuideId, int nDestGrpId,
double dLinTol, double dMaxSegmLen, bool bDirFromGuide) ;
EXE_EXPORT int ExeCurveGetVoronoi( int nId, int nDestGrpId, int nBound, int* pnCount) ;
EXE_EXPORT int ExeCurveGetMedialAxis( int nId, int nDestGrpId, int nSide, int* pnCount) ;
EXE_EXPORT int ExeCurveGetVoronoi( const INTVECTOR& vIds, int nDestGrpId, int nBound, int* pnCount) ;
EXE_EXPORT int ExeCurveGetMedialAxis( const INTVECTOR& vIds, int nDestGrpId, int nSide, int* pnCount) ;
EXE_EXPORT int ExeCurveGetFatCurve( int nId, int nDestGrpId, double dRad, bool bSquareEnds, bool bSquareMids, int* pnCount) ;
EXE_EXPORT bool ExeCurveBezierIncreaseDegree( int nCrvId) ;
EXE_EXPORT bool ExeCurveBezierDecreaseDegree( int nCrvId, double dTol = 100) ;
+1 -1
View File
@@ -25,7 +25,7 @@
//----------------------------------------------------------------------------
const int KEY_BASELIB_PROD = 207 ;
const int KEY_BASELIB_VER = 2608 ;
const int KEY_BASELIB_VER = 2610 ;
const int KEY_BASELIB_LEV = 1 ;
//----------------------------------------------------------------------------