Files
envi-code/SourceCode/Code2026/tg_shs/shs_annotate/ParallelDimStyle.h
T
2026-09-28 15:28:50 +08:00

39 lines
1.5 KiB
C++

#pragma once
class CParallelDimStyle
{
public:
CParallelDimStyle(void);
~CParallelDimStyle(void);
public:
void ParallelDimensioning(BOOL bParallelDim);
//解析实体得到实体内的line,在此函数中添加需要识别的实体
void AnalysisTgEntToLine(const AcDbEntity* pEnt, TDPtrList<TGGeCurveSegment> &lstResult);
//与直线相交的第一条线,如果第一条线是弧线获取标注线
TGGeCurveSegment GetFirstInterLine(TDPtrList<TGGeCurveSegment> &lstInput, TGGeCurveSegment& ln, TGGeCurveSegment &segForArc);
//与直线相交的最后一条线,解析图块时使用
TGGeCurveSegment GetLastInterLine(TDPtrList<TGGeCurveSegment> &lstInput, const TGGeCurveSegment& ln);
//过滤平行线
void GetParallelLine(TDPtrList<TGGeCurveSegment> &lstInput, TDPtrList<TGGeCurveSegment> &lstResult, const TGGeCurveSegment& segln);
void GetParallelLineForArc(TDPtrList<TGGeCurveSegment> &lstInput, TDPtrList<TGGeCurveSegment> &lstResult, const TGGeCurveSegment& segln);
//与直线的交点
int GetInterPt(TDPtrList<TGGeCurveSegment> &lstInterLine, TADSGePointList& lstInterPt, TGGeCurveSegment& segln);
//获取图块内的line
void Get2DCurveFromBlock(AcDbBlockTableRecord &blockRec, ads_matrix matForInsert,TDPtrList<TGGeCurveSegment> &lstResult);
TGGeCurveSegment m_segSelLine;//选择实体的直线
CStringList m_lstLayer;//图层过滤集
};
class TDimParallelArg
{
public:
DListStack<XPoint> m_ptStack;
void AddDim(AcDbObjectId idDim, XPoint ptNew);
void RemoveDim(AcDbObjectId idDim, XPoint ptOld);
void Step(XPoint ptNew);
BOOL CanUndo();
void Undo(AcDbObjectId idDim);
XPoint GetLastPoint();
};