635 lines
18 KiB
C++
635 lines
18 KiB
C++
// DimPipeElevationDlg.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
|
|
#include <dbSymbolAnnotate.h>
|
|
#include <EdJigEx.h>
|
|
|
|
#include "DimPipeElevationDlg.h"
|
|
#include "TwtDef.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
//***************************************************************************************************
|
|
// 单注标高
|
|
//***************************************************************************************************
|
|
class TElevEdJig : public TSymbEdJig {
|
|
public:
|
|
enum TElevOper { kNone=0, kDirection=1, kBaseLine=2, kLeader=3};
|
|
protected:
|
|
//输入
|
|
TElevEdJig::TElevOper m_nOperCode;
|
|
CDimPipeElevationDlg *m_pDlg;
|
|
// I/O
|
|
TDbSymbElevation *m_pDrawEnt;
|
|
public:
|
|
TElevEdJig(TDbSymbElevation *pElev, CDimPipeElevationDlg *pDlg);
|
|
TElevEdJig(TDbSymbElevation *pElev);
|
|
virtual int DoIt(int *pKeyIndex=NULL);
|
|
virtual DragStatus GetPoint(XPoint &pt);
|
|
|
|
virtual Adesk::Boolean update();
|
|
virtual AcDbEntity* entity() const;
|
|
XPoint GetDragPoint() const;
|
|
XPoint GetBasePoint() const;
|
|
|
|
public:
|
|
void SetOperCode(TElevEdJig::TElevOper nCode) {
|
|
m_nOperCode=nCode;
|
|
}
|
|
|
|
};
|
|
|
|
|
|
TElevEdJig::TElevEdJig(TDbSymbElevation *pElev, CDimPipeElevationDlg *pDlg)
|
|
{
|
|
m_nOperCode=TElevEdJig::kNone;
|
|
m_pDrawEnt=pElev;
|
|
m_pDlg = pDlg;
|
|
}
|
|
|
|
TElevEdJig::TElevEdJig(TDbSymbElevation *pElev)
|
|
{
|
|
m_nOperCode=TElevEdJig::kNone;
|
|
m_pDrawEnt=pElev;
|
|
m_pDlg = NULL;
|
|
}
|
|
|
|
XPoint TElevEdJig::GetDragPoint() const
|
|
{
|
|
XPoint ptDrag=m_ptResult;
|
|
XPoint ptArray[7];
|
|
m_pDrawEnt->GetVertexes(ptArray);
|
|
if(m_nOperCode==TElevEdJig::kDirection)
|
|
ptDrag=ptArray[2];
|
|
else if(m_nOperCode==TElevEdJig::kBaseLine)
|
|
ptDrag=ptArray[4];
|
|
else if(m_nOperCode==TElevEdJig::kLeader)
|
|
ptDrag=ptArray[6];
|
|
return ptDrag;
|
|
}
|
|
|
|
XPoint TElevEdJig::GetBasePoint() const
|
|
{
|
|
XPoint ptDrag=m_ptResult;
|
|
XPoint ptArray[7];
|
|
m_pDrawEnt->GetVertexes(ptArray);
|
|
if(m_nOperCode==TElevEdJig::kDirection)
|
|
ptDrag=ptArray[2];
|
|
else if(m_nOperCode==TElevEdJig::kBaseLine)
|
|
ptDrag=ptArray[0];
|
|
return ptDrag;
|
|
}
|
|
|
|
|
|
// 开始执行拖动
|
|
int TElevEdJig::DoIt(int *keyIndex)
|
|
{
|
|
m_ptResult=GetDragPoint();
|
|
return TSymbEdJig::DoIt(keyIndex);
|
|
}
|
|
|
|
// 反馈
|
|
AcEdJig::DragStatus TElevEdJig::GetPoint(XPoint &pt)
|
|
{
|
|
return acquirePoint(pt, GetBasePoint().AsAcGePoint3d());
|
|
}
|
|
|
|
|
|
// 更新实体数据
|
|
Adesk::Boolean TElevEdJig::update()
|
|
{
|
|
if(m_pDlg != NULL){
|
|
m_pDlg->UpdateData(TRUE);
|
|
// m_pDrawEnt->SetPScale((double)m_pDlg->m_iScale);
|
|
CString sText = m_pDlg->m_csText;
|
|
if(m_pDlg->m_csElePrefix != _T("无") && sText.Find(_T(".")) < 0){
|
|
if(m_pDlg->m_iPrecision == 1)
|
|
sText = sText + _T(".00");
|
|
else
|
|
sText = sText + _T(".000");
|
|
}
|
|
|
|
if(m_pDlg->m_csElePrefix != _T("无") && fabs(_tstof(sText)) < 0.001)
|
|
sText = m_pDlg->m_csElePrefix + _T("%%P") + sText;
|
|
else if(m_pDlg->m_csElePrefix != _T("无") && _tstof(sText) > 0.001)
|
|
sText = m_pDlg->m_csElePrefix + _T("+") + sText;
|
|
else if(m_pDlg->m_csElePrefix != _T("无") && _tstof(sText) < -0.001)
|
|
sText = m_pDlg->m_csElePrefix + sText;
|
|
|
|
m_pDrawEnt->SetText(sText);
|
|
if(m_pDlg->m_iPrecision == 1)
|
|
m_pDrawEnt->SetPrec2(TRUE);
|
|
else
|
|
m_pDrawEnt->SetPrec2(FALSE);
|
|
}
|
|
Adesk::Boolean bRet=Adesk::kTrue;
|
|
AcGePoint3dArray gripPoints;
|
|
TDbSymbElevation *pElev=m_pDrawEnt;
|
|
VERIFY(pElev->getStretchPoints(gripPoints)==Acad::eOk);
|
|
if(m_nOperCode==TElevEdJig::kDirection) {
|
|
AcGeVector3d vtOffset=m_ptResult.AsAcGePoint3d()-gripPoints[1];
|
|
AcDbIntArray indices;
|
|
indices.append(1);
|
|
if(vtOffset.length()>_distSnap*10)
|
|
pElev->moveGripPointsAt(indices, vtOffset);
|
|
} else if(m_nOperCode==TElevEdJig::kBaseLine) {
|
|
AcGeVector3d vtOffset=m_ptResult.AsAcGePoint3d()-gripPoints[3];
|
|
AcDbIntArray indices;
|
|
indices.append(3);
|
|
if(vtOffset.length()>_distSnap)
|
|
pElev->moveGripPointsAt(indices, vtOffset);
|
|
} else if(m_nOperCode==TElevEdJig::kLeader) {
|
|
int idx=pElev->HasBaseLine()? 4 : 3;
|
|
AcGeVector3d vtOffset=m_ptResult.AsAcGePoint3d()-gripPoints[idx];
|
|
AcDbIntArray indices;
|
|
indices.append(idx);
|
|
if(vtOffset.length()>_distSnap*10)
|
|
pElev->moveGripPointsAt(indices, vtOffset);
|
|
} else {
|
|
bRet=Adesk::kFalse;
|
|
}
|
|
return bRet;
|
|
}
|
|
|
|
AcDbEntity* TElevEdJig::entity() const
|
|
{
|
|
return (AcDbEntity *)m_pDrawEnt;
|
|
}
|
|
|
|
//extern CString GetDimLayerNameByPipeLayer(const CString &strLayer); // cet 2010.11.23 add
|
|
|
|
XPoint GetAngPoint(XPoint ptstart, double nAngle)
|
|
{
|
|
double nEle = ptstart.z;
|
|
ptstart.z =0;
|
|
XPoint ptRet, ptend;
|
|
int itype = -1;
|
|
double dAng(0);
|
|
nAngle = Wcs2Ucs(nAngle);
|
|
double ntmp2 = Radian2Angle(nAngle);
|
|
while(1){
|
|
struct resbuf pointbuf;
|
|
int iRet = ads_grread(5, &itype, &pointbuf);//得到动态点pointbuf
|
|
ads_point_set(pointbuf.resval.rpoint, ptend);//ptend动态点,也就是引出支线的结束点
|
|
ptend.z = 0;
|
|
double dOAng = ads_angle(ptstart, ptend) - nAngle;
|
|
double dDis = ads_distance(ptstart, ptend);
|
|
dDis = fabs(dDis * cos(dOAng));
|
|
//指出标注的引出方向
|
|
if(dOAng < -0.001)
|
|
dOAng += 2*PI;
|
|
else if(dOAng > (PI*2 + 0.001))
|
|
dOAng -= PI*2;
|
|
double ntmp = Radian2Angle(dOAng);
|
|
if(dOAng<=PI && dOAng>PI/2){
|
|
dAng = nAngle + PI;
|
|
}
|
|
else if(dOAng>=0 && dOAng<PI/2){
|
|
dAng = nAngle;
|
|
}
|
|
else if(dOAng<=PI*2 && dOAng>PI/2*3){
|
|
dAng = nAngle;
|
|
}
|
|
else if(dOAng>=PI && dOAng<PI/2*3){
|
|
dAng = nAngle + PI;
|
|
}
|
|
|
|
ads_redraw(NULL, 1);
|
|
if(itype == 5){
|
|
ads_polar(ptstart, dAng, dDis, ptend);
|
|
ads_grdraw(ptstart, ptend, -1, 0);
|
|
ptRet = ptend;
|
|
ptRet.z = nEle;
|
|
}
|
|
else
|
|
break;
|
|
}
|
|
if(itype != 3)
|
|
return XPoint();
|
|
return ptRet;
|
|
}
|
|
|
|
// Command: 标高
|
|
void DimSymbElevation()
|
|
{
|
|
AcDbObjectId idRet;
|
|
DList<AcDbObjectId> lstElevId;
|
|
GetEntFromBlockByDxf(lstElevId, _T("ATS_ELEVATION"));
|
|
AcDbObjectId *pLast=lstElevId.Tail();
|
|
XPoint ptLast;
|
|
double *pLastLoc=NULL;
|
|
double nLastElev=0.0;
|
|
if(pLast) {
|
|
OPENOBJ_BEGIN(*pLast, AcDb::kForRead, TDbSymbElevation, pLastElev);
|
|
if(pLastElev) {
|
|
ptLast=pLastElev->GetLocation();
|
|
nLastElev=_tstof(pLastElev->GetText());
|
|
pLastLoc=&ptLast.x;
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
|
|
CDimPipeElevationDlg dlg(acedGetAcadFrame());
|
|
{
|
|
CTemporaryResourceOverride vTemp;
|
|
dlg.Create(IDD_DIM_PIPE_ELEVATION, acedGetAcadFrame());
|
|
}
|
|
dlg.ShowWindow(SW_SHOW);
|
|
acedGetAcadDwgView()->SetFocus();
|
|
|
|
// cet 2011.11.22 add
|
|
double dMeter = 1000;
|
|
if (DocGetMeterUnitDraw())
|
|
{
|
|
dMeter = 1;
|
|
}
|
|
|
|
// if(DocGetMeterUnitDraw() && dlg.m_iScale > 20)
|
|
// {
|
|
// dlg.m_iScale = 1;
|
|
// dlg.UpdateData(FALSE);
|
|
// }
|
|
double g_nLeaderLen=7.0;
|
|
double g_nBaseLen=7.0;
|
|
|
|
XPoint ptLoc, ptPick;
|
|
while(1) {
|
|
int nOsMode=0;
|
|
xg_getvar(_T("OSMODE"), &nOsMode);
|
|
nOsMode &= ~0x4000;
|
|
nOsMode |= OS_INT|OS_NEA;
|
|
XPushVar<int> vOsMode(_T("OSMODE"), nOsMode);
|
|
|
|
int nRetCode;
|
|
INITGET_BEG(0, _T("R"));
|
|
nRetCode=ads_getpoint(pLastLoc? (double *)Wcs2Ucs(pLastLoc) : NULL,
|
|
_T("\n请点取标高点或 [参考标高(R)]<退出>:"), ptLoc);
|
|
INITGET_END();
|
|
if(nRetCode==RTNORM)
|
|
break;
|
|
else if(nRetCode==RTKWORD) {
|
|
Entity entRef;
|
|
if(entRef.FilterSelect(_T("\n点取参考标高<退出>: "), RBList(RTDXF0, _T("ATS_ELEVATION"), NULL))==RTNORM) {
|
|
OPENOBJ_BEGIN(entRef, AcDb::kForRead, TDbSymbElevation, pLastElev);
|
|
if(pLastElev) {
|
|
ptLast=pLastElev->GetLocation();
|
|
nLastElev=_tstof(pLastElev->GetText());
|
|
pLastLoc=&ptLast.x;
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
} else{
|
|
dlg.DestroyWindow();
|
|
return;
|
|
}
|
|
}
|
|
|
|
RBList rbMask = ads_buildlist( -4, _T("<or"),
|
|
-4, _T("<and"), RTDXF0, _T("ATS_PIPE"), 8, _T("*"), -4, _T("and>"),
|
|
-4, _T("<and"), RTDXF0, _T("LINE"), 8, _T("*"), -4, _T("and>"),
|
|
-4, _T("or>"), NULL);
|
|
PickSet ss(SS_FREE);
|
|
GetPointPickSet(ptLoc, ss, rbMask, int(0.5*DocGetPScale()));
|
|
XPoint ptUcs = ptLoc;
|
|
ptLoc=Ucs2Wcs(ptLoc);
|
|
double nRotate(0), nEle(-250);
|
|
TCHAR szLayer[256];
|
|
dlg.UpdateData(TRUE);
|
|
|
|
CString strPipeLayer; // cet 2010.11.23 add 管道图层
|
|
if(ss.Length() == 1){
|
|
Entity ent = ss[0L];
|
|
if(ent.Is(_T("LINE"))){
|
|
XLine line(ent);
|
|
nRotate = line.Direction();
|
|
if(nRotate >= PI && nRotate <= PI*3/2)
|
|
nRotate -= PI;
|
|
else if(nRotate > PI/2 && nRotate < PI)
|
|
nRotate += PI;
|
|
}
|
|
else if(ent.Is(_T("ATS_PIPE"))){
|
|
ent.GetData(8, szLayer);
|
|
OPENOBJ_BEGIN(ent, AcDb::kForRead, TDbPipe, pPipe);
|
|
if(pPipe){
|
|
nRotate = ads_angle(pPipe->GetStartPoint(), pPipe->GetEndPoint());
|
|
if(pPipe->GetModelType() == TPipeSys::kModel)
|
|
{
|
|
//nEle = pPipe->StartPoint().z/1000; cet 2011.11.22 modify
|
|
nEle = pPipe->StartPoint().z / dMeter;
|
|
}
|
|
else
|
|
nEle = _tstof(ReadXdata(ent, _T("TG-ELEVATION")));
|
|
if(nRotate >= PI && nRotate <= PI*3/2)
|
|
nRotate -= PI;
|
|
else if(nRotate > PI/2 && nRotate < PI)
|
|
nRotate += PI;
|
|
strPipeLayer = pPipe->layer(); // cet 2010.11.23 add 管道图层
|
|
}
|
|
OPENOBJ_END();
|
|
}
|
|
// nRotate = Ucs2Wcs(nRotate);
|
|
}
|
|
|
|
if(dlg.m_bOut){
|
|
if(ss.Length() == 1){
|
|
ads_prompt(_T("\n请点取引出点:<不引出>"));
|
|
ptPick = GetAngPoint(ptUcs, nRotate);
|
|
ptPick = Ucs2Wcs(ptPick);
|
|
}
|
|
else{
|
|
if(ads_getpoint(ptUcs, _T("\n请点取引出点:<不引出>"), ptPick) == RTNORM){
|
|
ptPick = Ucs2Wcs(ptPick);
|
|
ptPick.z = ptLoc.z;
|
|
nRotate = ads_angle(ptLoc, ptPick);
|
|
if(nRotate >= PI && nRotate < PI*3/2)
|
|
nRotate -= PI;
|
|
else if(nRotate > PI/2 && nRotate < PI)
|
|
nRotate += PI;
|
|
}
|
|
}
|
|
|
|
}
|
|
XString sText, sText1;
|
|
|
|
dlg.UpdateData(TRUE);
|
|
if(nEle > -200)
|
|
{
|
|
if(dlg.m_iPrecision == 1)
|
|
sText = XString(_T("%.2f"), nEle);
|
|
else
|
|
sText = XString(_T("%.3f"), nEle);
|
|
}
|
|
else{
|
|
if(dlg.m_csText == _T(""))
|
|
{
|
|
// cet 2011.11.22 modify
|
|
// if(dlg.m_iPrecision == 1)
|
|
// sText = XString(_T("%.2f"), nLastElev+_AS_METER(ptLoc.y-ptLast.y));
|
|
// else
|
|
// sText = XString(_T("%.3f"), nLastElev+_AS_METER(ptLoc.y-ptLast.y));
|
|
double dVal = ptLoc.y-ptLast.y;
|
|
dVal /= dMeter;
|
|
if (dlg.m_iPrecision == 1)
|
|
{
|
|
sText = XString(_T("%.2f"), nLastElev + dVal);
|
|
}
|
|
else
|
|
{
|
|
sText = XString(_T("%.3f"), nLastElev + dVal);
|
|
}
|
|
}
|
|
else
|
|
sText = dlg.m_csText;
|
|
}
|
|
dlg.m_csText = sText;
|
|
dlg.UpdateData(FALSE);
|
|
// if(dlg.m_csElePrefix != _T("无") && _tstof(sText) < 0.001)
|
|
// sText = dlg.m_csElePrefix + _T("±") + sText;
|
|
// else if(dlg.m_csElePrefix != _T("无") && _tstof(sText) > 0.001)
|
|
// sText = dlg.m_csElePrefix + _T("+") + sText;
|
|
|
|
|
|
|
|
if(!sText1)
|
|
sText1=sText;
|
|
TDbSymbElevation *pElev = new TDbSymbElevation;
|
|
pElev->SetLocation(ptLoc);
|
|
if(fabs(nRotate) < 0.001)
|
|
pElev->SetLayoutRotation(Ucs2Wcs(nRotate));
|
|
else
|
|
pElev->SetLayoutRotation(nRotate);
|
|
pElev->SetText(sText1);
|
|
if(!!ptPick){
|
|
pElev->SetLocation(ptPick);
|
|
pElev->SetBaseLine(TRUE);
|
|
pElev->SetBaseLen(ads_distance(ptPick, ptLoc)/100);
|
|
}
|
|
else{
|
|
pElev->SetLocation(ptLoc);
|
|
pElev->SetBaseLine(FALSE);
|
|
pElev->SetBaseLen(7);
|
|
}
|
|
pElev->SetLeader(FALSE);
|
|
pElev->SetLeaderLen(7);
|
|
pElev->SetTextHeight(dlg.m_nHeight);
|
|
|
|
// zxl 2012.07.03 modify
|
|
//pElev->SetTextStyleId(InitTwtTextStyle(g_csTwtDimStyle));
|
|
pElev->SetTextStyleId(InitTwtTextStyle(g_csEleDimStyle));
|
|
|
|
pElev->SetTextBaseLen(pElev->GetDefaultTextBaseLen());
|
|
pElev->SetTextLayerId(InitLayer(LAY_TEXT));
|
|
pElev->setLayer(pElev->GetDefaultLayer());
|
|
// pElev->SetPScale((double)dlg.m_iScale);
|
|
pElev->SetTextPoint(pElev->GetDefaultTextLocation());
|
|
|
|
|
|
TElevEdJig jig(pElev, &dlg);
|
|
|
|
const TCHAR *pszPrompt=_T("\n请点取标高方向<当前>:");
|
|
jig.SetOperCode(TElevEdJig::kDirection);
|
|
jig.SetPrompt(pszPrompt);
|
|
int nRet=jig.DoIt();
|
|
if(nRet!=RTNORM) {
|
|
dlg.DestroyWindow();
|
|
delete pElev;
|
|
return;
|
|
}
|
|
|
|
AcDbObjectId id = pElev->AddToCSpace(Adesk::kTrue);
|
|
//cet 2010.11.23 add 标注随管道的标注图层
|
|
if (!strPipeLayer.IsEmpty())
|
|
{
|
|
OPENOBJ_BEGIN(id, AcDb::kForWrite, TDbSymbElevation, pEnt)
|
|
if(pEnt != NULL)
|
|
{
|
|
CString strDimLayer = GetDimLayerNameByPipeLayer(strPipeLayer);
|
|
pEnt->setLayer(InitLayer(strDimLayer));
|
|
}
|
|
OPENOBJ_END()
|
|
}
|
|
|
|
if(_tcscmp(szLayer, _T("")) != 0){
|
|
Entity entLast;
|
|
entLast.GetLast();
|
|
WriteXdata(entLast, _T("TG-LAYER"), szLayer);
|
|
}
|
|
dlg.DestroyWindow();
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
void DimPipeElevation(Entity ent, XPoint ptLoc)
|
|
{
|
|
double dMeter(1);
|
|
if(!DocGetMeterUnitDraw())
|
|
dMeter = 1000;
|
|
|
|
TCHAR szLayer[256];
|
|
ent.GetData(8, szLayer);
|
|
|
|
double nRotate(0), nEle(0);
|
|
OPENOBJ_BEGIN(ent, AcDb::kForRead, TDbPipe, pPipe);
|
|
if(pPipe){
|
|
pPipe->getClosestPointTo(ptLoc, AcGeVector3d::kZAxis, ptLoc);
|
|
//nRotate = ads_angle(pPipe->GetStartPoint(), pPipe->GetEndPoint());// zxl 2013.12.03 modify
|
|
nRotate = ads_angle(Wcs2Ucs(pPipe->GetStartPoint()), Wcs2Ucs(pPipe->GetEndPoint()));
|
|
if(pPipe->GetModelType() == TPipeSys::kModel)
|
|
nEle = ptLoc.z/dMeter;
|
|
else
|
|
nEle = _tstof(ReadXdata(ent, _T("TG-ELEVATION")));
|
|
if(nRotate >= PI && nRotate <= PI*3/2)
|
|
nRotate -= PI;
|
|
else if(nRotate > PI/2 && nRotate < PI)
|
|
nRotate += PI;
|
|
}
|
|
else
|
|
return;
|
|
OPENOBJ_END();
|
|
|
|
CString sText;
|
|
sText.Format(_T("%.3f"), nEle);
|
|
|
|
TDbSymbElevation *pElev = new TDbSymbElevation;
|
|
pElev->SetLocation(ptLoc);
|
|
// zxl 2013.12.03 modify nRotate统一为ucs角度
|
|
// if(fabs(nRotate) < 0.001)
|
|
// pElev->SetLayoutRotation(Ucs2Wcs(nRotate));
|
|
// else
|
|
// pElev->SetLayoutRotation(nRotate);
|
|
pElev->SetLayoutRotation(Ucs2Wcs(nRotate));
|
|
|
|
pElev->SetText(sText);
|
|
|
|
pElev->SetLocation(ptLoc);
|
|
pElev->SetBaseLine(FALSE);
|
|
pElev->SetBaseLen(7);
|
|
|
|
pElev->SetLeader(FALSE);
|
|
pElev->SetLeaderLen(7);
|
|
|
|
// zxl 2012.07.03 modify
|
|
// pElev->SetTextHeight(g_nTwtDimHeight);
|
|
// pElev->SetTextStyleId(InitTwtTextStyle(g_csTwtDimStyle));
|
|
pElev->SetTextHeight(g_nEleDimHeight);
|
|
pElev->SetTextStyleId(InitTwtTextStyle(g_csEleDimStyle));
|
|
|
|
pElev->SetTextBaseLen(pElev->GetDefaultTextBaseLen());
|
|
pElev->SetTextLayerId(InitLayer(LAY_TEXT));
|
|
pElev->setLayer(pElev->GetDefaultLayer());
|
|
pElev->SetTextPoint(pElev->GetDefaultTextLocation());
|
|
//pElev->SetPScale((double)dlg.m_iScale);
|
|
|
|
TElevEdJig jig(pElev);
|
|
|
|
const TCHAR *pszPrompt=_T("\n请点取标高方向<当前>:");
|
|
jig.SetOperCode(TElevEdJig::kDirection);
|
|
jig.SetPrompt(pszPrompt);
|
|
int nRet=jig.DoIt();
|
|
if(nRet!=RTNORM) {
|
|
delete pElev;
|
|
return;
|
|
}
|
|
|
|
pElev->AddToCSpace(Adesk::kTrue);
|
|
if(_tcscmp(szLayer, _T("")) != 0){
|
|
Entity entLast;
|
|
entLast.GetLast();
|
|
WriteXdata(entLast, _T("TG-LAYER"), szLayer);
|
|
}
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDimPipeElevationDlg dialog
|
|
|
|
IMPLEMENT_DYNAMIC(CDimPipeElevationDlg, CModelessDialog)
|
|
BOOL CDimPipeElevationDlg::m_bOut = TRUE;
|
|
CString CDimPipeElevationDlg::m_csElePrefix = _T("无");
|
|
//int CDimPipeElevationDlg::m_iScale = 100;
|
|
double CDimPipeElevationDlg::m_nHeight = 3.5;
|
|
int CDimPipeElevationDlg::m_iPrecision = 0;
|
|
CDimPipeElevationDlg::CDimPipeElevationDlg(CWnd* pParent /*=NULL*/)
|
|
: CModelessDialog(CDimPipeElevationDlg::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CDimPipeElevationDlg)
|
|
m_csText = _T("");
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
void CDimPipeElevationDlg::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CModelessDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CDimPipeElevationDlg)
|
|
DDX_Text(pDX, IDC_EDIT_CONTENT, m_csText);
|
|
DDX_CBIndex(pDX, IDC_COMBO_PRECISION, m_iPrecision);
|
|
DDX_Control(pDX, IDC_COMBO_PREFIX, m_colPerFix);
|
|
DDX_CBString(pDX, IDC_COMBO_PREFIX, m_csElePrefix);
|
|
DDX_Check(pDX, IDC_CHECK_OUT, m_bOut);
|
|
DDX_Text(pDX, IDC_EDIT_HEIGHT, m_nHeight);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDimPipeElevationDlg, CModelessDialog)
|
|
//{{AFX_MSG_MAP(CDimPipeElevationDlg)
|
|
ON_WM_CLOSE()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDimPipeElevationDlg message handlers
|
|
|
|
// 重载update函数,支持combobox的数据刷新 zxl 2012.06.16 add
|
|
BOOL CDimPipeElevationDlg::UpdateData(BOOL bSaveAndValidate)
|
|
{
|
|
CWnd::UpdateData(bSaveAndValidate);
|
|
int len = m_colPerFix.GetCount();
|
|
BOOL bFlag = FALSE;
|
|
for(int i=0;i<len;i++)
|
|
{
|
|
CString csTmp;
|
|
m_colPerFix.GetLBText(i, csTmp);
|
|
if(csTmp.Compare(m_csElePrefix) == 0)
|
|
{
|
|
m_colPerFix.SetCurSel(i);
|
|
bFlag = TRUE;
|
|
break;
|
|
}
|
|
}
|
|
if(!bFlag)
|
|
m_colPerFix.SetWindowText(m_csElePrefix);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL CDimPipeElevationDlg::OnInitDialog()
|
|
{
|
|
CModelessDialog::OnInitDialog();
|
|
m_nHeight = g_nEleDimHeight;
|
|
|
|
UpdateData(FALSE);
|
|
// TODO: Add extra initialization here
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CDimPipeElevationDlg::OnClose()
|
|
{
|
|
CModelessDialog::OnClose();
|
|
acedPostCommand(_T("\33\33"));
|
|
}
|