From 46fb7bd5f45ece14ba4bf238b59cc661bfaa28b2 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Thu, 18 Sep 2014 14:56:47 +0000 Subject: [PATCH] EgtGeomKernel 1.5i4 : - tolto controllo antidebug da release per VB.NET - aggiunti metodi CurveArc::Set2PNRS e SetC2PN - aggiunta scrittura MachineId come commento in NGE di testo. --- CurveArc.cpp | 48 +++++++++++++++++++++++++++++++++++++++++++++++ CurveArc.h | 2 ++ EGkDllMain.cpp | 13 +++++++------ EgtGeomKernel.rc | Bin 11710 -> 11710 bytes GeomDB.cpp | 10 ++++++++++ NgeWriter.cpp | 11 +++++++++++ NgeWriter.h | 1 + 7 files changed, 79 insertions(+), 6 deletions(-) diff --git a/CurveArc.cpp b/CurveArc.cpp index c6595b0..027528f 100644 --- a/CurveArc.cpp +++ b/CurveArc.cpp @@ -378,6 +378,29 @@ CurveArc::Set2PRS( const Point3d& ptStart, const Point3d& ptEnd, double dRad, bo return Validate() ; } +//---------------------------------------------------------------------------- +// Set per arco di circonferenza in un piano generico con ptStart, ptEnd, vtN, dRad, bCCW +// ( si suppone |dAngCenDeg| <= 180deg) +//---------------------------------------------------------------------------- +bool +CurveArc::Set2PNRS( const Point3d& ptStart, const Point3d& ptEnd, const Vector3d& vtN, double dRad, bool bCCW) +{ + // calcolo il riferimento OCS derivato da vtN + Frame3d frOcs ; + if ( ! frOcs.Set( ORIG, vtN)) + return false ; + // porto i punti in questo riferimento + Point3d ptSloc = ptStart ; + ptSloc.ToLoc( frOcs) ; + Point3d ptEloc = ptEnd ; + ptEloc.ToLoc( frOcs) ; + // calcolo l'arco in questo piano + if ( ! Set2PRS( ptSloc, ptEloc, dRad, bCCW)) + return false ; + // riporto l'arco nel riferimento naturale + return ToGlob( frOcs) ; +} + //---------------------------------------------------------------------------- // Set per arco di circonferenza nel piano XY con ptCen, ptStart, ptNearEnd // ( si suppone |dAngCenDeg| <= 180deg) @@ -412,6 +435,31 @@ CurveArc::SetC2P( const Point3d& ptCen, const Point3d& ptStart, const Point3d& p return Validate() ; } +//---------------------------------------------------------------------------- +// Set per arco di circonferenza in un piano generico con ptCen, ptStart, ptNearEnd, vtN +// ( si suppone |dAngCenDeg| <= 180deg) +//---------------------------------------------------------------------------- +bool +CurveArc::SetC2PN( const Point3d& ptCen, const Point3d& ptStart, const Point3d& ptNearEnd, const Vector3d& vtN) +{ + // calcolo il riferimento OCS derivato da vtN + Frame3d frOcs ; + if ( ! frOcs.Set( ORIG, vtN)) + return false ; + // porto i punti in questo riferimento + Point3d ptCloc = ptCen ; + ptCloc.ToLoc( frOcs) ; + Point3d ptSloc = ptStart ; + ptSloc.ToLoc( frOcs) ; + Point3d ptNEloc = ptNearEnd ; + ptNEloc.ToLoc( frOcs) ; + // calcolo l'arco in questo piano + if ( ! SetC2P( ptCloc, ptSloc, ptNEloc)) + return false ; + // riporto l'arco nel riferimento naturale + return ToGlob( frOcs) ; +} + //---------------------------------------------------------------------------- CurveArc* CurveArc::Clone( void) const diff --git a/CurveArc.h b/CurveArc.h index 0af952c..d840226 100644 --- a/CurveArc.h +++ b/CurveArc.h @@ -117,7 +117,9 @@ class CurveArc : public ICurveArc, public IGeoObjRW virtual bool Set2PNB( const Point3d& ptStart, const Point3d& ptEnd, const Vector3d& vtN, double dBulge) ; virtual bool Set2PD( const Point3d& ptStart, const Point3d& ptEnd, double dDirStartDeg) ; virtual bool Set2PRS( const Point3d& ptStart, const Point3d& ptEnd, double dRad, bool bCCW = true) ; + virtual bool Set2PNRS( const Point3d& ptStart, const Point3d& ptEnd, const Vector3d& vtN, double dRad, bool bCCW = true) ; virtual bool SetC2P( const Point3d& ptCen, const Point3d& ptStart, const Point3d& ptNearEnd) ; + virtual bool SetC2PN( const Point3d& ptCen, const Point3d& ptStart, const Point3d& ptNearEnd, const Vector3d& vtN) ; virtual bool IsFlat( double dToler = EPS_SMALL) const { return ( fabs( m_dDeltaN) < dToler) ; } virtual bool IsACircle( void) const diff --git a/EGkDllMain.cpp b/EGkDllMain.cpp index 764ec7b..f940c76 100644 --- a/EGkDllMain.cpp +++ b/EGkDllMain.cpp @@ -45,12 +45,13 @@ DllMain( HMODULE hModule, DWORD dwReason, LPVOID lpReserved) { if ( dwReason == DLL_PROCESS_ATTACH) { - #if defined( NDEBUG) - BOOL IsDbgPresent = FALSE ; - CheckRemoteDebuggerPresent( GetCurrentProcess(), &IsDbgPresent) ; - if ( IsDbgPresent) - return 0 ; - #endif + // Controllo commentato per problemi con VB.NET + //#if defined( NDEBUG) + // BOOL IsDbgPresent = FALSE ; + // CheckRemoteDebuggerPresent( GetCurrentProcess(), &IsDbgPresent) ; + // if ( IsDbgPresent) + // return 0 ; + //#endif s_hModule = hModule ; EGT_TRACE( "EgtGeomKernel.dll Initializing!\n") ; } diff --git a/EgtGeomKernel.rc b/EgtGeomKernel.rc index e183462619df40c149f567b957004c8aee7745bd..73f47d125b75a0d4ffe552c5997b9b6f0cd80483 100644 GIT binary patch delta 81 zcmdlNy)SyhH#SC-&FAG5nSs @@ -257,6 +258,15 @@ GeomDB::SaveHeader( NgeWriter& ngeOut) const if ( ! ngeOut.WriteInt( NGE_VER_LAST, ";", true)) return false ; + // MachineId del sistema come commento + string sMachineId ; + if ( ! GetMachineId( sMachineId)) { + LOG_ERROR( GetEGkLogger(), "Error on Key (1)") + return false ; + } + if ( ! ngeOut.WriteRemark( "LWR=" + sMachineId)) + return false ; + // materiale di default come colore Color colDef( 0, 0, 0, 0) ; GetDefaultMaterial( colDef) ; diff --git a/NgeWriter.cpp b/NgeWriter.cpp index aea533c..aa9573c 100644 --- a/NgeWriter.cpp +++ b/NgeWriter.cpp @@ -274,3 +274,14 @@ NgeWriter::WriteCol( const Color& cCol, const char* szSep, bool bEndL) return WriteStringOutTxt( m_OutTxtFile, ToString( cCol).c_str(), szSep, bEndL) ; } } + +//---------------------------------------------------------------------------- +bool +NgeWriter::WriteRemark( const string& sVal) +{ + if ( m_bBinary) + return true ; + else + return ( WriteStringOutTxt( m_OutTxtFile, "//", nullptr, false) && + WriteStringOutTxt( m_OutTxtFile, sVal.c_str(), nullptr, true)) ; +} diff --git a/NgeWriter.h b/NgeWriter.h index f906385..3fc05b3 100644 --- a/NgeWriter.h +++ b/NgeWriter.h @@ -41,6 +41,7 @@ class NgeWriter bool WriteString( const std::string& sVal, const char* szSep, bool bEndL = false) ; bool WriteKey( int nKey /* bEndL = true*/) ; bool WriteCol( const Color& cCol, const char* szSep, bool bEndL = false) ; + bool WriteRemark( const std::string& sVal /* bEndL = true*/) ; private : bool m_bBinary ;