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