From 0796deb02720bf517ca69cd0121afc0d7e3db11f Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Tue, 24 Oct 2017 18:16:57 +0000 Subject: [PATCH] =?UTF-8?q?EgtMachKernel=201.8j5=20:=20-=20modifiche=20a?= =?UTF-8?q?=20drilling=20per=20invertire=20fori=20e=20impostare=20max=20pr?= =?UTF-8?q?ofondit=C3=A0=20-=20aggiunta=20possibilit=C3=A0=20di=20Machinin?= =?UTF-8?q?gApply=20e=20MachiningUpdate=20senza=20PostApply.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Chiseling.cpp | 8 ++++---- Chiseling.h | 4 ++-- Drilling.cpp | 42 ++++++++++++++++++++++++------------------ Drilling.h | 4 ++-- EgtMachKernel.rc | Bin 11782 -> 11782 bytes GenMachining.cpp | 8 ++++---- GenMachining.h | 4 ++-- MachMgr.h | 4 ++-- MachMgrOperations.cpp | 8 ++++---- Machining.h | 4 ++-- Milling.cpp | 8 ++++---- Milling.h | 4 ++-- Pocketing.cpp | 8 ++++---- Pocketing.h | 4 ++-- SawFinishing.cpp | 10 +++++----- SawFinishing.h | 4 ++-- SawRoughing.cpp | 10 +++++----- SawRoughing.h | 4 ++-- Sawing.cpp | 8 ++++---- Sawing.h | 4 ++-- 20 files changed, 78 insertions(+), 72 deletions(-) diff --git a/Chiseling.cpp b/Chiseling.cpp index 0fce717..4094ee0 100644 --- a/Chiseling.cpp +++ b/Chiseling.cpp @@ -429,7 +429,7 @@ Chiseling::Preview( bool bRecalc) //---------------------------------------------------------------------------- bool -Chiseling::Apply( bool bRecalc) +Chiseling::Apply( bool bRecalc, bool bPostApply) { // reset numero scalpellature generate m_nChisels = 0 ; @@ -490,12 +490,12 @@ Chiseling::Apply( bool bRecalc) } // eseguo aggiornamento assi macchina e collegamento con operazione precedente - return Update() ; + return Update( bPostApply) ; } //---------------------------------------------------------------------------- bool -Chiseling::Update( void) +Chiseling::Update( bool bPostApply) { // verifico validità gestore DB geometrico e Id del gruppo if ( m_pGeomDB == nullptr || ! m_pGeomDB->ExistsObj( m_nOwnerId)) @@ -541,7 +541,7 @@ Chiseling::Update( void) } // esecuzione eventuali personalizzazioni - if ( ! PostApply()) { + if ( bPostApply && ! PostApply()) { m_pMchMgr->SetLastError( 2912, "Error in Chiseling : post apply not calculable") ; return false ; } diff --git a/Chiseling.h b/Chiseling.h index 47a6ac5..c7b2b33 100644 --- a/Chiseling.h +++ b/Chiseling.h @@ -52,8 +52,8 @@ class Chiseling : public Machining bool SetParam( int nType, const std::string& sVal) override ; bool SetGeometry( const SELVECTOR& vIds) override ; bool Preview( bool bRecalc) override ; - bool Apply( bool bRecalc) override ; - bool Update( void) override ; + bool Apply( bool bRecalc, bool bPostApply) override ; + bool Update( bool bPostApply) override ; bool GetParam( int nType, bool& bVal) const override ; bool GetParam( int nType, int& nVal) const override ; bool GetParam( int nType, double& dVal) const override ; diff --git a/Drilling.cpp b/Drilling.cpp index 3e7bb1e..0b0b3b8 100644 --- a/Drilling.cpp +++ b/Drilling.cpp @@ -48,15 +48,16 @@ using namespace std ; //---------------------------------------------------------------------------- struct Hole { - int nOriId ; // identificativo della geometria di origine - Point3d ptIni ; // punto iniziale - Vector3d vtDir ; // direzione di riferimento (dal fondo verso l'inizio) - double dDiam ; // diametro - double dLen ; // lunghezza dell'asse - bool bBlind ; // flag per cieco/passante - // eventuale tipo ( standard, ribassato, svasato) + int nOriId ; // identificativo della geometria di origine + Point3d ptIni ; // punto iniziale + Vector3d vtDir ; // direzione di riferimento (dal fondo verso l'inizio) + double dDiam ; // diametro + double dThick ; // lunghezza della geometria originale + double dLen ; // lunghezza dell'asse + bool bBlind ; // flag per cieco/passante + // eventuale tipo ( standard, ribassato, svasato) ? Hole( void) - : nOriId( GDB_ID_NULL), ptIni(), vtDir(), dDiam( 0), dLen( 0), bBlind( true) {} + : nOriId( GDB_ID_NULL), ptIni(), vtDir(), dDiam( 0), dThick( 0), dLen( 0), bBlind( true) {} } ; //---------------------------------------------------------------------------- @@ -443,7 +444,7 @@ Drilling::Preview( bool bRecalc) //---------------------------------------------------------------------------- bool -Drilling::Apply( bool bRecalc) +Drilling::Apply( bool bRecalc, bool bPostApply) { // reset numero forature nella lavorazione m_nDrillings = 0 ; @@ -486,12 +487,12 @@ Drilling::Apply( bool bRecalc) return false ; // eseguo aggiornamento assi macchina e collegamento con operazione precedente - return Update() ; + return Update( bPostApply) ; } //---------------------------------------------------------------------------- bool -Drilling::Update( void) +Drilling::Update( bool bPostApply) { // verifico validità gestore DB geometrico e Id del gruppo if ( m_pGeomDB == nullptr || ! m_pGeomDB->ExistsObj( m_nOwnerId)) @@ -537,7 +538,7 @@ Drilling::Update( void) } // esecuzione eventuali personalizzazioni - if ( ! PostApply()) { + if ( bPostApply && ! PostApply()) { m_pMchMgr->SetLastError( 2113, "Error in Drilling : post apply not calculable") ; return false ; } @@ -901,12 +902,17 @@ Drilling::GenerateHoleCl( int nInd, const SelData& nCircId, const string& sPName } // se richiesta inversione e foro passante, provvedo if ( m_Params.m_bInvert && ! hole.bBlind) { - hole.ptIni -= hole.vtDir * hole.dLen ; + hole.ptIni -= hole.vtDir * hole.dThick ; hole.vtDir.Invert() ; } + // se lavorazione del foro non arriva al suo fondo, lo considero cieco + if ( hole.dLen < hole.dThick - 10 * EPS_SMALL) + hole.bBlind = true ; // limito lunghezza foro a massima lavorazione della punta - if ( hole.dLen > m_TParams.m_dMaxMat + EPS_SMALL) { + double dAddLen = ( hole.bBlind ? 0 : m_Params.m_dThroughAddLen) ; + if ( ( hole.dLen + dAddLen) > m_TParams.m_dMaxMat + EPS_SMALL) { hole.dLen = m_TParams.m_dMaxMat ; + hole.bBlind = true ; string sOut = "Drill bit too short for Hole " + ToString( nCircId) ; LOG_INFO( GetEMkLogger(), sOut.c_str()) ; } @@ -1250,21 +1256,21 @@ Drilling::GetHoleData( SelData Id, Hole& hole) // ne recupero il centro hole.ptIni = pArc->GetCenter() + ( dThick > 0 ? vtExtr * dThick : V_NULL) ; hole.ptIni.ToGlob( frGlob) ; - // ne recupero versore direzione e lunghezza + // ne recupero versore direzione e lunghezze hole.vtDir = vtExtr ; hole.vtDir.ToGlob( frGlob) ; hole.vtDir.Normalize() ; + hole.dThick = abs( dThick) ; hole.dLen = abs( dDepth) ; // per default è cieco hole.bBlind = true ; // se verticale ed arriva fino al fondo grezzo, allora passante - if ( hole.vtDir.IsZplus() && hole.dLen > dRbDist - EPS_SMALL) + if ( hole.vtDir.IsZplus() && hole.dThick > dRbDist - EPS_SMALL) hole.bBlind = false ; // altrimenti determino la distanza del fondo del foro dal bordo del grezzo else { - Point3d ptEnd = hole.ptIni - hole.vtDir * hole.dLen ; double dElev ; - if ( GetElevation( m_nPhase, hole.ptIni, - hole.vtDir, dElev) && dElev <= hole.dLen + 10) + if ( GetElevation( m_nPhase, hole.ptIni, - hole.vtDir, dElev) && dElev <= hole.dThick + 10) hole.bBlind = false ; } return true ; diff --git a/Drilling.h b/Drilling.h index 7375532..33ac87c 100644 --- a/Drilling.h +++ b/Drilling.h @@ -52,8 +52,8 @@ class Drilling : public Machining bool SetParam( int nType, const std::string& sVal) override ; bool SetGeometry( const SELVECTOR& vIds) override ; bool Preview( bool bRecalc) override ; - bool Apply( bool bRecalc) override ; - bool Update( void) override ; + bool Apply( bool bRecalc, bool bPostApply) override ; + bool Update( bool bPostApply) override ; bool GetParam( int nType, bool& bVal) const override ; bool GetParam( int nType, int& nVal) const override ; bool GetParam( int nType, double& dVal) const override ; diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 7253686bac5c77280b5fd31e08890eb8762c22a7..c4d32d39f28333c657da1139831450f0eff97b9a 100644 GIT binary patch delta 97 zcmZpRX^YwLhmFy6^ItYwW=7M=j>5W|vxM9jH?QON0rG*u7nvrX5iEd9O=7{OSQ@Kh Hr8(RHQiUK= delta 97 zcmZpRX^YwLhmFx>^ItYwW=50Aj>5W|vxM9jH?QON0rG*u7nvrX5iEd9O=7{OSQ@Kh Hr8(RHQ1Kv2 diff --git a/GenMachining.cpp b/GenMachining.cpp index 04682fa..be3916b 100644 --- a/GenMachining.cpp +++ b/GenMachining.cpp @@ -457,7 +457,7 @@ GenMachining::Preview( bool bRecalc) //---------------------------------------------------------------------------- bool -GenMachining::Apply( bool bRecalc) +GenMachining::Apply( bool bRecalc, bool bPostApply) { // reset numero percorsi di lavoro generati m_nMills = 0 ; @@ -539,12 +539,12 @@ GenMachining::Apply( bool bRecalc) } // eseguo aggiornamento assi macchina e collegamento con operazione precedente - return Update() ; + return Update( bPostApply) ; } //---------------------------------------------------------------------------- bool -GenMachining::Update( void) +GenMachining::Update( bool bPostApply) { // verifico validità gestore DB geometrico e Id del gruppo if ( m_pGeomDB == nullptr || ! m_pGeomDB->ExistsObj( m_nOwnerId)) @@ -592,7 +592,7 @@ GenMachining::Update( void) } // esecuzione eventuali personalizzazioni - if ( ! PostApply()) { + if ( bPostApply && ! PostApply()) { m_pMchMgr->SetLastError( 2808, "Error in GenMachining : post apply not calculable") ; return false ; } diff --git a/GenMachining.h b/GenMachining.h index a978947..0947da0 100644 --- a/GenMachining.h +++ b/GenMachining.h @@ -51,8 +51,8 @@ class GenMachining : public Machining bool SetParam( int nType, const std::string& sVal) override ; bool SetGeometry( const SELVECTOR& vIds) override ; bool Preview( bool bRecalc) override ; - bool Apply( bool bRecalc) override ; - bool Update( void) override ; + bool Apply( bool bRecalc, bool bPostApply) override ; + bool Update( bool bPostApply) override ; bool GetParam( int nType, bool& bVal) const override ; bool GetParam( int nType, int& nVal) const override ; bool GetParam( int nType, double& dVal) const override ; diff --git a/MachMgr.h b/MachMgr.h index 1e531bf..6939478 100644 --- a/MachMgr.h +++ b/MachMgr.h @@ -247,8 +247,8 @@ class MachMgr : public IMachMgr bool MachiningPreview( bool bRecalc) override ; bool ExistsMachiningPreview( void) override ; bool RemoveMachiningPreview( void) override ; - bool MachiningApply( bool bRecalc) override ; - bool MachiningUpdate( void) override ; + bool MachiningApply( bool bRecalc, bool bPostApply = true) override ; + bool MachiningUpdate( bool bPostApply = true) override ; bool GetMachiningParam( int nType, bool& bVal) const override ; bool GetMachiningParam( int nType, int& dVal) const override ; bool GetMachiningParam( int nType, double& dVal) const override ; diff --git a/MachMgrOperations.cpp b/MachMgrOperations.cpp index efb4f4c..3b8a539 100644 --- a/MachMgrOperations.cpp +++ b/MachMgrOperations.cpp @@ -870,7 +870,7 @@ MachMgr::RemoveMachiningPreview( void) //---------------------------------------------------------------------------- bool -MachMgr::MachiningApply( bool bRecalc) +MachMgr::MachiningApply( bool bRecalc, bool bPostApply) { ResetLastError() ; if ( GetCurrMachine() != nullptr) @@ -894,12 +894,12 @@ MachMgr::MachiningApply( bool bRecalc) // imposto visualizzazione completa della macchina come temporaneamente corrente SetTempMachLook TmpMachLook( this, MCH_LOOK_ALL) ; // calcolo la lavorazione - return pMch->Apply( bRecalc) ; + return pMch->Apply( bRecalc, bPostApply) ; } //---------------------------------------------------------------------------- bool -MachMgr::MachiningUpdate( void) +MachMgr::MachiningUpdate( bool bPostApply) { ResetLastError() ; // recupero la lavorazione corrente @@ -921,7 +921,7 @@ MachMgr::MachiningUpdate( void) // imposto visualizzazione completa della macchina come temporaneamente corrente SetTempMachLook TmpMachLook( this, MCH_LOOK_ALL) ; // aggiorno valori assi macchina e collegamento con operazione precedente - return pMch->Update() ; + return pMch->Update( bPostApply) ; } //---------------------------------------------------------------------------- diff --git a/Machining.h b/Machining.h index 3f64e97..90f26d2 100644 --- a/Machining.h +++ b/Machining.h @@ -34,8 +34,8 @@ class Machining : public Operation virtual bool SetParam( int nType, const std::string& sVal) = 0 ; virtual bool SetGeometry( const SELVECTOR& vIds) = 0 ; virtual bool Preview( bool bRecalc) = 0 ; - virtual bool Apply( bool bRecalc) = 0 ; - virtual bool Update( void) = 0 ; + virtual bool Apply( bool bRecalc, bool bPostApply) = 0 ; + virtual bool Update( bool bPostApply) = 0 ; virtual bool GetParam( int nType, bool& bVal) const = 0 ; virtual bool GetParam( int nType, int& nVal) const = 0 ; virtual bool GetParam( int nType, double& dVal) const = 0 ; diff --git a/Milling.cpp b/Milling.cpp index a57a131..7e52fee 100644 --- a/Milling.cpp +++ b/Milling.cpp @@ -490,7 +490,7 @@ Milling::Preview( bool bRecalc) //---------------------------------------------------------------------------- bool -Milling::Apply( bool bRecalc) +Milling::Apply( bool bRecalc, bool bPostApply) { // reset numero percorsi di lavoro generati m_nMills = 0 ; @@ -551,7 +551,7 @@ Milling::Apply( bool bRecalc) } // eseguo aggiornamento assi macchina e collegamento con operazione precedente - if ( ! Update()) + if ( ! Update( bPostApply)) return false ; //// imposto l'utensile per l'anteprima !!! provvisorio per test !!! @@ -564,7 +564,7 @@ Milling::Apply( bool bRecalc) //---------------------------------------------------------------------------- bool -Milling::Update( void) +Milling::Update( bool bPostApply) { // verifico validità gestore DB geometrico e Id del gruppo if ( m_pGeomDB == nullptr || ! m_pGeomDB->ExistsObj( m_nOwnerId)) @@ -610,7 +610,7 @@ Milling::Update( void) } // esecuzione eventuali personalizzazioni - if ( ! PostApply()) { + if ( bPostApply && ! PostApply()) { m_pMchMgr->SetLastError( 2321, "Error in Milling : post apply not calculable") ; return false ; } diff --git a/Milling.h b/Milling.h index c9c0a8a..a615f7b 100644 --- a/Milling.h +++ b/Milling.h @@ -51,8 +51,8 @@ class Milling : public Machining bool SetParam( int nType, const std::string& sVal) override ; bool SetGeometry( const SELVECTOR& vIds) override ; bool Preview( bool bRecalc) override ; - bool Apply( bool bRecalc) override ; - bool Update( void) override ; + bool Apply( bool bRecalc, bool bPostApply) override ; + bool Update( bool bPostApply) override ; bool GetParam( int nType, bool& bVal) const override ; bool GetParam( int nType, int& nVal) const override ; bool GetParam( int nType, double& dVal) const override ; diff --git a/Pocketing.cpp b/Pocketing.cpp index e862fd9..83c0f30 100644 --- a/Pocketing.cpp +++ b/Pocketing.cpp @@ -464,7 +464,7 @@ Pocketing::Preview( bool bRecalc) //---------------------------------------------------------------------------- bool -Pocketing::Apply( bool bRecalc) +Pocketing::Apply( bool bRecalc, bool bPostApply) { // reset numero percorsi di svuotatura generati m_nPockets = 0 ; @@ -528,7 +528,7 @@ Pocketing::Apply( bool bRecalc) return false ; // eseguo aggiornamento assi macchina e collegamento con operazione precedente - if ( ! Update()) + if ( ! Update( bPostApply)) return false ; //// imposto l'utensile per l'anteprima !!! provvisorio per test !!! @@ -541,7 +541,7 @@ Pocketing::Apply( bool bRecalc) //---------------------------------------------------------------------------- bool -Pocketing::Update( void) +Pocketing::Update( bool bPostApply) { // verifico validità gestore DB geometrico e Id del gruppo if ( m_pGeomDB == nullptr || ! m_pGeomDB->ExistsObj( m_nOwnerId)) @@ -587,7 +587,7 @@ Pocketing::Update( void) } // esecuzione eventuali personalizzazioni - if ( ! PostApply()) { + if ( bPostApply && ! PostApply()) { m_pMchMgr->SetLastError( 2427, "Error in Pocketing : post apply not calculable") ; return false ; } diff --git a/Pocketing.h b/Pocketing.h index 39413b5..5da7dd2 100644 --- a/Pocketing.h +++ b/Pocketing.h @@ -52,8 +52,8 @@ class Pocketing : public Machining bool SetParam( int nType, const std::string& sVal) override ; bool SetGeometry( const SELVECTOR& vIds) override ; bool Preview( bool bRecalc) override ; - bool Apply( bool bRecalc) override ; - bool Update( void) override ; + bool Apply( bool bRecalc, bool bPostApply) override ; + bool Update( bool bPostApply) override ; bool GetParam( int nType, bool& bVal) const override ; bool GetParam( int nType, int& nVal) const override ; bool GetParam( int nType, double& dVal) const override ; diff --git a/SawFinishing.cpp b/SawFinishing.cpp index 6f980c3..0fd665e 100644 --- a/SawFinishing.cpp +++ b/SawFinishing.cpp @@ -399,12 +399,12 @@ bool SawFinishing::Preview( bool bRecalc) { // non esiste preview, si fa apply - return Apply( bRecalc) ; + return Apply( bRecalc, false) ; } //---------------------------------------------------------------------------- bool -SawFinishing::Apply( bool bRecalc) +SawFinishing::Apply( bool bRecalc, bool bPostApply) { // reset numero tagli nella lavorazione m_nCuts = 0 ; @@ -467,12 +467,12 @@ SawFinishing::Apply( bool bRecalc) } // eseguo aggiornamento assi macchina e collegamento con operazione precedente - return Update() ; + return Update( bPostApply) ; } //---------------------------------------------------------------------------- bool -SawFinishing::Update( void) +SawFinishing::Update( bool bPostApply) { // verifico validità gestore DB geometrico e Id del gruppo if ( m_pGeomDB == nullptr || ! m_pGeomDB->ExistsObj( m_nOwnerId)) @@ -518,7 +518,7 @@ SawFinishing::Update( void) } // esecuzione eventuali personalizzazioni - if ( ! PostApply()) { + if ( bPostApply && ! PostApply()) { m_pMchMgr->SetLastError( 2714, "Error in SawFinishing : post apply not calculable") ; return false ; } diff --git a/SawFinishing.h b/SawFinishing.h index dc34d8d..e0c3021 100644 --- a/SawFinishing.h +++ b/SawFinishing.h @@ -54,8 +54,8 @@ class SawFinishing : public Machining bool SetParam( int nType, const std::string& sVal) override ; bool SetGeometry( const SELVECTOR& vIds) override ; bool Preview( bool bRecalc) override ; - bool Apply( bool bRecalc) override ; - bool Update( void) override ; + bool Apply( bool bRecalc, bool bPostApply) override ; + bool Update( bool bPostApply) override ; bool GetParam( int nType, bool& bVal) const override ; bool GetParam( int nType, int& nVal) const override ; bool GetParam( int nType, double& dVal) const override ; diff --git a/SawRoughing.cpp b/SawRoughing.cpp index 9093ef3..11f13e1 100644 --- a/SawRoughing.cpp +++ b/SawRoughing.cpp @@ -384,12 +384,12 @@ bool SawRoughing::Preview( bool bRecalc) { // non esiste preview, si fa apply - return Apply( bRecalc) ; + return Apply( bRecalc, false) ; } //---------------------------------------------------------------------------- bool -SawRoughing::Apply( bool bRecalc) +SawRoughing::Apply( bool bRecalc, bool bPostApply) { // reset numero tagli nella lavorazione m_nCuts = 0 ; @@ -443,12 +443,12 @@ SawRoughing::Apply( bool bRecalc) m_nCuts = 1 ; // eseguo aggiornamento assi macchina e collegamento con operazione precedente - return Update() ; + return Update( bPostApply) ; } //---------------------------------------------------------------------------- bool -SawRoughing::Update( void) +SawRoughing::Update( bool bPostApply) { // verifico validità gestore DB geometrico e Id del gruppo if ( m_pGeomDB == nullptr || ! m_pGeomDB->ExistsObj( m_nOwnerId)) @@ -494,7 +494,7 @@ SawRoughing::Update( void) } // esecuzione eventuali personalizzazioni - if ( ! PostApply()) { + if ( bPostApply && ! PostApply()) { m_pMchMgr->SetLastError( 2614, "Error in SawRoughing : post apply not calculable") ; return false ; } diff --git a/SawRoughing.h b/SawRoughing.h index d908458..4c41dda 100644 --- a/SawRoughing.h +++ b/SawRoughing.h @@ -54,8 +54,8 @@ class SawRoughing : public Machining bool SetParam( int nType, const std::string& sVal) override ; bool SetGeometry( const SELVECTOR& vIds) override ; bool Preview( bool bRecalc) override ; - bool Apply( bool bRecalc) override ; - bool Update( void) override ; + bool Apply( bool bRecalc, bool bPostApply) override ; + bool Update( bool bPostApply) override ; bool GetParam( int nType, bool& bVal) const override ; bool GetParam( int nType, int& nVal) const override ; bool GetParam( int nType, double& dVal) const override ; diff --git a/Sawing.cpp b/Sawing.cpp index 254cfb9..430dbda 100644 --- a/Sawing.cpp +++ b/Sawing.cpp @@ -492,7 +492,7 @@ Sawing::Preview( bool bRecalc) //---------------------------------------------------------------------------- bool -Sawing::Apply( bool bRecalc) +Sawing::Apply( bool bRecalc, bool bPostApply) { // reset numero tagli nella lavorazione m_nCuts = 0 ; @@ -557,12 +557,12 @@ Sawing::Apply( bool bRecalc) } // eseguo aggiornamento assi macchina e collegamento con operazione precedente - return Update() ; + return Update( bPostApply) ; } //---------------------------------------------------------------------------- bool -Sawing::Update( void) +Sawing::Update( bool bPostApply) { // verifico validità gestore DB geometrico e Id del gruppo if ( m_pGeomDB == nullptr || ! m_pGeomDB->ExistsObj( m_nOwnerId)) @@ -608,7 +608,7 @@ Sawing::Update( void) } // esecuzione eventuali personalizzazioni - if ( ! PostApply()) { + if ( bPostApply && ! PostApply()) { m_pMchMgr->SetLastError( 2219, "Error in Sawing : post apply not calculable") ; return false ; } diff --git a/Sawing.h b/Sawing.h index d5ec42a..ad10b14 100644 --- a/Sawing.h +++ b/Sawing.h @@ -54,8 +54,8 @@ class Sawing : public Machining bool SetParam( int nType, const std::string& sVal) override ; bool SetGeometry( const SELVECTOR& vIds) override ; bool Preview( bool bRecalc) override ; - bool Apply( bool bRecalc) override ; - bool Update( void) override ; + bool Apply( bool bRecalc, bool bPostApply) override ; + bool Update( bool bPostApply) override ; bool GetParam( int nType, bool& bVal) const override ; bool GetParam( int nType, int& nVal) const override ; bool GetParam( int nType, double& dVal) const override ;