Files
envi-code/SourceCode/Code2026/tg_shs/shs_pipebase/THImpHvacFlange.h
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

168 lines
6.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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<TObjSectionRecord>参数清空
virtual bool GetSection(const AcDbFace &face, const AcGeVector3d &vtPlaneSecDir,
std::vector<TObjSectionRecord> &sectionRecord, 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__)