BOOL CForceGraphView::CreateGraph() { if ( m_pController == NULL ) return FALSE; CStrip* pStrip = m_pController->GetActiveStrip(); if ( pStrip == NULL ) return FALSE; CStandPass* pPass = m_pController->GetActivePass(); if ( pPass == NULL && pStrip->GetMeasuredData() == NULL ) return TRUE; C2DGraphSubSet * pLGraphSubSet = AddNew2DGraphSubSet(eTop | eLeft); C2DGraphSubSet * pRGraphSubSet = AddNew2DGraphSubSet(eTop | eRight); C2DGraphSet * pGraphSet = GetGraphSet(); double dYMax = 0; _2D_POINTS_CREATE_STRUCT pcs; pcs.bDeletePoints = TRUE; pcs.bIncludeInLegend = TRUE; pcs.crColor = RGB(255, 0, 0); pcs.nMarkType = MT_NOMARK; pcs.nPenWidth = 25; pcs.pPointArray = new CObArray(); pcs.strTitle = CStringEx(IDS_FORCE); if ( pPass != NULL ) { for (int i = 0; i < pPass->GetForceCount(); i++) { pcs.pPointArray->Add(new C2DPoint(pPass->GetXPosition(i), pPass->GetForce(i) / 1e3)); } pLGraphSubSet->AddPoints(pcs); pcs.pPointArray = new CObArray(); pcs.strTitle = CStringEx(IDS_BENDING_FORCE); for (int i = 0; i < pPass->GetBendingForceCount(); i++) { pcs.pPointArray->Add(new C2DPoint(pPass->GetXPosition(i), pPass->GetBendingForce(i) / 1e3)); } pRGraphSubSet->AddPoints(pcs); } CMeasuredData* pData = pStrip->GetMeasuredData(); if ( pData != NULL ) { CMeasuredDataMillPass* pMillPass = pStrip->GetMeasuredData()->GetMillPass(m_pController->GetActiveMillPassIndex()); if ( pMillPass != NULL ) { pcs.pPointArray = new CObArray(); pcs.strTitle = CStringEx(IDS_FORCE); pcs.strTitle += _T(" S1"); pcs.crColor = RGB(255, 0, 0); double dX = 0.; for ( auto point : pMillPass->GetAllPointsCL() ) { CMeasuredDataMillPassPointCL* pPoint = point.second; if ( pPoint != NULL ) pcs.pPointArray->Add( new C2DPoint(dX, pPoint->GetForceS1() / 1e3 ) ); dX += ( 1.0 / ( pMillPass->GetPointCLCount() - 1 ) ); } pLGraphSubSet->AddPoints( pcs ); pcs.pPointArray = new CObArray(); pcs.strTitle = CStringEx(IDS_FORCE); pcs.strTitle += _T(" S2"); pcs.crColor = RGB(255, 0, 0); dX = 0.; for ( auto point : pMillPass->GetAllPointsCL() ) { CMeasuredDataMillPassPointCL* pPoint = point.second; if ( pPoint != NULL ) pcs.pPointArray->Add( new C2DPoint(dX, pPoint->GetForceS2() / 1e3 ) ); dX += ( 1.0 / ( pMillPass->GetPointCLCount() - 1 ) ); } pLGraphSubSet->AddPoints( pcs ); pcs.pPointArray = new CObArray(); pcs.strTitle = CStringEx(IDS_BENDING_FORCE); pcs.strTitle += _T(" S1"); pcs.crColor = RGB(0, 0, 255); dX = 0.; for ( auto point : pMillPass->GetAllPointsCL() ) { CMeasuredDataMillPassPointCL* pPoint = point.second; if ( pPoint != NULL ) pcs.pPointArray->Add( new C2DPoint(dX, pPoint->GetBendingForceS1() / 1e3 ) ); dX += ( 1.0 / ( pMillPass->GetPointCLCount() - 1 ) ); } pLGraphSubSet->AddPoints( pcs ); pcs.pPointArray = new CObArray(); pcs.strTitle = CStringEx(IDS_BENDING_FORCE); pcs.strTitle += _T(" S2"); pcs.crColor = RGB(0, 0, 255); dX = 0.; for ( auto point : pMillPass->GetAllPointsCL() ) { CMeasuredDataMillPassPointCL* pPoint = point.second; if ( pPoint != NULL ) pcs.pPointArray->Add( new C2DPoint(dX, pPoint->GetBendingForceS2() / 1e3 ) ); dX += ( 1.0 / ( pMillPass->GetPointCLCount() - 1 ) ); } pLGraphSubSet->AddPoints( pcs ); } } CString strXDescription, strXUnits; strXDescription = CStringEx(IDS_LENGTH); pGraphSet->SetXAxisText(strXDescription); pGraphSet->SetXAxisMin((0.0)); pGraphSet->SetXAxisMax((1.0)); // Axis Y name CString strYDescription; strYDescription = CStringEx(IDS_FORCE); strYDescription += _T(" |["); strYDescription += CStringEx(IDS_UNIT_KN); strYDescription += _T("]"); pLGraphSubSet->SetAxisText(strYDescription); strYDescription = CStringEx(IDS_BENDING_FORCE); strYDescription += _T(" |["); strYDescription += CStringEx(IDS_UNIT_KN); strYDescription += _T("]"); pRGraphSubSet->SetAxisText(strYDescription); // Nastaveni fontu LOGFONT *lplf; lplf = pGraphSet->GetAxesFont(); lplf->lfHeight = 8; #if defined(AFX_TARG_CSY) || defined(AFX_TARG_PLK) lplf->lfCharSet = EASTEUROPE_CHARSET; #endif #if defined(AFX_TARG_ENU) lplf->lfCharSet = DEFAULT_CHARSET; #endif pGraphSet->SetAxesFont( lplf ); // Nastav typ grafu HorniLeve strane pGraphSet->SetTopLeftSubSet(pLGraphSubSet, TRUE ); pGraphSet->SetTopRightSubSet(pRGraphSubSet, TRUE ); // Povol kresleni mrizky pGraphSet->SetXAxisMainGridPenStyle( pGraphSet->XAxisAuxGridPenStyle() ); pLGraphSubSet->SetMainGridPenStyle( pLGraphSubSet->GetAuxGridPenStyle() ); pRGraphSubSet->SetMainGridPenStyle( pRGraphSubSet->GetAuxGridPenStyle() ); pGraphSet->SetXAxisMainGrid( TRUE ); pLGraphSubSet->SetMainGrid( TRUE ); pRGraphSubSet->SetMainGrid( TRUE ); return TRUE; }