#if !defined(AFX_THIMPHVACFLANGE_H__) #define AFX_THIMPHVACFLANGE_H__ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "TImpSpecFitting.h" class THImpHvacFlange : public TImpSpecFitting { public: THImpHvacFlange(); virtual ~THImpHvacFlange(); protected: //{{AFX_ARX_METHODS(THImpHvacElbow) virtual BOOL IsValid(TDbXDataMap* pXMap); virtual void GetKindName(CString& sName); virtual int GetInterfaceCount() const; virtual BOOL GetInterface(int nIndex,TInterface& pipeInterface) const; virtual BOOL GetInterface(const AcGePoint3d& ptConnect,TInterface& pipeInterface) const; virtual BOOL HasInterface(const AcGePoint3d& ptConnect,const AcGeVector3d& vtDir); virtual BOOL SetInterfaceRelation(const AcGePoint3d& ptConnect,const AcDbObjectId& idConnect); virtual BOOL SetInterfaceRelation(const AcGePoint3d& ptConnect,const AcDbObjectId& idConnect1,const AcDbObjectId& idConnect2); virtual BOOL RemoveInterfaceRelation(const AcGePoint3d& ptConnect,const AcDbObjectId& idConnect); virtual BOOL NotifyInterfaceToModify(const TInterfaceModifyMsg& iModiMsg,TInterfaceModifyMsgs& iModiMsgs); virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &mode) const; virtual Acad::ErrorStatus ExplodeOrDraw3d(XExplodeDraw &mode) const; virtual AcDbPolyline* MakePolyCurve() const; virtual BOOL MakeCurves(TComplexCurve& cplCurve) const; virtual BOOL GetCurvesInSide(TComplexCurve& compCurve) const; virtual BOOL MakePolyCurveFaces(AcDbVoidPtrArray& arFaces); virtual Acad::ErrorStatus transformBy(const AcGeMatrix3d& xform); virtual TDb::Position ExplainGripIndex(int nIndex) const; virtual Acad::ErrorStatus getStretchPoints(AcGePoint3dArray& stretchPoints) const; virtual Acad::ErrorStatus getGripPoints(AcGePoint3dArray& gripPoints, AcDbIntArray& osnapModes, AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus getOsnapPoints(AcDb::OsnapMode osnapMode, INT_PTR gsSelectionMark, const AcGePoint3d& pickPoint, const AcGePoint3d& lastPoint, const AcGeMatrix3d& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus moveStretchPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset); virtual Acad::ErrorStatus moveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset); virtual Acad::ErrorStatus getClassID(CLSID* pClsid) const; virtual BOOL OPMInfo(LPCTSTR pszName, TDb::OPMInfo* pInfo); virtual void GetTips(CMapStringToString& mapLable2Tip) const; virtual void list() const; //}}AFX_ARX_METHODS // 处理实体删除后操作 virtual void OnSubErase(Adesk::Boolean erasing); // 用户自定义调用, 用于复制法兰预览位移时,删除接口。区别仅位移情况 090916 virtual LRESULT UserCall(long i,LPVOID pData); public: //获取三维的壳对象 virtual int GetXBaseShell(TXShell& xShell); //获取体的范围方块 virtual int GetBodyBox(AcDbExtents& ext); // add by hh 2010-12-27 导出XML // virtual CString GetXml() const; virtual CString GetXml(const AcGeMatrix3d& mat) const; // mcl add 2011.1.30 剖切功能。 注意 GetSection内不应将std::vector参数清空 virtual bool GetSection(const AcDbFace &face, const AcGeVector3d &vtPlaneSecDir, std::vector §ionRecord, AcDbVoidPtrArray& arFillPtrs) const; // 剖切用,返回Z坐标最高、最低点 virtual Acad::ErrorStatus GetExtents(TADSGePoint3d &ptLow, TADSGePoint3d &ptUp) const; // add by hh 2014-08-06 支持管件与水管遮挡 virtual Acad::ErrorStatus GetClipBoundary(TGGePoly2D& poly)const; virtual bool IsMeClip() const; virtual bool IsClipMe(const TEntityBase* pEnt=NULL)const;//ok是否被裁剪 private: // 得到边线宽 double GetEdgeLineWidth() const; // 得到中线宽 double GetCentLineWidth() const; // 变径是否水平放置 BOOL IsHorzAlignment() const; // 变径是否垂直放置 BOOL IsVertAlignment() const; // 是否是单线变径 BOOL IsSingleLine() const; // 获取接口尺寸数据type,size,size1 BOOL GetInterfaceSizeData(int nIndex, TInterface& pipeInterface) const; // 夹点移动消息处理 BOOL OnMoveGripPointMsgNotify(const TInterfaceModifyMsg& iModiMsg, TInterfaceModifyMsgs& iModiMsgs); // 对象移动消息处理 BOOL OnTransformMsgNotify(const TInterfaceModifyMsg& iModiMsg, TInterfaceModifyMsgs& iModiMsgs); // 尺寸调整消息处理 BOOL OnSizeMsgNotify(const TInterfaceModifyMsg& iModiMsg, TInterfaceModifyMsgs& iModiMsgs); Acad::ErrorStatus OnCHorEqualRMoveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset); // 二维VertView // 矩形二维绘制 BOOL MakeRectangle2D(TComplexCurve& cplCurve) const; // 圆形二维绘制 BOOL MakeCircle2D(TComplexCurve& cplCurve) const; // 二维HorzView // 二维单线 BOOL MakeHSingleLine2D(TComplexCurve& cplCurve) const; // 二维双线开口 BOOL MakeHOpenDbLine2D(TComplexCurve& cplCurve) const; // 二维双线封口 BOOL MakeHCloseDbLine2D(TComplexCurve& cplCurve) const; // 二维三线 BOOL MakeHCloseTrLine2D(TComplexCurve& cplCurve) const; //任意角度 BOOL MakeAnyAngle2D(TComplexCurve& cplCurve, int nType = 0) const; // 圆形法兰倾斜二维图形 BOOL MakeCirInclineLine2D(TComplexCurve& cplCurve, int nType = 0) const; // 得到倾斜法兰二维图形的圆弧点 BOOL GetInclineAnglePts(AcGePoint3dArray &arpts, AcGePoint3dArray &arpts1) const; // 类似风管同名函数,得到法兰管件的四个点Lixl add void GetFourKeyPoints( AcGePoint3dArray &ptArr ) const; // 三维 // 矩形口 void MakeRectangle3D(XExplodeDraw &mode) const; // 圆形口 void MakeCircle3D(XExplodeDraw &mode) const; // GetFaces // 矩形 BOOL MakeRectangleFaces(AcDbVoidPtrArray& arFaces); // 圆形 BOOL MakeCircleFaces(AcDbVoidPtrArray& arFaces); // 单线 BOOL MakeSigleLineFaces(AcDbVoidPtrArray& arFaces); // 多线 BOOL MakeMultiLineFaces(AcDbVoidPtrArray& arFaces); // PolyCurve // 矩形 AcDbPolyline* MakeRectanglePolyCurve() const; // 圆形 AcDbPolyline* MakeCirclePolyCurve() const; // 单线 AcDbPolyline* MakeSingleLinePolyCurve() const; // 多线 AcDbPolyline* MakeMultiLinePolyCurve() const; // 辅助构建决定遮挡面, pt1, pt2, pt3分别为面上不同三点,vtNormal为法向,dEle返回距原点高度 AcGePlane GetHidePlane(AcGePoint3d pt1, AcGePoint3d pt2, AcGePoint3d pt3, const AcGeVector3d vtNormal, double &dEle) const; // 以ucsZ基准制作标准面,ptOnPlan过面上的点 AcGePlane GetStdPrjPlan( const AcGePoint3d &ptOnPlan ) const; BOOL GetAnyAnglePts(AcGePoint3dArray &arpts, AcGePoint3dArray &arpts1) const; // 管件自由移动处理 Acad::ErrorStatus MoveGripRandom(TDb::Position ePos, const AcGeVector3d& offset ); // 是否在连接的风管内移动, 没有连接风管也返回FALSE BOOL IsMovedWithInDuct(const AcGeVector3d &vtOffset); }; #endif // !defined(AFX_THIMPHVACFLANGE_H__)