Files
envi-code/SourceCode/Code2026/tg_shs/shs_siteplan/LandScapeStyle.h
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

114 lines
3.4 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__