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

📄 gasshotparaselectview.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{
	// TODO: Add your control notification handler code here
	CMainFrame*	wnd = (CMainFrame*)AfxGetMainWnd();
	UpdateData();

	m_ctrlSelected.DeleteAllItems ();
	LVITEM pitem;
	pitem.mask=LVIF_TEXT;
	pitem.state=0;
	pitem.stateMask=0;
	pitem.iSubItem=0;
	pitem.pszText="";
	pitem.iItem=0;
	m_ctrlSelected.InsertItem (&pitem);

	m_iSelected = m_ctrlList.GetSelectionMark();

	char strTemp[20];
	sprintf(strTemp,"%d",m_iSelected+1);
	m_ctrlSelected.SetItemText (0,0,strTemp);
	sprintf(strTemp,"%2.4f",wnd->m_structShotParaSelect[m_iSelected].fProPer );
	m_ctrlSelected.SetItemText (0,1,strTemp);
	m_ctrlSelected.SetItemText (0,2,wnd->m_structShotParaSelect[m_iSelected].strModel );
	sprintf(strTemp,"%4.1f",wnd->m_structShotParaSelect[m_iSelected].fAngle );
	m_ctrlSelected.SetItemText (0,3,strTemp);
	sprintf(strTemp,"%4.0f",wnd->m_structShotParaSelect[m_iSelected].fShotDen );
	m_ctrlSelected.SetItemText (0,4,strTemp);
	sprintf(strTemp,"%5.2f",wnd->m_structShotParaSelect[m_iSelected].fShotDepth );
	m_ctrlSelected.SetItemText (0,5,strTemp);
	sprintf(strTemp,"%3.2f",wnd->m_structShotParaSelect[m_iSelected].fDiameter );
	m_ctrlSelected.SetItemText (0,6,strTemp);
	sprintf(strTemp,"%5.2f",wnd->m_structShotParaSelect[m_iSelected].fPara );
	m_ctrlSelected.SetItemText (0,7,strTemp);
	UpdateData(FALSE);

	wnd->m_structGasShotForecast.bState = true;
	wnd->m_bSelected = TRUE;
	wnd->m_structSelectedPara = wnd->m_structShotParaSelect[m_iSelected];
	*pResult = 0;
}

void CGasShotParaSelectView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	GasshotparaselectLoad();
}


