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

193 lines
4.0 KiB
C++

#include "stdafx.h"
#include "HZSCDlg.h"
#include "gltkdlg.h"
#include "acpolylinejig.h"
#include "KTCADUtilityEx.h"
#include "AecDbExtendedEntity.h"
#include "CoreTools.h"
#include "AecDb3dRoadAxisLine.h"
IMPLEMENT_DYNAMIC(CHZSCDlg, CDialog)
CHZSCDlg::CHZSCDlg(CWnd* pParent /*=nullptr*/)
: CDialog(IDD_HZSC_DLG, pParent)
, m_dEl(0)
, m_sMaterial(_T("钢筋混凝土"))
, m_sUse(_T("进水"))
, m_pReg(NULL)
{
}
CHZSCDlg::~CHZSCDlg()
{
DELETE_PTR(m_pReg);
}
void CHZSCDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_dEl);
DDX_Text(pDX, IDC_EDIT2, m_sMaterial);
DDX_Text(pDX, IDC_EDIT3, m_sUse);
DDX_Control(pDX, IDC_VIEW_STA, m_wndViewCtrl);
}
BOOL CHZSCDlg::OnInitDialog()
{
CDialog::OnInitDialog();
GET_CACHE(CHZSCDlg, %f%s%s, &m_dEl, &m_sMaterial, &m_sUse);
UpdateData(FALSE);
ShowCurSection();
// 子类化控件对象
//if (!m_wndViewCtrl.SubclassDlgItem(IDC_STATIC_FRM, this))
//{
// return FALSE;
//}
return TRUE;
}
void CHZSCDlg::ShowCurSection()
{
if (!m_pReg) return;
m_wndViewCtrl.clearAll();
m_wndViewCtrl.init(true);
m_wndViewCtrl.SetOrbitFlag(OBF_PAN | OBF_ZOOM | OBF_COTE);
AcDbExtents exts;
m_pReg->getGeomExtents(exts);
m_wndViewCtrl.InitFromCurrentView2D(exts, true);
m_wndViewCtrl.Add(m_pReg);
m_wndViewCtrl.view()->invalidate();
m_wndViewCtrl.Invalidate();
m_wndViewCtrl.RedrawWindow();
}
BEGIN_MESSAGE_MAP(CHZSCDlg, CDialog)
ON_BN_CLICKED(IDOK, &CHZSCDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_BUTTON1, &CHZSCDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
void CHZSCDlg::OnBnClickedOk()
{
UpdateData(TRUE);
SET_CACHE(CHZSCDlg, %f%s%s, m_dEl, m_sMaterial, m_sUse);
CDialog::OnOK();
}
AcDbRegion* CHZSCDlg::GetSelectRegion()
{
if (!m_pReg) return NULL;
return (AcDbRegion*)m_pReg->clone();
}
void CHZSCDlg::Start()
{
CAcModuleResourceOverride myResources;
CHZSCDlg dlg;
if (dlg.DoModal() != IDOK) return;
AcDbRegion *pReg = dlg.GetSelectRegion();
if (pReg == NULL)
{
AfxMessageBox(_T("没有选择截面!请选择槽壁截面!"));
return;
}
AcPolylineJig jig;
if (!jig.DoIt())
{
DELETE_PTR(pReg);
return;
}
AcDbObjectId id = jig.GetRoadAxisLineId();
double w(.0);
AecDbExtendedEntity *pFl = new AecDbExtendedEntity();
pFl->SetSection(pReg, AcGePoint3d::kOrigin);
pFl->SetAt(_T("YXCB"), TRUE);
AcDbExtents ext;
pReg->getGeomExtents(ext);
w = (ext.maxPoint().x - ext.minPoint().x) * .5;
DELETE_PTR(pReg);
OPENOBJ_BEGIN(id, AcDb::kForWrite, AecDb3dRoadAxisLine, pLine)
{
if (!pLine) return;
AcDbPolyline* pPl = pLine->ConvertTo2dPline();
if (pPl != NULL)
{
pPl->setElevation(dlg.m_dEl);
pFl->SetBaseCurve(pPl);
delete pPl;
}
pFl->SetAt(KEY_2DSTYLE, 2);
pFl->SetAt(KEY_SECSHAPE, 2);
pFl->SetAt(KEY_DRAWGRAD, 0);
pFl->SetAt(PIPE_DN, w);
pFl->SetAt(PIPE_D, w);
pFl->SetAt(KEY_MATERIAL, dlg.m_sMaterial);
pFl->SetAt(KEY_FORUSE, dlg.m_sUse);
pLine->erase();
}
OPENOBJ_END()
CoreTools::AddToModelSpace(pFl);
}
void CHZSCDlg::inplace(AcDbEntity * pEnt)
{
if (!pEnt) return;
AecDbExtendedEntity *pExtEnt = AecDbExtendedEntity::cast(pEnt);
if (!pExtEnt) return;
AcDbRegion *pReg = pExtEnt->GetSection();
CAcModuleResourceOverride myResources;
CHZSCDlg dlg;
dlg.m_pReg = (AcDbRegion*)pReg->clone();
DELETE_PTR(pReg);
dlg.m_dEl = pExtEnt->getElevation();
pExtEnt->GetAt(KEY_MATERIAL, dlg.m_sMaterial);
pExtEnt->GetAt(KEY_FORUSE, dlg.m_sUse);
if (dlg.DoModal() != IDOK) return;
pReg = dlg.GetSelectRegion();
if (!pReg) return;
AcDbExtents ext;
pReg->getGeomExtents(ext);
double w = (ext.maxPoint().x - ext.minPoint().x) * .5;
pExtEnt->SetAt(PIPE_DN, w);
pExtEnt->SetAt(PIPE_D, w);
pExtEnt->SetSection(pReg, AcGePoint3d::kOrigin);
DELETE_PTR(pReg);
pExtEnt->setElevation(dlg.m_dEl);
}
void CHZSCDlg::OnBnClickedButton1()
{
CGLTKDlg dlg(CGLTKDlg::eSelect, _T("poolstandard.db"), _T("standard"), CGLTKDlg::drawRegion);
if (dlg.DoModal() != IDOK) return;
CString ss(_T(""));
dlg.GetCrossSectionScr(ss);
m_pReg = CoreTools::StringToRegion(ss);
ShowCurSection();
}