diff --git a/EGkGeoObjType.h b/EGkGeoObjType.h index bc8c061..afd4c08 100644 --- a/EGkGeoObjType.h +++ b/EGkGeoObjType.h @@ -1,7 +1,7 @@ //---------------------------------------------------------------------------- // EgalTech 2014-2015 //---------------------------------------------------------------------------- -// File : EGkGeoObjType.h Data : 21.01.15 Versione : 1.6a4 +// File : EGkGeoObjType.h Data : 05.08.15 Versione : 1.6h2 // Contenuto : Definizione Tipo degli Oggetti Geometrici. // // @@ -9,6 +9,7 @@ // Modifiche : 30.04.13 DS Creazione modulo. // 27.05.14 DS Agg. EXT_TEXT. // 21.01.15 DS Agg. VOL_ZMAP e cambiato valore di EXT_TEXT. +// 05.08.15 DS Agg. SRF_FLATRGN. //---------------------------------------------------------------------------- #pragma once @@ -32,5 +33,6 @@ enum GeoObjType { GEO_NONE = 0, CRV_BEZ = ( GEO_CURVE + 2), CRV_COMPO = ( GEO_CURVE + 3), SRF_TRIMESH = ( GEO_SURF + 0), + SRF_FLATRGN = ( GEO_SURF + 1), VOL_ZMAP = ( GEO_VOLUME + 0), EXT_TEXT = ( GEO_EXTRA + 0)} ; diff --git a/EGkIntersCurves.h b/EGkIntersCurves.h index 38106f1..6133710 100644 --- a/EGkIntersCurves.h +++ b/EGkIntersCurves.h @@ -74,9 +74,11 @@ struct CrvClass { double dParS ; double dParE ; int nClass ; - // costruttore + // costruttori CrvClass( void) : dParS( 0), dParE( 0), nClass( 0) {} + CrvClass( double dPS, double dPE, int nC) + : dParS( dPS), dParE( dPE), nClass( nC) {} } ; //! Vettore di CrvClass typedef std::vector CRVCVECTOR ; diff --git a/EGkPlane3d.h b/EGkPlane3d.h index 0ff1082..f55ac9e 100644 --- a/EGkPlane3d.h +++ b/EGkPlane3d.h @@ -13,7 +13,7 @@ #pragma once -#include "/EgtDev/Include/EGkPoint3d.h" +#include "/EgtDev/Include/EGkFrame3d.h" //----------------------------------------------------------------------------- class Plane3d @@ -21,6 +21,22 @@ class Plane3d public : Vector3d vtN ; double dDist ; + + public : + bool ToGlob( const Frame3d& frRef) + { Point3d ptP = ORIG + dDist * vtN ; + if ( ! ptP.ToGlob( frRef) || ! vtN.ToGlob( frRef)) + return false ; + dDist = ( ptP - ORIG) * vtN ; } + bool ToLoc( const Frame3d& frRef) + { Point3d ptP = ORIG + dDist * vtN ; + if ( ! ptP.ToLoc( frRef) || ! vtN.ToLoc( frRef)) + return false ; + dDist = ( ptP - ORIG) * vtN ; } + bool LocToLoc( const Frame3d& frOri, const Frame3d& frDest) + { if ( AreSameFrame( frOri, frDest)) + return true ; + return ( ToGlob( frOri) && ToLoc( frDest)) ; } } ; //----------------------------------------------------------------------------- diff --git a/EGkSurfFlatRegion.h b/EGkSurfFlatRegion.h new file mode 100644 index 0000000..03bc8c1 --- /dev/null +++ b/EGkSurfFlatRegion.h @@ -0,0 +1,51 @@ +//---------------------------------------------------------------------------- +// EgalTech 2015-2015 +//---------------------------------------------------------------------------- +// File : EgkSurfFlatRegion.h Data : 05.08.15 Versione : 1.6h2 +// Contenuto : Dichiarazione della interfaccia ISurfFlatRegion. +// +// +// +// Modifiche : 05.08.15 DS Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +#include "/EgtDev/Include/EGkSurf.h" +#include "/EgtDev/Include/EGkIntersCurves.h" + +class ISurfTriMesh ; + +//---------------------------------------------------------------------------- +class __declspec( novtable) ISurfFlatRegion : public ISurf +{ + public : + virtual bool CopyFrom( const IGeoObj* pGObjSrc) = 0 ; + virtual bool Clear( void) ; + virtual bool SetExtLoop( const ICurve& cCrv) = 0 ; + virtual bool SetExtLoop( ICurve* pCrv) = 0 ; + virtual bool AddIntLoop( const ICurve& cCrv) = 0 ; + virtual bool AddIntLoop( ICurve* pCrv) = 0 ; + virtual ICurve* GetLoop( int nLoop) const = 0 ; // nLoop=0 esterno, successivi interni + virtual int GetIntLoopNumber( void) const = 0 ; + virtual const ISurfTriMesh* GetAuxSurf( void) const = 0 ; + virtual bool GetCurveClassification( const ICurve& Crv, CRVCVECTOR& ccClass) const = 0 ; +} ; + +//----------------------------------------------------------------------------- +inline ISurfFlatRegion* CreateSurfFlatRegion( void) + { return (static_cast( CreateGeoObj( SRF_FLATRGN))) ; } +inline ISurfFlatRegion* CloneSurfFlatRegion( const IGeoObj* pGObj) + { if ( pGObj == nullptr || pGObj->GetType() != SRF_FLATRGN) + return nullptr ; + return (static_cast(pGObj->Clone())) ; } +inline const ISurfFlatRegion* GetSurfFlatRegion( const IGeoObj* pGObj) + { if ( pGObj == nullptr || pGObj->GetType() != SRF_FLATRGN) + return nullptr ; + return (static_cast(pGObj)) ; } +inline ISurfFlatRegion* GetSurfFlatRegion( IGeoObj* pGObj) + { if ( pGObj == nullptr || pGObj->GetType() != SRF_FLATRGN) + return nullptr ; + return (static_cast(pGObj)) ; } diff --git a/EXeExecutor.h b/EXeExecutor.h index 8b75131..be9c7b9 100644 --- a/EXeExecutor.h +++ b/EXeExecutor.h @@ -190,6 +190,7 @@ EXE_EXPORT int ExeCreatePolygonFromApothem( int nParentId, int nNumSides, const EXE_EXPORT int ExeCreatePolygonFromSide( int nParentId, int nNumSides, const Point3d& ptIni, const Point3d& ptFin, int nRefType) ; // GeomDB Create Surf +EXE_EXPORT int ExeCreateSurfFlatRegion( int nParentId, INTVECTOR& vCrvIds) ; EXE_EXPORT int ExeCreateSurfTmBBox( int nParentId, const BBox3d& b3Box, int nRefType) ; EXE_EXPORT int ExeCreateSurfTmBox( int nParentId, const Point3d& ptIni, const Point3d& ptCross, const Point3d& ptDir, double dHeight, int nRefType) ; @@ -348,6 +349,7 @@ EXE_EXPORT bool ExeTrimCurveStartEndAtParam( int nId, double dParS, double dParE EXE_EXPORT bool ExeExtendCurveStartByLen( int nId, double dLen) ; EXE_EXPORT bool ExeExtendCurveEndByLen( int nId, double dLen) ; EXE_EXPORT bool ExeTrimExtendCurveByLen( int nId, double dLen, const Point3d& ptNear, int nRefType) ; +EXE_EXPORT int ExeTrimCurveWithRegion( int nCrvId, int nRegId, bool bInVsOut, bool bOn, int* pnCount) ; EXE_EXPORT int ExeSplitCurve( int nId, int nParts) ; EXE_EXPORT int ExeSplitCurveAtPoint( int nId, const Point3d& ptOn, int nRefType) ; EXE_EXPORT int ExeSplitCurveAtSelfInters( int nId, int* pnCount) ; @@ -362,6 +364,7 @@ EXE_EXPORT bool ExeMergeCurvesInCurveCompo( int nId, double dLinTol) ; // GeomDb Surf Modify EXE_EXPORT bool ExeInvertSurface( const INTVECTOR& vIds) ; +EXE_EXPORT int ExeExtractSurfFrLoop( int nId, int nLoop, int nDestGrpId) ; EXE_EXPORT int ExeExtractSurfTmFacetLoops( int nId, int nFacet, int nDestGrpId, int* pnCount) ; EXE_EXPORT int ExeExplodeSurfTm( int nId, int* pnCount) ;