#pragma once #include "AecDbEntityBase.h" #include "AecDbObjXDataMap.h" #include "AecMInterfaces.h" #include "AecComplexCurveDraw.h" #ifdef EARTHWORM_EXPORT #define DLLIMPEXP __declspec(dllexport) #else #define DLLIMPEXP __declspec(dllimport) #endif //装配式井 class DLLIMPEXP AecDbAssembleWell : public AecDbEntityBase { public: ACRX_DECLARE_MEMBERS(AecDbAssembleWell); protected: static Adesk::UInt32 kCurrentVersionNumber; public: AecDbAssembleWell(void); ~AecDbAssembleWell(void); //设置井文件名不含路径 bool AppendScriptLine(const TCHAR *pszLine,bool bIs3D = true); void ResetContent(); bool GetScriptLines(CStringArray& arLines,bool bIs3D = true) const; bool IsEmpty() const; void SetPosition(const AcGePoint3d& ptIns); bool GetPosition(AcGePoint3d &ptIns) const; void SetRotation(double dAng); double GetRotation() const; //专业数据 和绘制设置 virtual AecDbObjXDataMap *GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite); virtual const AecDbObjXDataMap *GetSpecialtyData() const; virtual void subList() const; virtual Acad::ErrorStatus copyFrom(const AcRxObject *pSrc); virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d &xform); #if ARX>16 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); #endif virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const; virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const; 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 int GetSectionDraw(const AcGePoint3d &ptFr, const AcGePoint3d &ptTo, const AcGeVector3d &vtViewDir, const AcGeVector3d &vtTo, AcDbVoidPtrArray &arRegionPtrs) const; protected: //语法分析 bool IsPLSyntaxCheck(const TCHAR* pLine) const; bool NewAcDbEntity(AcDbVoidPtrArray &arEntPtrs, CString &sSml) const; bool NewAecEntity(AcDbVoidPtrArray& arEntPtrs,CString &sSml, int &nAddOrSub) const; bool NewWall(AcDbVoidPtrArray &arEntPtrs,CStringArray &arInfo) const; bool NewSlab(AcDbVoidPtrArray &arEntPtrs, CStringArray &arInfo) const; bool NewPipe(AcDbVoidPtrArray &arEntPtrs, CStringArray &arInfo) const; bool NewHole(AcDbVoidPtrArray &arEntPtrs, CStringArray &arInfo) const; bool NewCon(AcDbVoidPtrArray &arEntPtrs, CStringArray &arInfo) const; BOOL CalValue(const CString &sExp, double &dRes) const; BOOL CalXYOffset(CString &sXYOff, double &dX, double &dY) const; BOOL CalPoint2d(CString &sPt, ads_point &pt) const; protected: AecDbObjXDataMap m_mapSpecXData; //BIM数据 CStringArray m_arScrLines3d; //脚本行3d CStringArray m_arScrLines2d; //脚本行2d AcGePoint3d m_ptIns; //插入点 double m_dRotate; //插入角度 AecGripData* m_pGripAppData; //不序列化 };