157 lines
4.8 KiB
C++
157 lines
4.8 KiB
C++
#include "stdafx.h"
|
|
#include "AecDbEquBaseDraw2d.h"
|
|
#include "YMJCDlg.h"
|
|
#include "CoreTools.h"
|
|
|
|
namespace
|
|
{
|
|
AcGePoint3d MidPoint(const AcGePoint3d& pt1, const AcGePoint3d& pt2)
|
|
{
|
|
return AcGePoint3d((pt1.x + pt2.x) / 2.0,
|
|
(pt1.y + pt2.y) / 2.0,
|
|
(pt1.z + pt2.z) / 2.0);
|
|
}
|
|
}
|
|
|
|
ACRX_CONS_DEFINE_MEMBERS(AecDbEquBaseDraw2d, AecDbXDraw, 0);
|
|
|
|
AecDbEquBaseDraw2d::AecDbEquBaseDraw2d(void)
|
|
{
|
|
}
|
|
|
|
AecDbEquBaseDraw2d::~AecDbEquBaseDraw2d(void)
|
|
{
|
|
}
|
|
|
|
Acad::ErrorStatus AecDbEquBaseDraw2d::Edit()
|
|
{
|
|
AcDbObjectId idSBJC;
|
|
GetAttach(idSBJC);
|
|
|
|
AcDbEntity* pEnt(NULL);
|
|
if (Acad::eOk == acdbOpenAcDbEntity(pEnt, idSBJC, AcDb::kForWrite))
|
|
{
|
|
double dEntL = 0.0, dEntW = 0.0;
|
|
AcDbExtents ext;
|
|
AcGePoint3d ptIns;
|
|
AcGeVector3d vtDir;
|
|
|
|
AecDbEwEquipment* pEqu = AecDbEwEquipment::cast(pEnt);
|
|
if (!pEqu)
|
|
{
|
|
return Acad::eOk;
|
|
}
|
|
pEqu->getGeomExtents(ext);
|
|
dEntL = ext.maxPoint().x - ext.minPoint().x;
|
|
dEntL += 60;
|
|
dEntW = ext.maxPoint().y - ext.minPoint().y;
|
|
dEntW += 60;
|
|
pEqu->GetInsert(ptIns, vtDir);
|
|
|
|
double dL, dW, dt, dHZ, dHZ2, dGL, dGW, dGt, dGd
|
|
, dYP, dXP, dBomEl, dMR, dMPOD, dMPt, dSideSp;
|
|
CString sBMat, sGMat, sDMat, sRem, sNo, sMMat
|
|
, sMRem, sMType, sMSize, sMPMat;
|
|
int nRow, nCol, nArray, nSteel, nMNumber, nNumber;
|
|
BOOL bHasSteelSlab, bHasBolt, bBoltType, bBoltPipe;
|
|
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dL_"), dL);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dW_"), dW);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dt_"), dt);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_sBMat_"), sBMat);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dHZ_"), dHZ);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dHZ2_"), dHZ2);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dGL_"), dGL);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dGW_"), dGW);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dGt_"), dGt);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dGd_"), dGd);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_sGMat_"), sGMat);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_nRow_"), nRow);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_nCol_"), nCol);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dYP_"), dYP);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dXP_"), dXP);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_sDMat_"), sDMat);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_sRem_"), sRem);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_bHasSteelSlab_"), bHasSteelSlab);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_bHasBolt_"), bHasBolt);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_bBoltType_"), bBoltType);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_bBoltPipe_"), bBoltPipe);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dBomEl_"), dBomEl);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_sNo_"), sNo);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_nArray_"), nArray);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_nSteel_"), nSteel);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_nMNumber_"), nMNumber);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dMR_"), dMR);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_sMMat_"), sMMat);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_sMRem_"), sMRem);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_sMType_"), sMType);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_sMSize_"), sMSize);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_sMPMat_"), sMPMat);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dMPOD_"), dMPOD);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dMPt_"), dMPt);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_nNumber_"), nNumber);
|
|
pEqu->GetSpecialtyData()->GetAt(_T("_m_dSideSp_"), dSideSp);
|
|
|
|
CAcModuleResourceOverride myResources;
|
|
CYMJCDlg dlg;
|
|
|
|
dlg.m_dL = dL;
|
|
dlg.m_dW = dW;
|
|
dlg.m_dt = dt;
|
|
dlg.m_sBMat = sBMat;
|
|
dlg.m_dHZ = dHZ;
|
|
dlg.m_dHZ2 = dHZ2;
|
|
dlg.m_dGL = dGL;
|
|
dlg.m_dGW = dGW;
|
|
dlg.m_dGt = dGt;
|
|
dlg.m_dGd = dGd;
|
|
dlg.m_sGMat = sGMat;
|
|
dlg.m_nRow = nRow;
|
|
dlg.m_nCol = nCol;
|
|
dlg.m_dYP = dYP;
|
|
dlg.m_dXP = dXP;
|
|
dlg.m_sDMat = sDMat;
|
|
dlg.m_sRem = sRem;
|
|
dlg.m_bHasSteelSlab = bHasSteelSlab;
|
|
dlg.m_bHasBolt = bHasBolt;
|
|
dlg.m_bBoltType = bBoltType;
|
|
dlg.m_bBoltPipe = bBoltPipe;
|
|
dlg.m_dBomEl = dBomEl;
|
|
dlg.m_sNo = sNo;
|
|
dlg.m_nArray = nArray;
|
|
dlg.m_nSteel = nSteel;
|
|
dlg.m_nMNumber = nMNumber;
|
|
dlg.m_dMR = dMR;
|
|
dlg.m_sMMat = sMMat;
|
|
dlg.m_sMRem = sMRem;
|
|
dlg.m_sMType = sMType;
|
|
dlg.m_sMSize = sMSize;
|
|
dlg.m_sMPMat = sMPMat;
|
|
dlg.m_dMPOD = dMPOD;
|
|
dlg.m_dMPt = dMPt;
|
|
dlg.m_nNumber = nNumber;
|
|
dlg.m_dSideSp = dSideSp;
|
|
|
|
if (dlg.DoModal() == IDOK)
|
|
{
|
|
AcGePoint3d ptBomMid = MidPoint(ext.minPoint(), ext.maxPoint());
|
|
ptBomMid.z = dlg.m_dBomEl;
|
|
|
|
double dAngle = AcGeVector3d::kXAxis.angleTo(vtDir, AcGeVector3d::kZAxis);
|
|
AcGeMatrix3d xforR;
|
|
xforR.setToRotation(dAngle, AcGeVector3d::kZAxis, ptBomMid);
|
|
|
|
AecDbEwEquipment* pNewEqu = dlg.GetBaseStruPart(ptBomMid);
|
|
if (pNewEqu)
|
|
{
|
|
pNewEqu->transformBy(xforR);
|
|
pNewEqu->GetSpecialtyData()->SetAt(KEY_DRAW2D, _T("AecDbEquBaseDraw2d"));
|
|
pEqu->erase();
|
|
CoreTools::AddToModelSpace(pNewEqu);
|
|
}
|
|
}
|
|
}
|
|
|
|
return Acad::eOk;
|
|
}
|