Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

148 lines
2.5 KiB
C++

#include "stdafx.h"
#include "HZGQDlg.h"
#include "EarThwormDef.h"
void FreeBuffer(int n, AcDbVoidPtrArray& arEntPtrs)
{
AcDbEntity* pEnt = NULL;
while (arEntPtrs.length() > n)
{
pEnt = (AcDbEntity*)arEntPtrs.last();
pEnt->erase();
pEnt->close();
DELETE_PTR(pEnt);
arEntPtrs.removeLast();
}
}
IMPLEMENT_DYNAMIC(CHZGQDlg, CDialog)
CHZGQDlg::CHZGQDlg(CWnd* pParent /*=NULL*/)
: CDialog(CHZGQDlg::IDD, pParent)
, m_dW(800)
, m_dH(800)
, m_dV(700)
, m_dAngle(0)
, m_sMaterial(_T("素砼"))
, m_sPurpose(_T("进水渠"))
, m_dBomEl(0)
, m_dT(10)
{
GET_CACHE(CHZGQDlg
, %f%f%f%f%f%f%s%s
, &m_dW
, &m_dH
, &m_dV
, &m_dAngle
, &m_dBomEl
, &m_dT
, &m_sMaterial
, &m_sPurpose);
}
CHZGQDlg::~CHZGQDlg()
{
}
void CHZGQDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_dW);
DDX_Text(pDX, IDC_EDIT2, m_dH);
DDX_Text(pDX, IDC_EDIT3, m_dV);
DDX_Text(pDX, IDC_EDIT4, m_dAngle);
DDX_Text(pDX, IDC_EDIT6, m_dBomEl);
DDX_Text(pDX, IDC_EDIT7, m_dT);
DDX_Text(pDX, IDC_EDIT5, m_sMaterial);
DDX_Text(pDX, IDC_EDIT18, m_sPurpose);
}
BEGIN_MESSAGE_MAP(CHZGQDlg, CDialog)
ON_BN_CLICKED(IDOK, &CHZGQDlg::OnBnClickedOk)
END_MESSAGE_MAP()
BOOL CHZGQDlg::OnInitDialog()
{
CDialog::OnInitDialog();
UpdateData(FALSE);
return TRUE;
}
void CHZGQDlg::OnBnClickedOk()
{
UpdateData();
SET_CACHE(CHZGQDlg
, %f%f%f%f%f%f%s%s
, m_dW
, m_dH
, m_dV
, m_dAngle
, m_dBomEl
, m_dT
, m_sMaterial
, m_sPurpose);
OnOK();
}
AcDbRegion* CHZGQDlg::GetSection(AcGePoint3d& ptCen)
{
AcGePoint3d ptGe[9];
ptGe[0].set(0,0,0);
ptGe[0].x -= 0.5 * m_dW;
ptGe[1] = ptGe[0];
ptGe[1].y += m_dH;
ptGe[3].set(0,0,0);
ptGe[3].y += m_dT;
ptGe[3].x -= 0.5 * m_dV;
double dA = m_dAngle * PI / 180.0;
double dX = (m_dH - m_dT) * tan(dA);
ptGe[2] = ptGe[3];
ptGe[2].y += (m_dH - m_dT);
ptGe[2].x -= dX;
ptGe[4] = ptGe[3];
ptGe[4].x += m_dV;
ptGe[5] = ptGe[4];
ptGe[5].x += dX;
ptGe[5].y += (m_dH - m_dT);
ptGe[6] = ptGe[0];
ptGe[6].x += m_dW;
ptGe[6].y += m_dH;
ptGe[7] = ptGe[0];
ptGe[7].x += m_dW;
ptGe[8] = ptGe[0];
AcDbVoidPtrArray arPtrs;
AcDbLine* pLn = NULL;
for (int i = 0;i < 8;i++)
{
pLn = new AcDbLine;
pLn->setStartPoint(ptGe[i]);
pLn->setEndPoint(ptGe[i+1]);
arPtrs.append(pLn);
}
ptCen.set(0,0,0);
AcDbVoidPtrArray arRegPtrs;
AcDbRegion::createFromCurves(arPtrs,arRegPtrs);
FreeBuffer(0,arPtrs);
if (arRegPtrs.isEmpty())
{
return NULL;
}
AcDbRegion* pReg = (AcDbRegion*)arRegPtrs.first();
return pReg;
}