114 lines
3.3 KiB
C++
114 lines
3.3 KiB
C++
#if !defined(AFX_LANDSCAPEENTITY_H__)
|
|
#define AFX_LANDSCAPEENTITY_H__
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
|
|
#include "DrawLandScapeDlg.h"
|
|
#include "RoadDataCenterNew.h"
|
|
|
|
//namespace
|
|
//{
|
|
struct PointAndAngle//弧线绘制时需要得到图块的插入点和旋转角度
|
|
{
|
|
AcGePoint3d ptPoint;
|
|
double dAngle;
|
|
};
|
|
//}
|
|
//景观路交互
|
|
class CLandScapeStyle
|
|
{
|
|
|
|
|
|
public:
|
|
CLandScapeStyle();
|
|
~CLandScapeStyle();
|
|
|
|
// 设置对话框参数
|
|
void SetDlgData(const double dRoadWidth, double dRoadWidthMM, const double dWidthPercent, const double dgap, const AcDbObjectId obj,
|
|
const BOOL bRodeLine, const BOOL bAutoAdjust,const double dBlockWidth, const double dBlockHeight,
|
|
const double dRealBlockWidth, BOOL bIsUnitPercent);
|
|
|
|
// 动态绘制
|
|
BOOL dynamicDraw();
|
|
// 选择路径
|
|
BOOL selectPath();
|
|
|
|
// 直线样式生成
|
|
void LineStyle(AcDbLine *pLine, double dGap, BOOL bAutoAdjust, std::vector<PointAndAngle>& vecPtAndAngle);
|
|
// 圆弧样式生成
|
|
void ArcStyle(AcDbArc *pArc, double dGap, double dBugle, BOOL bAutoAdjust, std::vector<PointAndAngle>& vecPtAndAngle);
|
|
// 多段线样式生成
|
|
void PolyLineStyle(AcDbPolyline *pPolyLine, double dGap, BOOL bAutoAdjust,
|
|
std::vector<PointAndAngle>& vecPtAndAngle, AcGePoint3dArray &ptAryInsert);
|
|
|
|
// 获取真实单元间距,返回可绘制的块个数
|
|
int GetRealGapOnLine(AcGePoint3d ptStart, AcGePoint3d ptEnd);
|
|
//
|
|
void setPointAt(XPoint pt);
|
|
// 造块
|
|
bool MakeBlockReference(AcGePoint3d ptInsert, double dAngle = 0.0);
|
|
// 对话框数据实时更新
|
|
BOOL DataUpdate();
|
|
|
|
//绘制直道
|
|
void DrawLineRoad(AcDbLine* pLine);
|
|
//绘制弧道
|
|
void DrawArcRoad(AcDbArc* pArc);
|
|
|
|
//
|
|
void DrawPolyRoad(AcDbPolyline* pPoly);
|
|
|
|
AcDbObjectId MakeUnnamedGroup();
|
|
double m_dBulge;
|
|
////获取真实图块长度
|
|
void GetRealBlockLen()
|
|
{
|
|
m_dRealBlockLen = (m_dRealBlockWidth / m_dBlockWidth) * m_dBlockLen;
|
|
}
|
|
|
|
//获取真实路宽 zjt add 160906
|
|
void SetRealBlockWidth(double dRoadWidth)
|
|
{
|
|
m_dRealBlockWidth = dRoadWidth;
|
|
}
|
|
|
|
protected:
|
|
double m_dRoadWidth; //路宽
|
|
double m_dWidthPercent; //百分比
|
|
double m_dgap; //间距
|
|
double m_dRealGap; //
|
|
double m_dBlockWidth; //图块宽
|
|
double m_dBlockLen; //图块长
|
|
double m_dRealBlockWidth; //图块真实宽(比例放大后的图块宽)
|
|
double m_dRealBlockLen;
|
|
AcDbObjectId m_idObj; //id
|
|
BOOL m_bRoadLine; //路边线
|
|
BOOL m_bAutoAdjust; //自调
|
|
int m_nDrawType; //绘制类型
|
|
BOOL m_bIsUnitPercent; //单元百分比
|
|
public:
|
|
double GetRoadWidth(){return _AS_SYS_UNIT(m_dRoadWidth);}
|
|
double GetWidthPercent(){return m_dWidthPercent;}
|
|
double GetGap(){return _AS_SYS_UNIT(m_dgap);}
|
|
double GetRealGap() {return m_dRealGap; }
|
|
double GetBlockWidth() {return m_dBlockWidth; }
|
|
double GetBlockLen() {return m_dBlockLen; }
|
|
BOOL GetIsDrawRoadLine() {return m_bRoadLine; }
|
|
BOOL GetIsAutoAdjust() {return m_bAutoAdjust; }
|
|
BOOL GetIsUnitPercent(){return m_bIsUnitPercent;}
|
|
void SetIsAutoAdjust(BOOL bAutoAdjust){m_bAutoAdjust = bAutoAdjust;}
|
|
void SetIsDrawLine(BOOL bIsDrawLine){m_bRoadLine = bIsDrawLine;}
|
|
void SetIsUnitPercent(BOOL bIsUnitPercent){m_bIsUnitPercent = bIsUnitPercent;}
|
|
void SetUnitPercent(double dUnitPercent){m_dWidthPercent = dUnitPercent;}
|
|
void SetRoadWidth(double dWidth){m_dRoadWidth = dWidth;}
|
|
void SetUnitGap(double dGap){m_dgap = dGap;}
|
|
PickSet ssAll;
|
|
double m_dArcRad; //弧段半径
|
|
};
|
|
|
|
|
|
#endif //AFX_LANDSCAPEENTITY_H__
|