#pragma once #include "AecDbOpening.h" //折线窗 class DLLIMPEXP AecDbZLineXOpening : public AecDbXOpening { public: ACRX_DECLARE_MEMBERS(AecDbZLineXOpening); protected: static Adesk::UInt32 kCurrentVersionNumber; public: AecDbZLineXOpening(void); ~AecDbZLineXOpening(void); void SetOpeningData(const OpeningData& data,const AcDbObjectIdArray& arIds); void SetZLinePoints(const AcGePoint3dArray& arPts); void GetZLinePoints(AcGePoint3dArray& arPts) const; public: //生成标准的墙体2D的图元 bool GetStandardDraw2d(AecComplexCurve& draw2d,bool bHasEnd = true) const; void GetSideLines(AecComplexCurve& drawSides,const AcGeVector3d& vtDir) const; virtual bool GetForHouseSubtract(AcDbVoidPtrArray& arSolidPtrs) const; public: virtual void subList() const; virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform); virtual Acad::ErrorStatus subGetGripPoints( AcDbGripDataPtrArray& grips, const double curViewUnitSize, const int gripSize, const AcGeVector3d& curViewDir, const int bitflags) const; virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbVoidPtrArray& appData, const AcGeVector3d& offset, const int bitflags); virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray& stretchPoints) const; virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset); virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler); virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const; virtual Acad::ErrorStatus subErase(Adesk::Boolean erasing); protected: virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const; virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const; public: virtual int GetDraw2dables(Adesk::UInt16 nDrawStyle, AcDbVoidPtrArray& arEntPtrs) const; virtual int GetDraw3dables(AcDbVoidPtrArray& arEntPtrs,bool bWriteBimInfo/* = false */) const; private: //x,y 2d直线路径,z bulge预留 标高 map中 AcGePoint3dArray m_arZLines; AcDbObjectIdArray m_arAssocIds; };