#pragma once #include "dbmain.h" #include "TChangeClass.h" ////拖动布树,仅仅用来做偏移时jig的绘制,其他功能没有实 class TDbPlaceTree: public AcDbEntity { public: TDbPlaceTree(); void SetPolyPath(XPoly2D poly2D); void UpdatePlaceTreeData(double dRad, double dDis, bool bIsSetDis, bool bIsRotation, AcDbObjectId idBlk); virtual ~TDbPlaceTree(void); virtual Adesk::Boolean subWorldDraw(AcGiWorldDraw *pWd); private: // 造块 bool MakeBlockReference(AcGePoint3d ptInsert,AcGiWorldDraw *pWd); // 模拟造块,因为真实造块会非常卡 bool SimulateMakeBlockReference(AcGePoint3d ptInsert,AcGiWorldDraw *pWd); // 直线样式生成树 void LineStyle(AcDbLine *pLine, double dTreeDis, AcGePoint3dArray &ptAryInsert, BOOL bIsSetDis); // 圆弧样式生成树 void ArcStyle(AcDbArc *pArc, double dTreeDis, AcGePoint3dArray &ptAryInsert, BOOL bIsSetDis, double dBugle); // 多段线样式生成树 void PolyLineStyle(AcDbPolyline *pPolyLine, double dTreeDis, AcGePoint3dArray &ptAryInsert, BOOL bIsSetDis); private: double m_dRad; // 半径 double m_dDis; // 间距 AcDbObjectId m_idBlk; // 块ID BOOL m_bIsSetDis; // 是否设置间距可调 BOOL m_bIsRotation;// 是否设置随机旋转 AcDbPolyline m_polyLine; };