📄 gasshotparaselectview.cpp
字号:
{
// 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 + -