//---------------------------------------------------------------------------- // EgalTech 2015-2023 //---------------------------------------------------------------------------- // File : CamData.cpp Data : 22.11.23 Versione : 2.5k3 // Contenuto : Implementazione informazioni Cam di ogni movimento. // // // // Modifiche : 10.06.15 DS Creazione modulo. // 24.02.16 DS Versione 2 (aggiunti m_nMove e m_ptCen). // 22.11.23 DS Aggiunto flag ToolShow (forza in ogni caso la visualizzazione della direzione utensile). // //---------------------------------------------------------------------------- //--------------------------- Include ---------------------------------------- #include "stdafx.h" #include "CamData.h" #include "/EgtDev/Include/EGkGeomDB.h" #include "/EgtDev/Include/EGkUserObjFactory.h" #include "/EgtDev/Include/EGkStringUtils3d.h" #include "/EgtDev/Include/EGnStringKeyVal.h" using namespace std ; //---------------------------------------------------------------------------- static int CAM_PARAM_V1 = 10 ; static string CAM_CORR = "Corr" ; static string CAM_TDIR = "TDir" ; static string CAM_CDIR = "CDir" ; static string CAM_ADIR = "ADir" ; static string CAM_PBAS = "PBas" ; static string CAM_FEED = "Feed" ; static string CAM_FLAG = "Flg" ; static string CAM_AXSTS = "AxS" ; static string CAM_AXMSK = "AxM" ; static string CAM_AXVAL = "AxV" ; static int CAM_PARAM_V2 = 16 ; static string CAM_MOVE = "Move" ; static string CAM_PCEN = "PCen" ; static string CAM_ACEN = "ACen" ; static string CAM_AXMC = "AxMC" ; static string CAM_AXMR = "AxMR" ; static string CAM_AXAC = "AxAC" ; static int CAM_PARAM_V3 = 18 ; static string CAM_NDIR = "NDir" ; static string CAM_AXND = "AxND" ; static int CAM_PARAM_V4 = 19 ; static string CAM_NDLT = "NDlt" ; static int CAM_PARAM_V5 = 20 ; static string CAM_BDIR = "BDir" ; static int CAM_PARAM_V6 = 21 ; static string CAM_INDEX = "Idx" ; static int CAM_PARAM_V7 = 22 ; static string CAM_ORIGFEED = "OrFeed" ; static int CAM_PARAM_V8 = 23 ; static string CAM_FLAG2 = "Flg2" ; static int CAM_PARAM_V9 = 24 ; static string CAM_TOOLSHOW = "TSh" ; static int CAM_TOTPARAM = CAM_PARAM_V9 ; //---------------------------------------------------------------------------- USEROBJ_REGISTER( "EMkCamData", CamData) ; //---------------------------------------------------------------------------- const string& CamData::GetClassName( void) const { return USEROBJ_GETNAME( CamData) ; } //---------------------------------------------------------------------------- CamData* CamData::Clone( void) const { // alloco oggetto CamData* pCam = new(nothrow) CamData ; // eseguo copia dei dati if ( pCam != nullptr) { try { pCam->m_nOwnerId = GDB_ID_NULL ; pCam->m_pGeomDB = nullptr ; pCam->m_nMove = m_nMove ; pCam->m_nCorre = m_nCorre ; pCam->m_bToolShow = m_bToolShow ; pCam->m_vtTool = m_vtTool ; pCam->m_vtCorr = m_vtCorr ; pCam->m_vtAux = m_vtAux ; pCam->m_ptEnd = m_ptEnd ; pCam->m_ptCen = m_ptCen ; pCam->m_dAngCen = m_dAngCen ; pCam->m_vtN = m_vtN ; pCam->m_dDeltaN = m_dDeltaN ; pCam->m_dFeed = m_dFeed ; pCam->m_dOrigFeed = m_dOrigFeed ; pCam->m_nFlag = m_nFlag ; pCam->m_nFlag2 = m_nFlag2 ; pCam->m_nIndex = m_nIndex ; pCam->m_nAxesStatus = m_nAxesStatus ; pCam->m_nAxesMask = m_nAxesMask ; pCam->m_vMachAxes = m_vMachAxes ; pCam->m_ptMachCen = m_ptMachCen ; pCam->m_dMachRad = m_dMachRad ; pCam->m_dMachAngCen = m_dMachAngCen ; pCam->m_vtMachN = m_vtMachN ; pCam->m_vtBackAux = m_vtBackAux ; } catch( ...) { delete pCam ; return nullptr ; } } // ritorno l'oggetto return pCam ; } //---------------------------------------------------------------------------- bool CamData::Dump( string& sOut, bool bMM, const char* szNewLine) const { sOut += GetClassName() + "[mm]" + szNewLine ; sOut += CAM_MOVE + "=" + ToString( m_nMove) + szNewLine ; sOut += CAM_CORR + "=" + ToString( m_nCorre) + szNewLine ; sOut += CAM_TDIR + "=" + ToString( m_vtTool) + szNewLine ; sOut += CAM_CDIR + "=" + ToString( m_vtCorr) + szNewLine ; sOut += CAM_ADIR + "=" + ToString( m_vtAux) + szNewLine ; sOut += CAM_PBAS + "=" + ToString( m_ptEnd) + szNewLine ; sOut += CAM_PCEN + "=" + ToString( m_ptCen) + szNewLine ; sOut += CAM_ACEN + "=" + ToString( m_dAngCen) + szNewLine ; sOut += CAM_NDIR + "=" + ToString( m_vtN) + szNewLine ; sOut += CAM_FEED + "=" + ToString( m_dFeed) + szNewLine ; if ( m_dOrigFeed >= 0) sOut += CAM_ORIGFEED + "=" + ToString( m_dOrigFeed) + szNewLine ; sOut += CAM_FLAG + "=" + ToString( m_nFlag) + szNewLine ; sOut += CAM_FLAG2 + "=" + ToString( m_nFlag2) + szNewLine ; sOut += CAM_INDEX + "=" + ToString( m_nIndex) + szNewLine ; sOut += CAM_AXSTS + "=" + ToString( m_nAxesStatus) + szNewLine ; sOut += CAM_AXMSK + "=" + ToString( m_nAxesMask) + szNewLine ; sOut += CAM_AXVAL + "=" + ToString( m_vMachAxes) + szNewLine ; sOut += CAM_AXMC + "=" + ToString( m_ptMachCen) + szNewLine ; sOut += CAM_AXMR + "=" + ToString( m_dMachRad) + szNewLine ; sOut += CAM_AXAC + "=" + ToString( m_dMachAngCen) + szNewLine ; sOut += CAM_AXND + "=" + ToString( m_vtMachN) + szNewLine ; sOut += CAM_NDLT + "=" + ToString( m_dDeltaN) + szNewLine ; sOut += CAM_BDIR + "=" + ToString( m_vtBackAux) + szNewLine ; sOut += CAM_TOOLSHOW + "=" + ToString( m_bToolShow) + szNewLine ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetOwner( int nId, IGeomDB* pGDB) { m_nOwnerId = nId ; m_pGeomDB = pGDB ; if ( m_pGeomDB != nullptr) m_pGeomDB->SetStipple( m_nOwnerId, ( m_nMove == 0 ? 3 : 0), 0x8C8C) ; return ( m_nOwnerId != GDB_ID_NULL && m_pGeomDB != nullptr) ; } //---------------------------------------------------------------------------- int CamData::GetOwner( void) const { return m_nOwnerId ; } //---------------------------------------------------------------------------- IGeomDB* CamData::GetGeomDB( void) const { return m_pGeomDB ; } //---------------------------------------------------------------------------- bool CamData::Save( int nBaseId, STRVECTOR& vString) const { try { vString.insert( vString.begin(), CAM_TOTPARAM, "") ; int k = - 1 ; vString[++k] = CAM_CORR + "=" + ToString( m_nCorre) ; vString[++k] = CAM_TDIR + "=" + ToString( m_vtTool) ; vString[++k] = CAM_CDIR + "=" + ToString( m_vtCorr) ; vString[++k] = CAM_ADIR + "=" + ToString( m_vtAux) ; vString[++k] = CAM_PBAS + "=" + ToString( m_ptEnd) ; vString[++k] = CAM_FEED + "=" + ToString( m_dFeed) ; vString[++k] = CAM_FLAG + "=" + ToString( m_nFlag) ; vString[++k] = CAM_AXSTS + "=" + ToString( m_nAxesStatus) ; vString[++k] = CAM_AXMSK + "=" + ToString( m_nAxesMask) ; vString[++k] = CAM_AXVAL + "=" + ToString( m_vMachAxes) ; // parametri aggiunti V2 vString[++k] = CAM_MOVE + "=" + ToString( m_nMove) ; vString[++k] = CAM_PCEN + "=" + ToString( m_ptCen) ; vString[++k] = CAM_ACEN + "=" + ToString( m_dAngCen) ; vString[++k] = CAM_AXMC + "=" + ToString( m_ptMachCen) ; vString[++k] = CAM_AXMR + "=" + ToString( m_dMachRad) ; vString[++k] = CAM_AXAC + "=" + ToString( m_dMachAngCen) ; // parametri aggiunti V3 vString[++k] = CAM_NDIR + "=" + ToString( m_vtN) ; vString[++k] = CAM_AXND + "=" + ToString( m_vtMachN) ; // parametri aggiunti V4 vString[++k] = CAM_NDLT + "=" + ToString( m_dDeltaN) ; // parametri aggiunti V5 vString[++k] = CAM_BDIR + "=" + ToString( m_vtBackAux) ; // parametri aggiunti V6 vString[++k] = CAM_INDEX + "=" + ToString( m_nIndex) ; // parametri aggiunti V7 vString[++k] = CAM_ORIGFEED + "=" + ToString( m_dOrigFeed) ; // parametri aggiunti V8 vString[++k] = CAM_FLAG2 + "=" + ToString( m_nFlag2) ; // parametri aggiunti V9 vString[++k] = CAM_TOOLSHOW + "=" + ToString( m_bToolShow) ; } catch( ...) { return false ; } return true ; } //---------------------------------------------------------------------------- bool CamData::Load( const STRVECTOR& vString, int nBaseGdbId) { if ( int( vString.size()) < CAM_PARAM_V1) return false ; int k = - 1 ; if ( ! GetVal( vString[++k], CAM_CORR, m_nCorre) || ! GetVal( vString[++k], CAM_TDIR, m_vtTool) || ! GetVal( vString[++k], CAM_CDIR, m_vtCorr) || ! GetVal( vString[++k], CAM_ADIR, m_vtAux) || ! GetVal( vString[++k], CAM_PBAS, m_ptEnd) || ! GetVal( vString[++k], CAM_FEED, m_dFeed) || ! GetVal( vString[++k], CAM_FLAG, m_nFlag) || ! GetVal( vString[++k], CAM_AXSTS, m_nAxesStatus) || ! GetVal( vString[++k], CAM_AXMSK, m_nAxesMask) || ! GetVal( vString[++k], CAM_AXVAL, m_vMachAxes)) return false ; // parametri aggiunti V2 if ( int( vString.size()) >= CAM_PARAM_V2) { if ( ! GetVal( vString[++k], CAM_MOVE, m_nMove) || ! GetVal( vString[++k], CAM_PCEN, m_ptCen) || ! GetVal( vString[++k], CAM_ACEN, m_dAngCen) || ! GetVal( vString[++k], CAM_AXMC, m_ptMachCen) || ! GetVal( vString[++k], CAM_AXMR, m_dMachRad) || ! GetVal( vString[++k], CAM_AXAC, m_dMachAngCen)) return false ; } else { m_nMove = ( m_dFeed < EPS_SMALL ? 0 : 1) ; m_ptCen = ORIG ; m_dAngCen = 0 ; m_ptMachCen = ORIG ; m_dMachRad = 0 ; } // parametri aggiunti V3 if ( int( vString.size()) >= CAM_PARAM_V3) { if ( ! GetVal( vString[++k], CAM_NDIR, m_vtN) || ! GetVal( vString[++k], CAM_AXND, m_vtMachN)) return false ; } else { m_vtN = Z_AX ; m_vtMachN = Z_AX ; } // parametri aggiunti V4 if ( int( vString.size()) >= CAM_PARAM_V4) { if ( ! GetVal( vString[++k], CAM_NDLT, m_dDeltaN)) return false ; } else { m_dDeltaN = 0 ; } // parametri aggiunti V5 if ( int( vString.size()) >= CAM_PARAM_V5) { if ( ! GetVal( vString[++k], CAM_BDIR, m_vtBackAux)) return false ; } else { m_vtBackAux = V_NULL ; } // parametri aggiunti V6 if ( int( vString.size()) >= CAM_PARAM_V6) { if ( ! GetVal( vString[++k], CAM_INDEX, m_nIndex)) return false ; } else { m_nIndex = 0 ; } // parametri aggiunti V7 if ( int( vString.size()) >= CAM_PARAM_V7) { if ( ! GetVal( vString[++k], CAM_ORIGFEED, m_dOrigFeed)) return false ; } else { m_dOrigFeed = -1 ; } // parametri aggiunti V8 if ( int( vString.size()) >= CAM_PARAM_V8) { if ( ! GetVal( vString[++k], CAM_FLAG2, m_nFlag2)) return false ; } else { m_nFlag2 = 0 ; } // parametri aggiunti V9 if ( int( vString.size()) >= CAM_PARAM_V9) { if ( ! GetVal( vString[++k], CAM_TOOLSHOW, m_bToolShow)) return false ; } else { m_bToolShow = false ; } return true ; } //---------------------------------------------------------------------------- bool CamData::GetDrawPolyLines( POLYLINELIST& lstPL) const { bool bToDraw = false ; // se vettore fresa non nullo if ( ! m_vtTool.IsSmall()) { bToDraw = true ; // aggiungo polilinea alla lista lstPL.emplace_back() ; PolyLine& PL = lstPL.back() ; // dimensioni const double TLEN = 40 ; const double ALEN = 1 ; // inserisco disegno nella polilinea PL.AddUPoint( 0, m_ptEnd) ; Point3d ptTip = m_ptEnd + m_vtTool * TLEN ; PL.AddUPoint( 1, ptTip) ; // aggiungo simil-freccia Frame3d frF ; frF.Set( ptTip, m_vtTool) ; Point3d ptP2 = ORIG + Vector3d( ALEN, 0, -ALEN) ; ptP2.ToGlob( frF) ; PL.AddUPoint( 2, ptP2) ; Point3d ptP3 = ORIG + Vector3d( -ALEN, 0, -ALEN) ; ptP3.ToGlob( frF) ; PL.AddUPoint( 3, ptP3) ; PL.AddUPoint( 4, ptTip) ; Point3d ptP5 = ORIG + Vector3d( 0, ALEN, -ALEN) ; ptP5.ToGlob( frF) ; PL.AddUPoint( 5, ptP5) ; Point3d ptP6 = ORIG + Vector3d( 0, -ALEN, -ALEN) ; ptP6.ToGlob( frF) ; PL.AddUPoint( 6, ptP6) ; PL.AddUPoint( 6, ptTip) ; // da visualizzare sempre se richiesto if ( m_bToolShow) PL.SetTempProp( 1) ; } // se vettore correzione non nullo if ( ! m_vtCorr.IsSmall()) { bToDraw = true ; // aggiungo polilinea alla lista lstPL.emplace_back() ; PolyLine& PL = lstPL.back() ; // dimensioni const double CLEN = 20 ; const double ALEN = 1 ; // inserisco disegno nella polilinea PL.AddUPoint( 0, m_ptEnd) ; Point3d ptTip = m_ptEnd + m_vtCorr * CLEN ; PL.AddUPoint( 1, ptTip) ; // aggiungo simil-freccia Frame3d frF ; if ( m_vtTool. IsSmall() || AreSameOrOppositeVectorApprox( m_vtTool, m_vtCorr)) frF.Set( ptTip, m_vtCorr) ; else frF.Set( ptTip, m_vtCorr, m_vtTool) ; Point3d ptP2 = ORIG + Vector3d( 0, ALEN, 0) ; ptP2.ToGlob( frF) ; PL.AddUPoint( 2, ptP2) ; Point3d ptP3 = ORIG + Vector3d( 0, ALEN, - ALEN) ; ptP3.ToGlob( frF) ; PL.AddUPoint( 3, ptP3) ; Point3d ptP4 = ORIG + Vector3d( 0, 0, - ALEN) ; ptP4.ToGlob( frF) ; PL.AddUPoint( 4, ptP4) ; } // se vettore ausiliario non nullo if ( ! m_vtAux.IsSmall()) { bToDraw = true ; // aggiungo polilinea alla lista lstPL.emplace_back() ; PolyLine& PL = lstPL.back() ; // dimensioni const double CLEN = 20 ; const double ALEN = 1 ; // inserisco disegno nella polilinea PL.AddUPoint( 0, m_ptEnd) ; Point3d ptTip = m_ptEnd + m_vtAux * CLEN ; PL.AddUPoint( 1, ptTip) ; // aggiungo simil-freccia Frame3d frF ; if ( m_vtTool. IsSmall() || AreSameOrOppositeVectorApprox( m_vtTool, m_vtAux)) frF.Set( ptTip, m_vtAux) ; else frF.Set( ptTip, m_vtAux, m_vtTool) ; Point3d ptP2 = ORIG + Vector3d( 0, ALEN, - 0.5 * ALEN) ; ptP2.ToGlob( frF) ; PL.AddUPoint( 2, ptP2) ; Point3d ptP3 = ORIG + Vector3d( 0, 0, - ALEN) ; ptP3.ToGlob( frF) ; PL.AddUPoint( 3, ptP3) ; } return bToDraw ; } //---------------------------------------------------------------------------- bool CamData::Translate( const Vector3d& vtMove) { m_ptEnd.Translate( vtMove) ; m_ptCen.Translate( vtMove) ; return true ; } //---------------------------------------------------------------------------- bool CamData::Rotate( const Point3d& ptAx, const Vector3d& vtAx, double dCosAng, double dSinAng) { if ( ! m_ptEnd.Rotate( ptAx, vtAx, dCosAng, dSinAng)) return false ; if ( ! m_ptCen.Rotate( ptAx, vtAx, dCosAng, dSinAng)) return false ; if ( ! m_vtTool.Rotate( vtAx, dCosAng, dSinAng)) return false ; if ( ! m_vtCorr.Rotate( vtAx, dCosAng, dSinAng)) return false ; if ( ! m_vtAux.Rotate( vtAx, dCosAng, dSinAng)) return false ; return true ; } //---------------------------------------------------------------------------- bool CamData::Scale( const Frame3d& frRef, double dCoeffX, double dCoeffY, double dCoeffZ) { if ( ! m_ptEnd.Scale( frRef, dCoeffX, dCoeffY, dCoeffZ)) return false ; if ( ! m_ptCen.Scale( frRef, dCoeffX, dCoeffY, dCoeffZ)) return false ; if ( ! m_vtTool.IsSmall()) { if ( ! m_vtTool.Scale( frRef, dCoeffX, dCoeffY, dCoeffZ) || ! m_vtTool.Normalize()) return false ; } if ( ! m_vtCorr.IsSmall()) { double dLen = m_vtCorr.Len() ; if ( ! m_vtCorr.Scale( frRef, dCoeffX, dCoeffY, dCoeffZ) || ! m_vtCorr.Normalize()) return false ; m_vtCorr *= dLen ; } if ( ! m_vtAux.IsSmall()) { if ( ! m_vtAux.Scale( frRef, dCoeffX, dCoeffY, dCoeffZ) || ! m_vtAux.Normalize()) return false ; } return true ; } //---------------------------------------------------------------------------- bool CamData::Mirror( const Point3d& ptOn, const Vector3d& vtNorm) { if ( ! m_ptEnd.Mirror( ptOn, vtNorm)) return false ; if ( ! m_ptCen.Mirror( ptOn, vtNorm)) return false ; m_dAngCen = - m_dAngCen ; if ( ! m_vtN.Mirror( vtNorm)) return false ; if ( ! m_vtTool.Mirror( vtNorm)) return false ; if ( ! m_vtCorr.Mirror( vtNorm)) return false ; if ( ! m_vtAux.Mirror( vtNorm)) return false ; return true ; } //---------------------------------------------------------------------------- bool CamData::Shear( const Point3d& ptOn, const Vector3d& vtNorm, const Vector3d& vtDir, double dCoeff) { if ( ! m_ptEnd.Shear( ptOn, vtNorm, vtDir, dCoeff)) return false ; if ( ! m_ptCen.Shear( ptOn, vtNorm, vtDir, dCoeff)) return false ; if ( ! m_vtTool.IsSmall()) { if ( ! m_vtTool.Shear( vtNorm, vtDir, dCoeff) || ! m_vtTool.Normalize()) return false ; } if ( ! m_vtCorr.IsSmall()) { double dLen = m_vtCorr.Len() ; if ( ! m_vtCorr.Shear( vtNorm, vtDir, dCoeff) || ! m_vtCorr.Normalize()) return false ; m_vtCorr *= dLen ; } if ( ! m_vtAux.IsSmall()) { if ( ! m_vtAux.Shear( vtNorm, vtDir, dCoeff) || ! m_vtAux.Normalize()) return false ; } return true ; } //---------------------------------------------------------------------------- bool CamData::ToGlob( const Frame3d& frRef) { if ( ! m_ptEnd.ToGlob( frRef)) return false ; if ( ! m_ptCen.ToGlob( frRef)) return false ; if ( ! m_vtTool.ToGlob( frRef)) return false ; if ( ! m_vtCorr.ToGlob( frRef)) return false ; if ( ! m_vtAux.ToGlob( frRef)) return false ; return true ; } //---------------------------------------------------------------------------- bool CamData::ToLoc( const Frame3d& frRef) { if ( ! m_ptEnd.ToLoc( frRef)) return false ; if ( ! m_ptCen.ToLoc( frRef)) return false ; if ( ! m_vtTool.ToLoc( frRef)) return false ; if ( ! m_vtCorr.ToLoc( frRef)) return false ; if ( ! m_vtAux.ToLoc( frRef)) return false ; return true ; } //---------------------------------------------------------------------------- bool CamData::LocToLoc( const Frame3d& frOri, const Frame3d& frDest) { if ( ! m_ptEnd.LocToLoc( frOri, frDest)) return false ; if ( ! m_ptCen.LocToLoc( frOri, frDest)) return false ; if ( ! m_vtTool.LocToLoc( frOri, frDest)) return false ; if ( ! m_vtCorr.LocToLoc( frOri, frDest)) return false ; if ( ! m_vtAux.LocToLoc( frOri, frDest)) return false ; return true ; } //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- CamData::CamData( void) { m_nOwnerId = GDB_ID_NULL ; m_pGeomDB = nullptr ; m_nMove = 0 ; m_nCorre = 0 ; m_bToolShow = false ; m_dAngCen = 0 ; m_dDeltaN = 0 ; m_dFeed = 0 ; m_dOrigFeed = -1 ; m_nFlag = 0 ; m_nFlag2 = 0 ; m_nIndex = 0 ; m_nAxesStatus = AS_NONE ; m_nAxesMask = 0x00 ; m_vMachAxes.reserve( 8) ; m_dMachRad = 0 ; m_dMachAngCen = 0 ; } //---------------------------------------------------------------------------- bool CamData::SetMoveType( int nMove) { m_nMove = nMove ; ResetObjGraphics() ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetToolDir( const Vector3d& vtDir) { m_vtTool = vtDir ; ResetObjGraphics() ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetCorrDir( const Vector3d& vtDir) { m_vtCorr = vtDir ; ResetObjGraphics() ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetAuxDir( const Vector3d& vtDir) { m_vtAux = vtDir ; ResetObjGraphics() ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetEndPoint( const Point3d& ptEnd) { m_ptEnd = ptEnd ; ResetObjGraphics() ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetCenter( const Point3d& ptCen) { m_ptCen = ptCen ; ResetObjGraphics() ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetAngCen( double dAngCen) { m_dAngCen = dAngCen ; ResetObjGraphics() ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetNormDir( const Vector3d& vtDir) { m_vtN = vtDir ; ResetObjGraphics() ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetDeltaN( double dDeltaN) { m_dDeltaN = dDeltaN ; ResetObjGraphics() ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetFeed( double dFeed) { m_dFeed = dFeed ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetOrigFeed( double dOrigFeed) { m_dOrigFeed = dOrigFeed ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetFlag( int nFlag) { m_nFlag = nFlag ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetFlag2( int nFlag2) { m_nFlag2 = nFlag2 ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetIndex( int nIndex) { m_nIndex = nIndex ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetAxes( int nStatus, const DBLVECTOR& vAxVal) { if ( nStatus != AS_OK && nStatus != AS_OUTSTROKE && nStatus != AS_DIR_ERR && nStatus != AS_ERR) return false ; m_nAxesStatus = nStatus ; m_vMachAxes = vAxVal ; m_nAxesMask = ( 1 << vAxVal.size()) - 1 ; return true ; } //---------------------------------------------------------------------------- bool CamData::ChangeAxesMask( int nMask) { m_nAxesMask = ( nMask & (( 1 << m_vMachAxes.size()) - 1)) ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetAxesCen( const Point3d ptAxCen) { if ( ! IsArc()) return false ; m_ptMachCen = ptAxCen ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetAxesRad( double dRad) { if ( ! IsArc()) return false ; m_dMachRad = dRad ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetAxesAngCen( double dAngCen) { if ( ! IsArc()) return false ; m_dMachAngCen = dAngCen ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetAxesNormDir( const Vector3d& vtDir) { if ( ! IsArc()) return false ; m_vtMachN = vtDir ; return true ; } //---------------------------------------------------------------------------- bool CamData::SetBackAuxDir( const Vector3d& vtDir) { m_vtBackAux = vtDir ; return true ; } //---------------------------------------------------------------------------- void CamData::ResetObjGraphics( void) { if ( m_pGeomDB == nullptr) return ; IGeoObj* pGeo = m_pGeomDB->GetGeoObj( m_nOwnerId) ; if ( pGeo == nullptr) return ; IObjGraphics* pGraph = pGeo->GetObjGraphics() ; if ( pGraph == nullptr) return ; pGraph->Reset() ; }