⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 showresultview.cpp

📁 大齿轮渐开线齿形误差在位误差检测
💻 CPP
字号:
///////////////////////////////////////////////////////////////////
// ShowResultView.cpp : implementation file
// 左边显示结果视图类成员函数的定义文件
////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "GearMeasurement.h"
#include "ShowResultView.h"

#include "GearMeasurementDoc.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CShowResultView

IMPLEMENT_DYNCREATE(CShowResultView, CFormView)

HWND pSShowResultView;                                           // 定义指向本文件的全局窗口句柄

CShowResultView::CShowResultView()
	: CFormView(CShowResultView::IDD)
{
	//{{AFX_DATA_INIT(CShowResultView)
	//}}AFX_DATA_INIT
}

void CShowResultView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CShowResultView)
	DDX_Control(pDX, IDC_ShowResult_List, m_ShowResult_List);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CShowResultView, CFormView)
	//{{AFX_MSG_MAP(CShowResultView)
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_OnMakeData,OnMakeData)						     // 产生实验数据消息映射
	ON_MESSAGE(WM_OnInitializeParameter,OnInitializeParameterOver)	// 定义初始化参数完成消息
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CShowResultView diagnostics

#ifdef _DEBUG
void CShowResultView::AssertValid() const
{
	CFormView::AssertValid();
}

void CShowResultView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// 本视图环境设置
/////////////////////////////////////////////////////////////////////////////

// 设置视图背景色
void CShowResultView::OnDraw(CDC* pDC) 
{
	CBrush backBrush(RGB(255,255,255));					// 设定为白色
    CBrush* pOldBrush = pDC->SelectObject(&backBrush);	// 保存旧刷子
    CRect rect;
    pDC->GetClipBox(&rect);								// 擦除所需的区域
    pDC->PatBlt(rect.left, rect.top, rect.Width(), rect.Height(), PATCOPY);
    pDC->SelectObject(pOldBrush);						// 还原画刷	
}

// 初始设置表格栏数和数值
void CShowResultView::OnInitialUpdate() 
{
	// 初始设定本类的环境
	CFormView::OnInitialUpdate();
	pSShowResultView=GetSafeHwnd();                     // 把本窗口的句柄进行赋值

	// 加入属性栏内容
	propItem1 = new CPropertyItem("测量类型","齿轮齿形误差测量",PIT_EDITUnable,"");
	m_ShowResult_List.AddPropItem(propItem1);

	propItem2 = new CPropertyItem("齿轮模数","",PIT_EDITUnable,"");
	m_ShowResult_List.AddPropItem(propItem2);

	propItem3 = new CPropertyItem("齿轮齿数","",PIT_EDITUnable,"");
	m_ShowResult_List.AddPropItem(propItem3);

	propItem4 = new CPropertyItem("分度圆半径","",PIT_EDITUnable,"");
	m_ShowResult_List.AddPropItem(propItem4);
	
	propItem5 = new CPropertyItem("定位球最大直径","",PIT_EDITUnable,"");
	m_ShowResult_List.AddPropItem(propItem5);
	
	propItem6 = new CPropertyItem("定位球最小直径","",PIT_EDITUnable,"");
	m_ShowResult_List.AddPropItem(propItem6);
	
	propItem7 = new CPropertyItem("测量次数","",PIT_EDITUnable,"");
	m_ShowResult_List.AddPropItem(propItem7);
	

	propItem8 = new CPropertyItem("测量头起始Y坐标","",PIT_EDITUnable,"");
	m_ShowResult_List.AddPropItem(propItem8);

	propItem9 = new CPropertyItem("定位球心到齿心距离","",PIT_EDITUnable,"");
	m_ShowResult_List.AddPropItem(propItem9);

	propItem10 = new CPropertyItem("起测圆半径","",PIT_EDITUnable,"");
	m_ShowResult_List.AddPropItem(propItem10);

	propItem11 = new CPropertyItem("终测圆半径","",PIT_EDITUnable,"");
	m_ShowResult_List.AddPropItem(propItem11);

	propItem12 = new CPropertyItem("定位球接触点压力角","",PIT_EDITUnable,"");
	m_ShowResult_List.AddPropItem(propItem12);

	propItem13 = new CPropertyItem("测量最大误差","",PIT_EDITUnable,"");
	m_ShowResult_List.AddPropItem(propItem13);

    propItem14 = new CPropertyItem("质量判断","",PIT_EDITUnable,"");
	m_ShowResult_List.AddPropItem(propItem14);

}


