From c28d250749fbc62339b81a965b0ecb50f3d4fb4b Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 11 Nov 2014 10:34:42 +0000 Subject: [PATCH] =?UTF-8?q?EgtInterface=201.5k1=20:=20-=20agg.=20gestione?= =?UTF-8?q?=20attributi=20per=20selezione=20superfici=20in=20shading=20-?= =?UTF-8?q?=20EgtSplitCurveCompo=20=C3=A8=20diventata=20EgtSeparateCurveCo?= =?UTF-8?q?mpo=20-=20aggiunta=20EgtSplitCurveAtPoint=20-=20aggiunta=20EgtF?= =?UTF-8?q?rameFrom3Points?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API.h | 1 + API_GdbModifyCurve.cpp | 31 +++++++++++++++++++++++++++++-- API_GeoBase.cpp | 17 +++++++++++++++++ API_Scene.cpp | 17 +++++++++++++++++ EgtInterface.rc | Bin 11534 -> 11534 bytes 5 files changed, 64 insertions(+), 2 deletions(-) diff --git a/API.h b/API.h index e306ca3..6230a83 100644 --- a/API.h +++ b/API.h @@ -57,6 +57,7 @@ BOOL __stdcall EgtFrame( int nId, Frame3d& frFrame) ; //--------------------------- Scene ------------------------------------------ BOOL __stdcall EgtSetBackground( Color TopCol, Color BottomCol, BOOL bRedraw) ; BOOL __stdcall EgtSetMarkAttribs( Color MarkCol) ; +BOOL __stdcall EgtSetSelSurfAttribs( Color SelSurfCol) ; BOOL __stdcall EgtSetGeoLineAttribs( Color GlCol) ; BOOL __stdcall EgtSetWinRectAttribs( BOOL bOutline, Color WrCol) ; diff --git a/API_GdbModifyCurve.cpp b/API_GdbModifyCurve.cpp index 17fc1ea..ad4cd04 100644 --- a/API_GdbModifyCurve.cpp +++ b/API_GdbModifyCurve.cpp @@ -19,6 +19,7 @@ #include "/EgtDev/Include/EgkCurve.h" #include "/EgtDev/Include/EgkCurveArc.h" #include "/EgtDev/Include/EgkCurveComposite.h" +#include "/EgtDev/Include/EgkDistPointCurve.h" //---------------------------------------------------------------------------- @@ -143,7 +144,7 @@ __stdcall EgtTrimCurveEndAtParam( int nId, double dPar) ICurve* pCurve = GetCurve( pGeomDB->GetGeoObj( nId)) ; if ( pCurve == nullptr) return false ; - // taglio la curva all'inizio + // taglio la curva alla fine return ( pCurve->TrimEndAtParam( dPar) ? TRUE : FALSE) ; } @@ -161,6 +162,32 @@ __stdcall EgtTrimCurveStartEndAtParam( int nId, double dParS, double dParE) return ( pCurve->TrimStartEndAtParam( dParS, dParE) ? TRUE : FALSE) ; } +//---------------------------------------------------------------------------- +BOOL +__stdcall EgtSplitCurveAtPoint( int nId, double ptOn[3]) +{ + IGeomDB* pGeomDB = GetCurrGeomDB() ; + VERIFY_GEOMDB( pGeomDB, FALSE) + // recupero la curva + ICurve* pCurve = GetCurve( pGeomDB->GetGeoObj( nId)) ; + if ( pCurve == nullptr) + return FALSE ; + // determino la posizione parametrica del punto sulla curva (con tolleranza) + DistPointCurve dstPC( ptOn, *pCurve) ; + int nFlag ; + double dU ; + if ( ! dstPC.GetParamAtMinDistPoint( 0, dU, nFlag) || nFlag != MDPCI_NORMAL) + return FALSE ; + // copio la curva + int nCopyId = pGeomDB->Copy( nId, GDB_ID_NULL, nId, GDB_AFTER) ; + if ( nCopyId == GDB_ID_NULL) + return FALSE ; + // tengo la prima parte dell'originale e la seconda parte della copia + if ( ! pCurve->TrimEndAtParam( dU)) + return false ; + return ( EgtTrimCurveStartAtParam( nCopyId, dU) ? TRUE : FALSE) ; +} + //------------------------------------------------------------------------------- BOOL __stdcall EgtModifyCurveCircleCPN( int nId, const double ptOn[3]) @@ -236,7 +263,7 @@ __stdcall EgtModifyCurveArc3P( int nId, const double ptMid[3]) //------------------------------------------------------------------------------- BOOL -__stdcall EgtSplitCurveCompo( int nId) +__stdcall EgtSeparateCurveCompo( int nId) { IGeomDB* pGeomDB = GetCurrGeomDB() ; VERIFY_GEOMDB( pGeomDB, FALSE) diff --git a/API_GeoBase.cpp b/API_GeoBase.cpp index b6fa341..0c02e74 100644 --- a/API_GeoBase.cpp +++ b/API_GeoBase.cpp @@ -338,6 +338,23 @@ __stdcall EgtPointLocToLoc( double* pdX, double* pdY, double* pdZ, //----------------------------------------------------------------------------- // Frame3d +//----------------------------------------------------------------------------- +BOOL +__stdcall EgtFrameFrom3Points( double ptO[3], double ptOnX[3], double ptNearY[3], + double ptOrig[3], double vtX[3], double vtY[3], double vtZ[3]) +{ + // calcolo il riferimento + Frame3d frTemp ; + if ( ! frTemp.Set( Point3d( ptO), Point3d( ptOnX), Point3d( ptNearY))) + return FALSE ; + // aggiorno i parametri del frame + VEC_FROM_3D( ptOrig, frTemp.Orig()) + VEC_FROM_3D( vtX, frTemp.VersX()) + VEC_FROM_3D( vtY, frTemp.VersY()) + VEC_FROM_3D( vtZ, frTemp.VersZ()) + return TRUE ; +} + //----------------------------------------------------------------------------- BOOL __stdcall EgtFrameTranslate( double ptOrig[3], double vtX[3], double vtY[3], double vtZ[3], diff --git a/API_Scene.cpp b/API_Scene.cpp index 989897d..aab757f 100644 --- a/API_Scene.cpp +++ b/API_Scene.cpp @@ -90,6 +90,23 @@ __stdcall EgtSetMarkAttribs( Color MarkCol) return ( pGseCtx->m_pScene->SetMark( MarkCol) ? TRUE : FALSE) ; } +//----------------------------------------------------------------------------- +BOOL +__stdcall EgtSetSelSurfAttribs( const int SelSurfCol[4]) +{ + return EgtSetSelSurfAttribs( Color( SelSurfCol)) ; +} + +//----------------------------------------------------------------------------- +BOOL +__stdcall EgtSetSelSurfAttribs( Color SelSurfCol) +{ + GseContext* pGseCtx = GetCurrGseContext() ; + VERIFY_CTX_SCENE( pGseCtx, FALSE) + // imposto il colore del Mark + return ( pGseCtx->m_pScene->SetSelSurf( SelSurfCol) ? TRUE : FALSE) ; +} + //----------------------------------------------------------------------------- BOOL __stdcall EgtSetGeoLineAttribs( const int GlCol[4]) diff --git a/EgtInterface.rc b/EgtInterface.rc index df0e5f84d707567c298adf55cf507f8fd6f9ccdb..00dea8aa510bd8b3297ffd6f3681231542de1cf1 100644 GIT binary patch delta 120 zcmeB+>WkX&g^ksaL5IO`^Fh9oOq1Ot1twqO%wf(33OI6Av%uvXnL%Qc9l25`zf*j) m*+*E187>FbR|D1K&$wAc8cFgh(_|?{uz?`Wo8Kuaa038z$0C#f delta 120 zcmeB+>WkX&g^ksKL5IP7^Fh9oOq1Ot1twqO%wf&~3OI6Av%uvXnL%Qc9l25`zf*j) m*+*E187>FbR|D1K&$wAc8cFgh(_|?{uz?`Wo8Kuaa038+@glqc