682 lines
15 KiB
C++
682 lines
15 KiB
C++
#include "stdafx.h"
|
|
#include "StdArx.h"
|
|
#include "HZQTDlg.h"
|
|
#include "JMSJDlg.h"
|
|
#include "GLTKDlg.h"
|
|
#include "KTSetting.h"
|
|
|
|
DLLIMPEXP CString IDCreate();
|
|
|
|
IMPLEMENT_DYNAMIC(CHZQTDlg, CDialog)
|
|
|
|
int g_nWallNo = 1;
|
|
static const Adesk::UInt16 kColorByBlock = 0;
|
|
static const Adesk::UInt16 kColorByLayer = 256;
|
|
static const LPCTSTR g_pszWallMaterials[] = { _T("钢筋混凝土"), _T("石材"), _T("砖墙"), _T("填充墙"), _T("玻璃幕墙"),_T("轻质隔墙"),NULL };
|
|
static const int g_nWallColorIndex[] = { kColorByLayer,252,1,254,4,6,256};
|
|
|
|
CHZQTDlg::CHZQTDlg(CWnd* pParent/* = NULL*/)
|
|
: CDialog(CHZQTDlg::IDD, pParent)
|
|
,m_dW(400.0)
|
|
,m_dH(3000.0)
|
|
,m_dE(0.0)
|
|
,m_sMaterial(_T("钢筋混凝土"))
|
|
,m_bUserDefSec(FALSE)
|
|
,m_nDrawType(0)
|
|
,m_nAlign(0)
|
|
,m_dOffset(0)
|
|
,m_dW2(500.0)
|
|
,m_dH2(500.0)
|
|
,m_bHasW2(FALSE)
|
|
,m_nW2Pos(FALSE)
|
|
, m_sNo(_T(""))
|
|
, m_bWallMix(FALSE)
|
|
, m_bNOSetDefault(TRUE)
|
|
, m_sHatch(HATCH_DEFAULT)
|
|
, m_bAddHatch(TRUE)
|
|
, m_dLW(200)
|
|
{
|
|
m_pSectionReg = NULL;
|
|
m_bExJoin = TRUE;
|
|
m_dLW = 0.5 * m_dW;
|
|
|
|
GET_CACHE(CHZQTDlg
|
|
, %f%f%f%f%f%f%d%d%d%d%d%d%s%s%d%f
|
|
, &m_dW
|
|
, &m_dH
|
|
, &m_dE
|
|
, &m_dOffset
|
|
, &m_dH2
|
|
, &m_dW2
|
|
, &m_bUserDefSec
|
|
, &m_bHasW2
|
|
, &m_bExJoin
|
|
, &m_nAlign
|
|
, &m_nDrawType
|
|
, &m_nW2Pos
|
|
, &m_sMaterial
|
|
, &m_sHatch
|
|
, &m_bWallMix
|
|
, &m_dLW);
|
|
g_nWallNo++;
|
|
m_sNo.Format(_T("W-%d"),g_nWallNo);
|
|
m_bUserDefSec = FALSE;//不记忆
|
|
m_dEOld = 0.0;
|
|
m_dLW = 0.5 * m_dW;
|
|
if (m_bNOSetDefault)
|
|
m_sNo = IDCreate();
|
|
|
|
m_nWallColor = kColorByLayer;
|
|
|
|
for (int i = 0; i < 20; i++)
|
|
{
|
|
if (g_pszWallMaterials[i] == NULL)
|
|
break;
|
|
|
|
if (_tcscmp(g_pszWallMaterials[i], m_sMaterial) == 0)
|
|
{
|
|
m_nWallColor = g_nWallColorIndex[i];
|
|
}
|
|
}
|
|
}
|
|
|
|
CHZQTDlg::~CHZQTDlg(void)
|
|
{
|
|
}
|
|
|
|
void CHZQTDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Text(pDX, IDC_EDIT1, m_dW);
|
|
DDX_Text(pDX, IDC_EDIT12, m_dH);
|
|
DDX_Text(pDX, IDC_EDIT2, m_dE);
|
|
DDX_Check(pDX, IDC_CHECK1, m_bUserDefSec);
|
|
DDX_Check(pDX, IDC_CHECK2, m_bHasW2);
|
|
DDX_Check(pDX, IDC_CHECK3, m_bExJoin);
|
|
DDX_Radio(pDX, IDC_RADIO1, m_nAlign);
|
|
DDX_Radio(pDX, IDC_RADIO4, m_nDrawType);
|
|
DDX_Radio(pDX, IDC_RADIO7, m_nW2Pos);
|
|
DDX_Text(pDX, IDC_EDIT5, m_dOffset);
|
|
DDX_Text(pDX, IDC_EDIT4, m_sRegScr);
|
|
DDX_Control(pDX, IDC_RADIO4, m_wndBtLnWall);
|
|
DDX_Control(pDX, IDC_RADIO5, m_wndBtCrWall);
|
|
DDX_Control(pDX, IDC_RADIO6, m_wndBtRcWall);
|
|
DDX_Text(pDX, IDC_EDIT13, m_dW2);
|
|
DDX_Text(pDX, IDC_EDIT14, m_dH2);
|
|
DDX_CBString(pDX, IDC_COMBO1, m_sMaterial);
|
|
DDX_Text(pDX, IDC_EDIT6, m_sNo);
|
|
DDX_Check(pDX, IDC_CHECK4, m_bWallMix);
|
|
DDX_Check(pDX, IDC_CHECK5, m_bNOSetDefault);
|
|
DDX_Control(pDX, IDC_BTN_FILL, m_wndBtHatch);
|
|
DDX_Check(pDX, IDC_CHECK_HATCH, m_bAddHatch);
|
|
DDX_Text(pDX, IDC_BTN_FILL, m_sHatch);
|
|
DDX_Control(pDX, IDC_COMBO1, m_wndComboMaterials);
|
|
DDX_Text(pDX, IDC_EDIT3, m_dLW);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CHZQTDlg, CDialog)
|
|
ON_BN_CLICKED(IDOK, &CHZQTDlg::OnBnClickedOk)
|
|
ON_BN_CLICKED(IDC_CHECK1, &CHZQTDlg::OnBnClickedCheck1)
|
|
ON_BN_CLICKED(IDC_CHECK5, &CHZQTDlg::OnBnClickedCheck5)
|
|
ON_BN_CLICKED(IDC_BTN_FILL, &CHZQTDlg::OnBnClickedBtnHatch)
|
|
ON_BN_CLICKED(IDC_CHECK_HATCH, &CHZQTDlg::OnBnClickedCheckHatch)
|
|
ON_WM_CTLCOLOR()
|
|
ON_BN_CLICKED(IDC_STATIC_COLOR, OnStaticColor)
|
|
ON_CBN_SELENDOK(IDC_COMBO1, &CHZQTDlg::OnCbnSelendokCombo1)
|
|
ON_BN_CLICKED(IDC_RADIO1, &CHZQTDlg::OnBnClickedRadio1)
|
|
ON_BN_CLICKED(IDC_RADIO2, &CHZQTDlg::OnBnClickedRadio2)
|
|
ON_BN_CLICKED(IDC_RADIO3, &CHZQTDlg::OnBnClickedRadio3)
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL CHZQTDlg::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
CBitmap bmp32;
|
|
if (!bmp32.LoadBitmap(IDB_BITMAP10))
|
|
{
|
|
AfxMessageBox(_T("Can't load bitmap: %x\n"), IDB_BITMAP10);
|
|
ASSERT(FALSE);
|
|
return FALSE;
|
|
}
|
|
|
|
BITMAP bmpObj32;
|
|
bmp32.GetBitmap(&bmpObj32);
|
|
UINT nFlags = ILC_COLOR24 | ILC_MASK;
|
|
m_Imagelist32.Create(32, bmpObj32.bmHeight, nFlags, 0, 0);
|
|
m_Imagelist32.Add(&bmp32, RGB(255, 0, 0));
|
|
|
|
/*m_wndBtLnWall.SetButtonStyle(BS_RADIOBUTTON | BS_PUSHBUTTON | BS_OWNERDRAW);
|
|
m_wndBtCrWall.SetButtonStyle(BS_RADIOBUTTON | BS_PUSHBUTTON | BS_OWNERDRAW);
|
|
m_wndBtRcWall.SetButtonStyle(BS_RADIOBUTTON | BS_PUSHBUTTON | BS_OWNERDRAW);
|
|
|
|
m_wndBtLnWall.SetIcon(m_Imagelist32.ExtractIcon(0));
|
|
m_wndBtRcWall.SetIcon(m_Imagelist32.ExtractIcon(1));
|
|
m_wndBtCrWall.SetIcon(m_Imagelist32.ExtractIcon(2));*/
|
|
|
|
if (m_idWall.isValid())
|
|
{
|
|
GetDlgItem(IDC_RADIO4)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_RADIO4)->ShowWindow(SW_HIDE);
|
|
|
|
GetDlgItem(IDC_RADIO5)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_RADIO5)->ShowWindow(SW_HIDE);
|
|
|
|
GetDlgItem(IDC_RADIO6)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_RADIO6)->ShowWindow(SW_HIDE);
|
|
|
|
GetDlgItem(IDC_RADIO10)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_RADIO10)->ShowWindow(SW_HIDE);
|
|
}
|
|
|
|
if (m_bUserDefSec)//异型截面墙
|
|
{
|
|
GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_EDIT12)->EnableWindow(FALSE);
|
|
|
|
GetDlgItem(IDC_CHECK2)->EnableWindow(FALSE);
|
|
|
|
GetDlgItem(IDC_EDIT13)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_EDIT14)->EnableWindow(FALSE);
|
|
|
|
GetDlgItem(IDC_RADIO1)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_RADIO2)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_RADIO3)->EnableWindow(FALSE);
|
|
|
|
GetDlgItem(IDC_RADIO7)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_RADIO8)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_RADIO9)->EnableWindow(FALSE);
|
|
}
|
|
|
|
if (m_bNOSetDefault)
|
|
{
|
|
GetDlgItem(IDC_EDIT6)->EnableWindow(FALSE);
|
|
}
|
|
|
|
m_wndBtHatch.EnableWindow(m_bAddHatch);
|
|
|
|
GetDlgItem(IDC_EDIT3)->EnableWindow(m_nAlign == 0 ? TRUE : FALSE);
|
|
|
|
UpdateData(FALSE);
|
|
return TRUE;
|
|
}
|
|
|
|
void CHZQTDlg::OnBnClickedOk()
|
|
{
|
|
UpdateData();
|
|
|
|
//数据校验
|
|
if (m_bUserDefSec)
|
|
{
|
|
if (m_dH < 1.0 || m_dW < 1.0)
|
|
{
|
|
AfxMessageBox(_T("墙体厚度和总高尺寸不正确!"));
|
|
return;
|
|
}
|
|
|
|
if (m_bHasW2)
|
|
{
|
|
if (m_dH2 < 1.0 || m_dW2 < 1.0)
|
|
{
|
|
AfxMessageBox(_T("不等厚墙体尺寸设置不正确!"));
|
|
}
|
|
}
|
|
}
|
|
|
|
if (m_dLW < -1.e-10)
|
|
{
|
|
AfxMessageBox(_T("墙体左厚尺寸设置不正确!"));
|
|
return;
|
|
}
|
|
|
|
if (m_idWall.isValid())
|
|
{
|
|
UpdateWallData();
|
|
}
|
|
|
|
SET_CACHE(CHZQTDlg
|
|
, %f%f%f%f%f%f%d%d%d%d%d%d%s%s%d%f
|
|
, m_dW
|
|
, m_dH
|
|
, m_dE
|
|
, m_dOffset
|
|
, m_dH2
|
|
, m_dW2
|
|
, m_bUserDefSec
|
|
, m_bHasW2
|
|
, m_bExJoin
|
|
, m_nAlign
|
|
, m_nDrawType
|
|
, m_nW2Pos
|
|
, m_sMaterial
|
|
, m_sHatch
|
|
, m_bWallMix
|
|
, m_dLW);
|
|
|
|
OnOK();
|
|
}
|
|
|
|
extern double GetExtendCurveJoin(AcDbRegion* pRegSect,double& dW);
|
|
void CHZQTDlg::OnBnClickedCheck1()
|
|
{
|
|
UpdateData();
|
|
|
|
if (m_bUserDefSec)
|
|
{
|
|
//
|
|
CGLTKDlg dlg(CGLTKDlg::eSelect, _T("poolstandard.db"), _T("standard"), CGLTKDlg::drawRegion);
|
|
if ( IDOK == dlg.DoModal() )
|
|
{
|
|
CString sScr;
|
|
if (dlg.GetCrossSectionScr(sScr))
|
|
{
|
|
CString sFullPath = FilePath::GetSysDir();
|
|
sFullPath.MakeLower();
|
|
sFullPath += _T("\\JMSJ.sat");
|
|
|
|
CStdioFile file;
|
|
if (file.Open(sFullPath,CFile::modeCreate |CFile::modeWrite ))
|
|
{
|
|
file.WriteString(sScr);
|
|
file.Close();
|
|
}
|
|
|
|
AcDbVoidPtrArray arBodyPtrs;
|
|
if ( Acad::eOk == AcDbBody::acisIn(sFullPath,arBodyPtrs) )
|
|
{
|
|
if (arBodyPtrs.length() > 0)
|
|
{
|
|
AcDbEntity* pEnt = (AcDbEntity*)arBodyPtrs.first();
|
|
AcDbRegion* pRegion = AcDbRegion::cast(pEnt);
|
|
if (pRegion != NULL)
|
|
{
|
|
m_pSectionReg = pRegion;
|
|
m_sRegScr = sScr;
|
|
|
|
GetExtendCurveJoin(pRegion,m_dW);;
|
|
|
|
AcDbExtents ext;
|
|
m_pSectionReg->getGeomExtents(ext);
|
|
|
|
//m_dW = ext.maxPoint().x - ext.minPoint().x;
|
|
m_dH = ext.maxPoint().y - ext.minPoint().y;
|
|
|
|
int nDw = (int)(m_dW * 10.0);
|
|
int nDh = (int)(m_dH * 10.0);
|
|
|
|
m_dW = nDw / 10;
|
|
m_dH = nDh / 10;
|
|
|
|
m_dH2 = 0.0;
|
|
m_dW2 = 0.0;
|
|
|
|
m_nAlign = 0;
|
|
}
|
|
}
|
|
}
|
|
UpdateData(FALSE);
|
|
}
|
|
}
|
|
|
|
GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_EDIT12)->EnableWindow(FALSE);
|
|
|
|
GetDlgItem(IDC_CHECK2)->EnableWindow(FALSE);
|
|
|
|
GetDlgItem(IDC_EDIT13)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_EDIT14)->EnableWindow(FALSE);
|
|
|
|
GetDlgItem(IDC_RADIO1)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_RADIO2)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_RADIO3)->EnableWindow(FALSE);
|
|
|
|
GetDlgItem(IDC_RADIO7)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_RADIO8)->EnableWindow(FALSE);
|
|
GetDlgItem(IDC_RADIO9)->EnableWindow(FALSE);
|
|
}
|
|
else
|
|
{
|
|
GetDlgItem(IDC_RADIO1)->EnableWindow(TRUE);
|
|
GetDlgItem(IDC_RADIO2)->EnableWindow(TRUE);
|
|
GetDlgItem(IDC_RADIO3)->EnableWindow(TRUE);
|
|
}
|
|
|
|
if (m_pSectionReg == NULL)
|
|
{
|
|
m_bUserDefSec = FALSE;
|
|
}
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
AcDbRegion* CHZQTDlg::GetUserDefSection(CString& sScr) const
|
|
{
|
|
sScr = m_sRegScr;
|
|
return m_pSectionReg;
|
|
}
|
|
|
|
void CHZQTDlg::SetFromWall(AcDbObjectId& id)
|
|
{
|
|
m_bUserDefSec = FALSE;
|
|
m_idWall = id;
|
|
AcAxDocLock lock;
|
|
AcDbEntity* pEnt = NULL;
|
|
if ( Acad::eOk == acdbOpenAcDbEntity(pEnt,id,AcDb::kForRead))
|
|
{
|
|
AecDbXWall* pWall = AecDbXWall::cast(pEnt);
|
|
if (pWall != NULL)
|
|
{
|
|
WallData data;
|
|
pWall->GetWallData(data);
|
|
pWall->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_NO, m_sNo);
|
|
pWall->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_SECTION_HATCH, m_sHatch);
|
|
pWall->GetSpecialtyData(AcDb::kForRead)->GetAt(_T("COLOR"), m_nWallColor);
|
|
pWall->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_L, m_dLW);
|
|
if (m_sHatch == HATCH_NO_NEED)
|
|
m_bAddHatch = FALSE;
|
|
else
|
|
m_bAddHatch = TRUE;
|
|
|
|
m_dW = data.dThick;
|
|
m_dH = data.dH;
|
|
m_dE = data.dBomEl;
|
|
m_sMaterial = data.szMat;
|
|
m_dEOld = m_dE;
|
|
|
|
if ( data.nSecShape == eWw)//不等宽墙体
|
|
{
|
|
m_nW2Pos = data.nW2Pos;
|
|
m_dH2 = data.dH2;
|
|
m_dW2 = data.dThick2;
|
|
m_bHasW2 = TRUE;
|
|
}
|
|
else if (data.nSecShape == eUserDef)//自定义
|
|
{
|
|
m_bUserDefSec = TRUE;
|
|
pWall->GetSpecialtyData(AcDb::kForRead)->GetAt(KEY_SECTIONSCR,m_sRegScr);
|
|
|
|
CString sFullPath = FilePath::GetSysDir();
|
|
sFullPath.MakeLower();
|
|
sFullPath += _T("\\JMSJ.sat");
|
|
|
|
CStdioFile file;
|
|
if (file.Open(sFullPath,CFile::modeCreate |CFile::modeWrite ))
|
|
{
|
|
file.WriteString(m_sRegScr);
|
|
file.Close();
|
|
}
|
|
|
|
AcDbVoidPtrArray arBodyPtrs;
|
|
if ( Acad::eOk == AcDbBody::acisIn(sFullPath,arBodyPtrs) )
|
|
{
|
|
if (arBodyPtrs.length() > 0)
|
|
{
|
|
AcDbEntity* pEnt = (AcDbEntity*)arBodyPtrs.first();
|
|
AcDbRegion* pRegion = AcDbRegion::cast(pEnt);
|
|
if (pRegion != NULL)
|
|
{
|
|
m_pSectionReg = pRegion;
|
|
|
|
AcDbExtents ext;
|
|
m_pSectionReg->getGeomExtents(ext);
|
|
|
|
m_dW = ext.maxPoint().x - ext.minPoint().x;
|
|
m_dH = ext.maxPoint().y - ext.minPoint().y;
|
|
|
|
int nDw = (int)(m_dW * 10.0);
|
|
int nDh = (int)(m_dH * 10.0);
|
|
|
|
m_dW = nDw / 10;
|
|
m_dH = nDh / 10;
|
|
|
|
m_dH2 = 0.0;
|
|
m_dW2 = 0.0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
switch(data.kAlign)
|
|
{
|
|
case kMid:
|
|
{
|
|
m_nAlign = 0;
|
|
break;
|
|
}
|
|
case kLeft:
|
|
{
|
|
m_nAlign = 1;
|
|
break;
|
|
}
|
|
case kRight:
|
|
{
|
|
m_nAlign = 2;
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
pEnt->close();
|
|
}
|
|
}
|
|
|
|
void CHZQTDlg::UpdateWallData()
|
|
{
|
|
AcAxDocLock lock;
|
|
|
|
double dThick = -1;
|
|
AcDbObjectIdArray arAssocIds;
|
|
AcDbEntity* pEnt = NULL;
|
|
if ( Acad::eOk == acdbOpenAcDbEntity(pEnt,m_idWall,AcDb::kForWrite))
|
|
{
|
|
AecDbXWall* pWall = AecDbXWall::cast(pEnt);
|
|
if (pWall != NULL)
|
|
{
|
|
pWall->GetSpecialtyData()->SetAt(KEY_NO,m_sNo);
|
|
pWall->GetSpecialtyData()->SetAt(KEY_SECTION_HATCH, m_sHatch);
|
|
pWall->GetSpecialtyData()->SetAt(_T("COLOR"), m_nWallColor);
|
|
//之前的数据
|
|
WallData data;
|
|
pWall->GetWallData(data);
|
|
|
|
//新的数据
|
|
EAlign eAlign = kMid;
|
|
if (m_nAlign == 0)
|
|
{
|
|
eAlign = kMid;
|
|
}
|
|
else if (m_nAlign == 1)
|
|
{
|
|
eAlign = kLeft;
|
|
}
|
|
else
|
|
{
|
|
eAlign = kRight;
|
|
}
|
|
|
|
//设置墙体数据
|
|
if (m_bUserDefSec)
|
|
{
|
|
////临时异形截面墙体不对齐处理.
|
|
eAlign = kMid;
|
|
|
|
//pWall->SetWallData(m_dW,m_dH,m_dE,eAlign);
|
|
pWall->SetWallData(m_dE,eAlign);
|
|
pWall->SetSection(m_pSectionReg,AcGePoint3d::kOrigin);
|
|
pWall->GetSpecialtyData()->SetAt(KEY_SECTIONSCR,m_sRegScr);
|
|
pWall->GetSpecialtyData()->SetAt(KEY_MATERIAL, m_sMaterial);
|
|
}
|
|
else if(m_bHasW2)
|
|
{
|
|
WallData data;
|
|
pWall->GetWallData(data);
|
|
pWall->SetWallData(m_dW,m_dH,m_dW2,m_dH2,m_nW2Pos,m_dE,eAlign);
|
|
pWall->AdjustHoleAndPipe(m_dW - data.dThick);
|
|
pWall->GetSpecialtyData()->SetAt(KEY_MATERIAL, m_sMaterial);
|
|
}
|
|
else
|
|
{
|
|
WallData data;
|
|
pWall->GetWallData(data);
|
|
pWall->SetWallData(m_dW,m_dH,m_dE,eAlign);
|
|
pWall->AdjustHoleAndPipe(m_dW - data.dThick);
|
|
pWall->GetSpecialtyData()->SetAt(KEY_MATERIAL, m_sMaterial);
|
|
dThick = m_dW;
|
|
}
|
|
|
|
AcGeMatrix3d xformEl;
|
|
AcGeVector3d vtMove(0,0,m_dE - m_dEOld);
|
|
xformEl.setToTranslation(vtMove);
|
|
|
|
pWall->TransformDTYGPartEnt(xformEl);
|
|
pWall->TransformAssocPartEnt(xformEl);
|
|
|
|
pWall->GetAssocPartIds(arAssocIds);
|
|
}
|
|
pEnt->close();
|
|
|
|
|
|
//修改所有门窗厚度
|
|
if (dThick > 1.e-6)
|
|
{
|
|
Acad::ErrorStatus es;
|
|
AcDbEntity *pEnt = NULL;
|
|
AcDbObjectId id;
|
|
for (int i = 0; i < arAssocIds.length(); i++)
|
|
{
|
|
id = arAssocIds.at(i);
|
|
if (Acad::eOk == (es = acdbOpenAcDbEntity(pEnt, id, AcDb::kForWrite)))
|
|
{
|
|
AecDbXOpening *pOpen = AecDbXOpening::cast(pEnt);
|
|
if (pOpen != NULL)
|
|
{
|
|
OpeningData data;
|
|
memset(&data, 0, sizeof(OpeningData));
|
|
pOpen->GetOpeningData(data);
|
|
data.dThick = dThick;
|
|
pOpen->UpdateOpeningData(data);
|
|
}
|
|
pEnt->close();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void CHZQTDlg::OnBnClickedCheck5()
|
|
{
|
|
UpdateData();
|
|
|
|
if (m_bNOSetDefault)
|
|
{
|
|
GetDlgItem(IDC_EDIT6)->EnableWindow(FALSE);
|
|
}
|
|
else
|
|
{
|
|
GetDlgItem(IDC_EDIT6)->EnableWindow(TRUE);
|
|
}
|
|
}
|
|
|
|
extern bool __cdecl acedHatchPalletteDialog(wchar_t const* , bool , wchar_t *&);
|
|
void CHZQTDlg::OnBnClickedBtnHatch()
|
|
{
|
|
UpdateData();
|
|
TCHAR *psz = new TCHAR[1024];
|
|
::memset(psz, 0, sizeof(TCHAR) * 1024);
|
|
|
|
CString sHatch(m_sMaterial);
|
|
if (!m_sHatch.IsEmpty())
|
|
sHatch = m_sHatch;
|
|
|
|
if (acedHatchPalletteDialog(sHatch, false, psz))
|
|
{
|
|
m_sHatch = psz;
|
|
m_wndBtHatch.SetWindowText(m_sHatch);
|
|
}
|
|
|
|
delete[] psz;
|
|
}
|
|
|
|
void CHZQTDlg::OnBnClickedCheckHatch()
|
|
{
|
|
UpdateData();
|
|
m_wndBtHatch.EnableWindow(m_bAddHatch);
|
|
if (!m_bAddHatch)
|
|
m_sHatch = HATCH_NO_NEED;
|
|
else
|
|
m_sHatch = HATCH_DEFAULT;
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
HBRUSH CHZQTDlg::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)
|
|
{
|
|
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
|
|
if (nCtlColor == CTLCOLOR_STATIC)
|
|
{
|
|
if (pWnd != NULL && pWnd->GetDlgCtrlID() == IDC_STATIC_COLOR)
|
|
{
|
|
COLORREF crColor = RGB(255, 255, 255);
|
|
|
|
if (m_nWallColor == kColorByLayer)
|
|
{
|
|
//提取墙体图层的颜色
|
|
static int nColor = KTSetting::GetLayerColor(_T("LAY_WALL"));
|
|
crColor = acedGetRGB(nColor);
|
|
}
|
|
else
|
|
{
|
|
crColor = acedGetRGB(m_nWallColor);
|
|
}
|
|
|
|
CRect rc;
|
|
pWnd->GetClientRect(rc);
|
|
pDC->FillSolidRect(rc, crColor);
|
|
}
|
|
}
|
|
return hbr;
|
|
}
|
|
|
|
void CHZQTDlg::OnStaticColor()
|
|
{
|
|
acedSetColorDialog(m_nWallColor, Adesk::kFalse, m_nWallColor);
|
|
if (m_nWallColor == 0)
|
|
m_nWallColor = kColorByLayer;
|
|
Invalidate();
|
|
}
|
|
|
|
void CHZQTDlg::OnCbnSelendokCombo1()
|
|
{
|
|
int iSel = m_wndComboMaterials.GetCurSel();
|
|
if (iSel > -1 && iSel < 6)
|
|
{
|
|
m_nWallColor = g_nWallColorIndex[iSel];
|
|
}
|
|
|
|
Invalidate();
|
|
}
|
|
|
|
void CHZQTDlg::OnBnClickedRadio1()
|
|
{
|
|
UpdateData();
|
|
GetDlgItem(IDC_EDIT3)->EnableWindow(TRUE);
|
|
m_dLW = 0.5 * m_dW;
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CHZQTDlg::OnBnClickedRadio2()
|
|
{
|
|
UpdateData();
|
|
m_dLW = 0;
|
|
UpdateData(FALSE);
|
|
GetDlgItem(IDC_EDIT3)->EnableWindow(FALSE);
|
|
}
|
|
|
|
void CHZQTDlg::OnBnClickedRadio3()
|
|
{
|
|
UpdateData();
|
|
m_dLW = 0;
|
|
UpdateData(FALSE);
|
|
GetDlgItem(IDC_EDIT3)->EnableWindow(FALSE);
|
|
}
|