void CGasShotParaSelectView::OnSpdCacl() 
{
	// TODO: Add your command handler code here
	if(DataOK() == FALSE) return;

	CMainFrame*	wnd = (CMainFrame*)AfxGetMainWnd();

	if(wnd->m_structTTPResult.bState == FALSE)
	{
		MessageBox("请先进行射孔参数校正的计算 !","工程信息");
		return;
	}
	//***********
	wnd->m_structGasShotForecast.bState = false;
	float pcro[384],ks1[8];
	float kj1[8];

	float faif = wnd->m_structBDTTable.fStratumHolePercent ;
	float wh = wnd->m_structBDTTable.fDrillPolluteDepth ;
	float wc = wnd->m_structBDTTable.fDrillPollutePercent ;
	float kzr = wnd->m_structBDTTable.fStratumHeterosphere ;
	float jbj = wnd->m_structBDTTable.fWellRadius * 1000;
	float pcr = wnd->m_structBDTTable.fCannulaPressResistance ;
	float d0 = wnd->m_structBDTTable.fOilResCannulaDiameter * 1000;
	float delta = wnd->m_structBDTTable.fOilResCannulaCliffDeep * 1000;
	float pr = wnd->m_structBDTTable.fStratumAverPress ;
	float dp = wnd->m_structBDTTable.fProducePressDiff ;
	float pk = wnd->m_structBDTTable.fStratumFilterPercent * 1000;
	int kmnb = wnd->m_structBDTTable.iShotDenNum ;
	int xwnb = wnd->m_structBDTTable.iShotPhasicNum ;
	long dpzs = wnd->m_structBDTTable.lCount ;
	
	float fc = (float)1.48;
	CString cstrTemp;
	cstrTemp = wnd->m_structBDTTable.strOilResCannulaModel ;
	if(cstrTemp.Compare(_T("J-55")) == 0 ||
		cstrTemp.Compare(_T("j-55")) == 0 ||
		cstrTemp.Compare(_T("J55")) == 0 ||
		cstrTemp.Compare(_T("j55")) == 0)
		fc = (float)1.7;
	else if(cstrTemp.Compare(_T("P-110")) == 0 ||
		cstrTemp.Compare(_T("p-110")) == 0 ||
		cstrTemp.Compare(_T("P110")) == 0 ||
		cstrTemp.Compare(_T("p110")) == 0)
		fc = (float)1.2;
	else if(cstrTemp.Compare ("N80") == 0)
		fc = (float)0.85;
	//
	int i,j,k,nt;
	for(i=0;i<dpzs;i++)
	{
		ks1[i] = wnd->m_structTTPResult.fPDepth[i];	//wnd->m_structSDT[i].fShotDepth * wnd->m_structTTPResult.fPP[i];
		kj1[i] = wnd->m_structTTPResult.fPDiameter[i];	//wnd->m_structSDT[i].fDiameter * wnd->m_structTTPResult.fPP[i];
	}
	nt = 0;
	float ks,kj,km,xw,yh,yc,xwt;
	float f1,r;
	for(i=0;i<kmnb;i++)
	{
		for(j=0;j<xwnb;j++)
		{
			for(k=0;k<dpzs;k++)
			{
				ks = ks1[k];
				kj = kj1[k];
				km = wnd->m_structBDTTable.fShotDen[i];
				xw = wnd->m_structBDTTable.fShotPhasic[j];
				yh = wnd->m_structSDT[k].fPressDeep ;
				yc = wnd->m_structSDT[k].fPressLong ;
				xwt = xw;
				nt++;
				ks2[nt] = ks;
				kj2[nt] = kj;
				km2[nt] = km;
				xw2[nt] = xw;
				dx2[nt] = wnd->m_structSDT[k].strModel ;
				if(ks<=wh)
				{
					pr1[nt] = fnprw1(ks,km,kj,xw,kzr,yh,yc,wh,wc);
					pr1[nt] = pr1[nt] + fnprw2(ks,km,jbj,yc,wc,dp);
					pr1[nt] = pr1[nt] + fnprw3(ks,km,xw,yh,yc,dp);
					pr1[nt] = pr1[nt] + fnprw4(kj,xw,jbj,kzr,wh,pk,dp);
					pr1[nt] = (float)((pr1[nt] + fnprw5(ks,xw,kzr,wc,dp))*1.1);
				}
				else
				{
					pr1[nt] = fnprc3(km,kj,xw,kzr,yc,wh,wc);
					pr1[nt] = pr1[nt] + fnprc4(yh,jbj,pk,dp);
					pr1[nt] = pr1[nt] + fnprc1(ks,km,kj,xw,kzr,yh,yc,wh,wc);
					pr1[nt] = (float)((pr1[nt] + fnprc2(ks,km,xw,jbj,kzr,wh,wc))*1.1);
				}
				if(pr1[nt]>0)
				{
					if(xw==0) xwt = (float)360;
					f1 = (float)(360*1000/(xwt*km));
					r = (float)((d0-2*delta)/2);
					fk[nt] = (float)(1+(kj*fc/(f1-kj*fc))*(90/(3.141593*xwt))
						*(2*kj/r+sin(2*kj/r)));
					fk[nt] = (float)(1/fk[nt]);
					pcro[nt] = fk[nt]*pcr;
				}
				else
					nt--;
			}
		}
	}
	for(i=1;i<=nt;i++)
	{
		for(j=i;j<=nt;j++)
		{
			if(pr1[i]<pr1[j])
			{
				swap(pr1[i],pr1[j]);
				swap(ks2[i],ks2[j]);
				swap(kj2[i],kj2[j]);
				swap(km2[i],km2[j]);
				swap(xw2[i],xw2[j]);
				swap(dx2[i],dx2[j]);
				swap(fk[i],fk[j]);
				swap(pcro[i],pcro[j]);
			}
		}
	}
//?	if(nt>120) nt = 120;
	//********************
	//结果显示
	UpdateData(TRUE);
	for(i=0;i<8;i++)
	{
		m_ctrlList.DeleteColumn (0);
		m_ctrlSelected.DeleteColumn (0);
	}
	m_ctrlList.InsertColumn (0,"序号",LVCFMT_LEFT ,40,0);
	m_ctrlList.InsertColumn (1,"产率比",LVCFMT_LEFT ,60,1);
	m_ctrlList.InsertColumn (2,"型号",LVCFMT_LEFT ,200,2);
	m_ctrlList.InsertColumn (3,"相位角度",LVCFMT_LEFT ,100,3);
	m_ctrlList.InsertColumn (4,"孔密",LVCFMT_LEFT ,60,4);
	m_ctrlList.InsertColumn (5,"穿深",LVCFMT_LEFT ,60,5);
	m_ctrlList.InsertColumn (6,"孔径",LVCFMT_LEFT ,60,6);
	m_ctrlList.InsertColumn (7,"套管强度降低系数(%)",LVCFMT_LEFT ,100,7);
	m_ctrlSelected.InsertColumn (0,"序号",LVCFMT_LEFT ,40,0);
	m_ctrlSelected.InsertColumn (1,"产率比",LVCFMT_LEFT ,60,1);
	m_ctrlSelected.InsertColumn (2,"型号",LVCFMT_LEFT ,200,2);
	m_ctrlSelected.InsertColumn (3,"相位角度",LVCFMT_LEFT ,100,3);
	m_ctrlSelected.InsertColumn (4,"孔密",LVCFMT_LEFT ,60,4);
	m_ctrlSelected.InsertColumn (5,"穿深",LVCFMT_LEFT ,60,5);
	m_ctrlSelected.InsertColumn (6,"孔径",LVCFMT_LEFT ,60,6);
	m_ctrlSelected.InsertColumn (7,"套管强度降低系数(%)",LVCFMT_LEFT ,100,7);

	m_ctrlList.DeleteAllItems ();
	m_ctrlSelected.DeleteAllItems ();
	LVITEM pitem;
	pitem.mask=LVIF_TEXT;
	pitem.state=0;
	pitem.stateMask=0;
	pitem.iSubItem=0;
	pitem.pszText="";

	char strTemp[20];
	float fTemp;
	for(i=0;i<nt;i++)
	{
		pitem.iItem=i;
		m_ctrlList.InsertItem (&pitem);
		sprintf(strTemp,"%d",i+1);
		m_ctrlList.SetItemText (i,0,strTemp);
		sprintf(strTemp,"%2.4f",pr1[i+1]);
		m_ctrlList.SetItemText (i,1,strTemp);
		m_ctrlList.SetItemText (i,2,dx2[i+1]);
		sprintf(strTemp,"%4.1f",xw2[i+1]);
		m_ctrlList.SetItemText (i,3,strTemp);
		sprintf(strTemp,"%4.0f",km2[i+1]);
		m_ctrlList.SetItemText (i,4,strTemp);
		sprintf(strTemp,"%5.2f",ks2[i+1]);
		m_ctrlList.SetItemText (i,5,strTemp);
		sprintf(strTemp,"%3.2f",kj2[i+1]);
		m_ctrlList.SetItemText (i,6,strTemp);
		fTemp = (float)((1-fk[i+1])*100);
		sprintf(strTemp,"%5.2f",fTemp);
		m_ctrlList.SetItemText (i,7,strTemp);
	}
	UpdateData(FALSE);	

	wnd->m_structShotParaBase.iNum = m_ctrlList.GetItemCount();
	if(wnd->m_structShotParaBase.iNum>=384)
		wnd->m_structShotParaBase.iNum = 383;
	int iTemp;
	for(iTemp=0;iTemp<wnd->m_structShotParaBase.iNum;iTemp++)
	{
		wnd->m_structShotParaSelect[iTemp].fAngle = xw2[iTemp+1];
		wnd->m_structShotParaSelect[iTemp].fDiameter = kj2[iTemp+1];
		wnd->m_structShotParaSelect[iTemp].fPara = (float)((1-fk[iTemp+1])*100);
		wnd->m_structShotParaSelect[iTemp].fProPer = pr1[iTemp+1];
		wnd->m_structShotParaSelect[iTemp].fShotDen = km2[iTemp+1];
		wnd->m_structShotParaSelect[iTemp].fShotDepth = ks2[iTemp+1];
		sprintf(wnd->m_structShotParaSelect[iTemp].strModel,"%s",dx2[iTemp+1]);
	}

	//修改
	wnd->m_structShotParaBase.bState = TRUE;
	wnd->m_structShotParaBase.iNum = m_ctrlList.GetItemCount();
	if(wnd->m_structShotParaBase.iNum>=384)
		wnd->m_structShotParaBase.iNum = 383;
	for(iTemp=0;iTemp<wnd->m_structShotParaBase.iNum;iTemp++)
	{
		wnd->m_structShotParaSelect[iTemp].fAngle = xw2[iTemp+1];
		wnd->m_structShotParaSelect[iTemp].fDiameter = kj2[iTemp+1];
		wnd->m_structShotParaSelect[iTemp].fPara = (float)((1-fk[iTemp+1])*100);
		wnd->m_structShotParaSelect[iTemp].fProPer = pr1[iTemp+1];
		wnd->m_structShotParaSelect[iTemp].fShotDen = km2[iTemp+1];
		wnd->m_structShotParaSelect[iTemp].fShotDepth = ks2[iTemp+1];
		sprintf(wnd->m_structShotParaSelect[iTemp].strModel,"%s",dx2[iTemp+1]);
	}	
	
}

#include "resource.h"
void CGasShotParaSelectView::OnContextMenu(CWnd*, CPoint point)
{
	// CG: This block was added by the Pop-up Menu component	{		if (point.x == -1 && point.y == -1){			//keystroke invocation			CRect rect;			GetClientRect(rect);			ClientToScreen(rect);			point = rect.TopLeft();			point.Offset(5, 5);		}		CMenu menu;		VERIFY(menu.LoadMenu(IDR_POPUP_SPD));		CMenu* pPopup = menu.GetSubMenu(2);		ASSERT(pPopup != NULL);		CWnd* pWndPopupOwner = this;//		while (pWndPopupOwner->GetStyle() & WS_CHILD)//			pWndPopupOwner = pWndPopupOwner->GetParent();		pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,			pWndPopupOwner);	}
}

⌨️ 快捷键说明

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