// 销毁函数,是本类中执行的最后一步函数
CShowResultView::~CShowResultView()
{
	// 归还内存
	delete propItem1;
	delete propItem2;
	delete propItem3;
	delete propItem4;
	delete propItem5;
	delete propItem6;
	delete propItem7;
	delete propItem8;
	delete propItem9;
	delete propItem10;
	delete propItem11;
	delete propItem12;
	delete propItem13;
    delete propItem14;

}

/////////////////////////////////////////////////////////////////////////////////////
// 产生实验数据的函数
/////////////////////////////////////////////////////////////////////////////////////

void CShowResultView::OnMakeData()
{
	// 获取Doc的指针以便和doc参数交流
	CGearMeasurementDoc* pDoc=(CGearMeasurementDoc *)GetDocument();				
	ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CGearMeasurementDoc)));

	// 更新属性框
	CString In_TextYouWant;

	In_TextYouWant.Format("%f(mm)",pDoc->m_A);			   // 定位球心到齿轮圆心的距离
	propItem9->PropertyItemChange(In_TextYouWant);

	In_TextYouWant.Format("%f(mm)",pDoc->m_Rs);
	propItem10->PropertyItemChange(In_TextYouWant);                    // 起测圆半径

	In_TextYouWant.Format("%f(mm)",pDoc->m_Ra);			              // 终测圆半径
	propItem11->PropertyItemChange(In_TextYouWant);

	In_TextYouWant.Format("%f(度)",pDoc->m_ai*180/3.1415926);	   // 定位球接触点压力角
	propItem12->PropertyItemChange(In_TextYouWant);

	In_TextYouWant.Format("%f(um)",pDoc->m_errorMax*1000);	   // 测量最大误差
	propItem13->PropertyItemChange(In_TextYouWant);

	In_TextYouWant.Format("%s",pDoc->m_judge);	            // 判断是否合格
	propItem14->PropertyItemChange(In_TextYouWant);


	m_ShowResult_List.OnChangePropItem(propItem12);		   // 这句只需要一次就可以,作用是刷新屏幕

	// 生成实验数据算法编程

	// 生成结束后消息处理部分
	AfxMessageBox("生成数据完成!");					   // 弹出消息框
	pDoc->UpdateAllViews(this);                            // 刷新窗口
}


/////////////////////////////////////////////////////////////////////////////////////
// 初始化参数完成的函数,功能是填表
/////////////////////////////////////////////////////////////////////////////////////

void CShowResultView::OnInitializeParameterOver()
{
	// 获取Doc的指针以便和doc参数交流
	CGearMeasurementDoc* pDoc=(CGearMeasurementDoc *)GetDocument();				
	ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CGearMeasurementDoc)));

	// 更新属性框//用于参数在左边框中输出
	CString In_TextYouWant;

	In_TextYouWant.Format("%d",pDoc->m_moshu);			// 齿轮模数
	propItem2->PropertyItemChange(In_TextYouWant);

	In_TextYouWant.Format("%d" ,pDoc->m_chishu);          //齿轮齿数
	propItem3->PropertyItemChange(In_TextYouWant);

	In_TextYouWant.Format("%f(mm)",pDoc->m_R);			// 分度圆半径
	propItem4->PropertyItemChange(In_TextYouWant);

	In_TextYouWant.Format("%f(mm)",pDoc->m_Dmax);	    // 定位球最大直径
	propItem5->PropertyItemChange(In_TextYouWant);

	In_TextYouWant.Format("%f(mm)",pDoc->m_Dmin);	    //定位球最小直径 
	propItem6->PropertyItemChange(In_TextYouWant);

	In_TextYouWant.Format("%d",pDoc->m_n);				// 测量次数
	propItem7->PropertyItemChange(In_TextYouWant);

	In_TextYouWant.Format("%f(mm)",pDoc->m_YS);			// 测得头起始Y坐标
	propItem8->PropertyItemChange(In_TextYouWant);

	m_ShowResult_List.OnChangePropItem(propItem2); // 这句只需要一次就可以,作用是刷新屏幕
	AfxMessageBox("标准渐开线生成!");              // 弹出消息框
    
	pDoc->UpdateAllViews(this);                    // 刷新窗口
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -