Files
envi-code/SourceCode/Code2026/CoreCommand/TTSZDlg.cpp
T

301 lines
5.9 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
#include "stdafx.h"
2026-09-28 15:28:50 +08:00
#include "TTSZDlg.h"
#include "comdef.h"
IMPLEMENT_DYNAMIC(CTTSZDlg, CDialog)
CTTSZDlg::CTTSZDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTTSZDlg::IDD, pParent)
, m_sDwgFile(_T(""))
, m_nUnit(3)
, m_bAddToCurDb(FALSE)
{
}
CTTSZDlg::~CTTSZDlg()
{
}
void CTTSZDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_sDwgFile);
DDX_CBIndex(pDX, IDC_COMBO1, m_nUnit);
DDX_Check(pDX, IDC_CHECK1, m_bAddToCurDb);
}
BEGIN_MESSAGE_MAP(CTTSZDlg, CDialog)
ON_BN_CLICKED(IDC_BUTTON1, &CTTSZDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDOK, &CTTSZDlg::OnBnClickedOk)
ON_BN_CLICKED(IDC_CHECK1, &CTTSZDlg::OnBnClickedCheck1)
END_MESSAGE_MAP()
BOOL CTTSZDlg::OnInitDialog()
{
CDialog::OnInitDialog();
UpdateData(FALSE);
return TRUE;
}
BOOL CTTSZDlg::BrowseForFolder(HWND hWnd,CString& sFolder,LPCTSTR lpszTitle,UINT nFlags) const
{
CString strResult = _T("");
LPMALLOC lpMalloc;
if (::SHGetMalloc(&lpMalloc) != NOERROR)
{
return FALSE;
}
TCHAR szBuffer[_MAX_PATH];
BROWSEINFO browseInfo;
TCHAR szDisplayName[_MAX_PATH];
browseInfo.hwndOwner = hWnd;
browseInfo.pidlRoot = NULL;
browseInfo.pszDisplayName = szDisplayName;
browseInfo.lpszTitle = _bstr_t(lpszTitle);
browseInfo.ulFlags = nFlags;
browseInfo.lpfn = NULL;
browseInfo.lParam = 0;
LPITEMIDLIST lpItemIDList;
if ((lpItemIDList = ::SHBrowseForFolder(&browseInfo)) != NULL)
{
if (::SHGetPathFromIDList(lpItemIDList, szBuffer))
{
if (szBuffer[0] == _T('\0'))
{
2026-10-04 00:04:20 +08:00
AfxMessageBox(_T("获取路径失败!"),MB_ICONSTOP | MB_OK);
2026-09-28 15:28:50 +08:00
sFolder = strResult;
return FALSE;
}
sFolder = szBuffer;
return TRUE;
}
else
{
2026-10-04 00:04:20 +08:00
AfxMessageBox(_T("获取路径失败!"),MB_ICONSTOP|MB_OK);
2026-09-28 15:28:50 +08:00
sFolder = strResult;
return FALSE;
}
lpMalloc->Free(lpItemIDList);
lpMalloc->Release();
}
else
{
return FALSE;
}
sFolder = strResult;
return TRUE;
}
void CTTSZDlg::OnBnClickedButton1()
{
CString sFileName;
CString sPath = _T("c:\\");
int nPos = m_sDwgFile.ReverseFind(_T('\\'));
if (nPos != NULL)
{
sPath = m_sDwgFile.Mid(0,nPos + 1);
sFileName = m_sDwgFile.Mid(nPos+1);
}
HWND hWnd = ::AfxGetMainWnd()->m_hWnd;
2026-10-04 00:04:20 +08:00
BOOL bSuccess = BrowseForFolder(hWnd,sPath,_T("请选择放置文件路径,然后确定."),0);
2026-09-28 15:28:50 +08:00
if(!bSuccess)
{
return;
}
sPath.TrimRight(_T('\\'));
sPath += _T("\\");
sPath += sFileName;
m_sDwgFile = sPath;
UpdateData(FALSE);
}
void CTTSZDlg::OnBnClickedOk()
{
OnOK();
}
AcGeScale3d CTTSZDlg::GetUnitScale(struct resbuf& rb) const
{
AcGeScale3d scale(1,1,1);
AcDb::UnitsValue nOther = GetUnit();
2026-10-04 00:04:20 +08:00
if (rb.resval.rint == AcDb::kUnitsMeters) //当前图是米制
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
if (nOther == AcDb::kUnitsMillimeters)//毫米
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方毫米
2026-09-28 15:28:50 +08:00
scale.set(1000.0,1000.0,1000.0);
}
2026-10-04 00:04:20 +08:00
else if (nOther == AcDb::kUnitsCentimeters)//厘米单位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方厘米
2026-09-28 15:28:50 +08:00
scale.set(100.0,100.0,100.0);
}
2026-10-04 00:04:20 +08:00
else if (nOther == AcDb::kUnitsDecimeters)//分米单位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//分米
2026-09-28 15:28:50 +08:00
scale.set(10.0,10.0,10.0);
}
else if (nOther == AcDb::kUnitsUndefined)
{
2026-10-04 00:04:20 +08:00
//对方无单位
2026-09-28 15:28:50 +08:00
scale.set(1000.0,1000.0,1000.0);
}
else if (nOther == AcDb::kUnitsMeters)
{
2026-10-04 00:04:20 +08:00
//对方米
2026-09-28 15:28:50 +08:00
scale.set(1.0,1.0,1.0);
}
}
2026-10-04 00:04:20 +08:00
else if(rb.resval.rint == AcDb::kUnitsMillimeters)//当前是毫米
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
if (nOther == AcDb::kUnitsMillimeters)//毫米
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方毫米
2026-09-28 15:28:50 +08:00
scale.set(1.0,1.0,1.0);
}
2026-10-04 00:04:20 +08:00
else if (nOther == AcDb::kUnitsCentimeters)//厘米单位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方厘米
2026-09-28 15:28:50 +08:00
scale.set(0.1,0.1,0.1);
}
2026-10-04 00:04:20 +08:00
else if (nOther == AcDb::kUnitsDecimeters)//分米单位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方分米
2026-09-28 15:28:50 +08:00
scale.set(0.01,0.01,0.01);
}
else if (nOther == AcDb::kUnitsUndefined)
{
2026-10-04 00:04:20 +08:00
//对方无单位,按毫米
2026-09-28 15:28:50 +08:00
scale.set(1.0,1.0,1.0);
}
else if (nOther == AcDb::kUnitsMeters)
{
2026-10-04 00:04:20 +08:00
//对方米
2026-09-28 15:28:50 +08:00
scale.set(0.001,0.001,0.001);
}
}
2026-10-04 00:04:20 +08:00
else if(rb.resval.rint == AcDb::kUnitsCentimeters)//当前是厘米单位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
if (nOther == AcDb::kUnitsMillimeters)//毫米
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方毫米
2026-09-28 15:28:50 +08:00
scale.set(10.0,10.0,10.0);
}
2026-10-04 00:04:20 +08:00
else if (nOther == AcDb::kUnitsCentimeters)//厘米单位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方毫米
2026-09-28 15:28:50 +08:00
scale.set(1.0,1.0,1.0);
}
2026-10-04 00:04:20 +08:00
else if (nOther == AcDb::kUnitsDecimeters)//分米单位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方分米
2026-09-28 15:28:50 +08:00
scale.set(0.1,0.1,0.1);
}
2026-10-04 00:04:20 +08:00
else if (nOther == AcDb::kUnitsUndefined)//无单位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方无单位
2026-09-28 15:28:50 +08:00
scale.set(10.0,10.0,10.0);
}
else if (nOther == AcDb::kUnitsMeters)
{
2026-10-04 00:04:20 +08:00
//对方米
2026-09-28 15:28:50 +08:00
scale.set(0.01,0.01,0.01);
}
}
2026-10-04 00:04:20 +08:00
else if(rb.resval.rint == AcDb::kUnitsCentimeters)//当前是分米单位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
if (nOther == AcDb::kUnitsMillimeters)//毫米
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方毫米
2026-09-28 15:28:50 +08:00
scale.set(100.0,100.0,100.0);
}
2026-10-04 00:04:20 +08:00
else if (nOther == AcDb::kUnitsCentimeters)//厘米单位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方毫米
2026-09-28 15:28:50 +08:00
scale.set(10.0,10.0,10.0);
}
2026-10-04 00:04:20 +08:00
else if (nOther == AcDb::kUnitsDecimeters)//分米单位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方毫米
2026-09-28 15:28:50 +08:00
scale.set(1.0,1.0,1.0);
}
else if (nOther == AcDb::kUnitsUndefined)
{
2026-10-04 00:04:20 +08:00
//对方无单位,按毫米
2026-09-28 15:28:50 +08:00
scale.set(100.0,100.0,100.0);
}
else if (nOther == AcDb::kUnitsMeters)
{
2026-10-04 00:04:20 +08:00
//对方米
2026-09-28 15:28:50 +08:00
scale.set(0.1,0.1,0.1);
}
}
2026-10-04 00:04:20 +08:00
else if(rb.resval.rint == AcDb::kUnitsUndefined)//当前图无单位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
if (nOther == AcDb::kUnitsMillimeters)//毫米
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方毫米
2026-09-28 15:28:50 +08:00
scale.set(1.0,1.0,1.0);
}
2026-10-04 00:04:20 +08:00
else if (nOther == AcDb::kUnitsCentimeters)//厘米单位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方毫米
2026-09-28 15:28:50 +08:00
scale.set(0.1,0.1,0.1);
}
2026-10-04 00:04:20 +08:00
else if (nOther == AcDb::kUnitsDecimeters)//分米单位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
//对方分米
2026-09-28 15:28:50 +08:00
scale.set(0.01,0.01,0.01);
}
else if (nOther == AcDb::kUnitsUndefined)
{
2026-10-04 00:04:20 +08:00
//对方无单位,按毫米
2026-09-28 15:28:50 +08:00
scale.set(1.0,1.0,1.0);
}
else if (nOther == AcDb::kUnitsMeters)
{
2026-10-04 00:04:20 +08:00
//对方米
2026-09-28 15:28:50 +08:00
scale.set(0.001,0.001,0.001);
}
}
return scale;
}
AcDb::UnitsValue CTTSZDlg::GetUnit() const
{
if (m_nUnit == 0)
{
return AcDb::kUnitsMeters;
}
if (m_nUnit == 1)
{
return AcDb::kUnitsDecimeters;
}
if (m_nUnit == 2)
{
return AcDb::kUnitsCentimeters;
}
if (m_nUnit == 3)
{
return AcDb::kUnitsMillimeters;
}
return AcDb::kUnitsMillimeters;
}
void CTTSZDlg::OnBnClickedCheck1()
{
}