Merge remote-tracking branch 'origin/master' into MoreBezier
This commit is contained in:
+4
-2
@@ -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
@@ -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
|
||||
|
||||
@@ -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 ;
|
||||
}
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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 ;
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user