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

453 lines
20 KiB
C++

#ifndef _TEImpCabTee_H__
#define _TEImpCabTee_H__
#if _MSC_VER > 1000
#pragma once
#endif
#include "TImpSpecFitting.h"
class TEImpCabTee : public TImpSpecFitting
{
public:
TEImpCabTee();
virtual ~TEImpCabTee();
public:
// 接口描述对象
virtual int GetInterfaceCount() const;
virtual BOOL GetInterface(int nIndex,TInterface& pipeInterface) const;
virtual BOOL GetInterface(const AcGePoint3d& ptCon,TInterface& pipeInterface) const;
virtual BOOL HasInterface(const AcGePoint3d& ptCon,const AcGeVector3d& vtDir);
// 建立接口关联关系
virtual BOOL SetInterfaceRelation(const AcGePoint3d& ptConnect,const AcDbObjectId& idConnect);
// 移除接口关联关系
virtual BOOL RemoveInterfaceRelation(const AcGePoint3d& ptConnect,const AcDbObjectId& idConnect);
// 接口更改通知
virtual BOOL NotifyInterfaceToModify(const TInterfaceModifyMsg& iModiMsg,TInterfaceModifyMsgs& iModiMsgs);
virtual TDb::Position ExplainGripIndex(int nIndex) const;
virtual void GetKindName(CString& sName);
//获取三维的壳对象
virtual int GetXBaseShell(TXShell& xShell);
//获取体的范围方块
virtual int GetBodyBox(AcDbExtents& ext);
virtual CString GetXml() const;
virtual CString GetXml(const AcGeMatrix3d& mat) const;
// add by 2011.02.21 剖切功能 注意 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;
public:
virtual BOOL MakeCurves(TComplexCurve& cplCurve) const;
virtual BOOL GetCurvesInSide(TComplexCurve& compCurve) const;
virtual AcDbPolyline* MakePolyCurve() const;
virtual BOOL MakePolyCurveFaces(AcDbVoidPtrArray& arFaces);
BOOL NoneConectLineIfNeed(TComplexCurve& cplCurve) const;
virtual void GetTips(CMapStringToString& mapLable2Tip) const;
public:
//{{AFX_ARX_METHODS(TDbImpCabElbow)
virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &mode) const;
virtual Acad::ErrorStatus ExplodeOrDraw3d(XExplodeDraw &mode) const;
virtual Acad::ErrorStatus transformBy(const AcGeMatrix3d& xform);
virtual Acad::ErrorStatus moveStretchPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
virtual Acad::ErrorStatus moveGripPointsAt(const AcDbIntArray& indices,
const AcGeVector3d& offset);
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 void list() const;
virtual Acad::ErrorStatus getClassID(CLSID* pClsid) const;
//}}AFX_ARX_METHODS
protected:
static void FreeBuffer(AcDbVoidPtrArray& arCurves);
// 夹点移动消息处理
BOOL OnMoveGripPointMsgNotify(const TInterfaceModifyMsg& iModiMsg,TInterfaceModifyMsgs& iModiMsgs);
// 对象移动消息处理
BOOL OnTransformByMsgNotify(const TInterfaceModifyMsg& iModiMsg,TInterfaceModifyMsgs& iModiMsgs);
// 尺寸调整消息处理
BOOL OnSizeMsgNotify(const TInterfaceModifyMsg& iModiMsg,TInterfaceModifyMsgs& iModiMsgs);
void GetEqualRTVExtents(DList<XPoly2D>& polyLst) const;
void GetEqualTSideVExtents(DList<XPoly2D>& polyLst) const;
void GetEqualTopSideVExtents(DList<XPoly2D>& polyLst) const;
void GetEqualRMidVExtents(DList<XPoly2D>& polyLst) const;
// 下角垂直等径三通 add by wzh 2012/10/16 null
void GetEqualRBAngVExtents(DList<XPoly2D>& polyLst) const;
private:
Acad::ErrorStatus OnCEqualRMoveGripPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset);
// 获取垂足点
BOOL GetVerticalFootPoint(const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
AcGePoint3d& ptVerFoot) const;
BOOL GetTeeMidLine(TComplexCurve& compCurve) const;
// 获取最近点
BOOL GetNearestPoint(const AcGePoint3d& pickPoint,
AcGePoint3d& ptNear) const;
// 槽式水平等径
void EqualHVMakeCurvesNor(TComplexCurve& cplCurve,int& nNum) const;
void EqualHVMakeCurvesNorZ(TComplexCurve& cplCurve,int& nNum) const;
void EqualHMakeCurvesNorY(TComplexCurve& cplCurve,int& nNum) const;
void EqualHMakeCurvesNorX(TComplexCurve& cplCurve,int& nNum) const;
void EqualHVMakeCurvesIgnore(TComplexCurve& cplCurve,int& nNum) const; // 斜向水平等径三通 add by wzh 2012/11/12
// 槽式上垂直等径
void EqualUpVMakeCurvesNor(TComplexCurve& cplCurve,int& nNum) const;
void EqualUpVMakeCurvesNorX(TComplexCurve& cplCurve,int& nNum) const;
void EqualUpVMakeCurvesNorZ(TComplexCurve& cplCurve,int& nNum) const;
void EqualUpVMakeCurvesNorY(TComplexCurve& cplCurve,int& nNum) const;
// 槽式下垂直等径
void EqualBotVMakeCurvesNor(TComplexCurve& cplCurve,int& nNum) const;
void EqualBotVMakeCurvesNorX(TComplexCurve& cplCurve,int& nNum) const;
void EqualBotVMakeCurvesNorZ(TComplexCurve& cplCurve,int& nNum) const;
// 槽式上边垂直等径
void EqualTopSideVMakeCurvesNor(TComplexCurve& cplCurve,int& nNum) const;
void EqualTopSideVMakeCurvesNorZ(TComplexCurve& cplCurve,int& nNum) const;
void EqualTopSideVMakeCurvesNorX(TComplexCurve& cplCurve,int& nNum) const;
void EqualTopSideVMakeCurvesNorY(TComplexCurve& cplCurve,int& nNum) const;
// 槽式下边垂直等径三通
void EqualDSideVMakeCurvesNor(TComplexCurve& cplCurve,int& nNum) const;
void EqualDSideVMakeCurvesNorZ(TComplexCurve& cplCurve,int& nNum) const;
void EqualDSideVMakeCurvesNorX(TComplexCurve& cplCurve,int& nNum) const;
void EqualDSideVMakeCurvesNorY(TComplexCurve& cplCurve,int& nNum) const;
// 槽式上边中间垂直等径
void EqualUpMidVMakeCurvesNor(TComplexCurve& cplCurve,int& nNum) const;
void EqualUpMidVMakeCurvesNorZ(TComplexCurve& cplCurve,int& nNum) const;
void EqualUpMidVMakeCurvesNorX(TComplexCurve& cplCurve,int& nNum) const;
void EqualUpOrBMidVMakeCurvesNorY(TComplexCurve& cplCurve,int& nNum) const;
// 槽式下边中间垂直等径
void EqualBMidVMakeCurvesNor(TComplexCurve& cplCurve,int& nNum) const;
void EqualBMidVMakeCurvesNorZ(TComplexCurve& cplCurve,int& nNum) const;
void EqualBMidVMakeCurvesNorX(TComplexCurve& cplCurve,int& nNum) const;
// 槽式上角垂直等径三通 2012/10/23 add by wzh NULL
void EqualUpAngleVMakeCurvesNor(TComplexCurve& cplCurve,int& nNum) const;
void EqualUpAngleVMakeCurvesNorZ(TComplexCurve& cplCurve,int& nNum) const;
void EqualUpAngleVMakeCurvesNorX(TComplexCurve& cplCurve,int& nNum) const;
void EqualUpAngleVMakeCurvesNorY(TComplexCurve& cplCurve,int& nNum) const;
// 槽式下角垂直等径三通 2012/10/23 add by wzh
void EqualDAngleVMakeCurvesNor(TComplexCurve& cplCurve,int& nNum) const;
void EqualDAngleVMakeCurvesNorZ(TComplexCurve& cplCurve,int& nNum) const;
void EqualDAngleVMakeCurvesNorX(TComplexCurve& cplCurve,int& nNum) const;
void EqualDAngleVMakeCurvesNorY(TComplexCurve& cplCurve,int& nNum) const;
Acad::ErrorStatus ExplodeOrDraw3dOfP(XExplodeDraw &mode) const;
Acad::ErrorStatus ExplodeOrDraw3dOfC(XExplodeDraw &mode) const;
Acad::ErrorStatus ExplodeOrDraw3dOfT(XExplodeDraw &mode) const;
// 三通绘制
// 槽式
void EqualRHVExplodeOrDraw3d(XExplodeDraw &mode) const; // 槽式 水平垂直等径三通
void EqualRHIgnoreExplodeOrDraw3d(XExplodeDraw &mode) const; // 槽式 斜向水平等径三通 2012/11/12 add by wzh
void EqualTSideVExplodeOrDraw3d(XExplodeDraw &mode) const; // 槽式 上边垂直等径三通
void EqualDSideVExplodeOrDraw3d(XExplodeDraw &mode) const; // 槽式 下边垂直等径三通
void EqualRTVExplodeOrDraw3d(XExplodeDraw &mode) const; // 槽式 上垂直等径三通
void EqualRBVExplodeOrDraw3d(XExplodeDraw &mode) const; // 槽式 下垂直等径三通
void EqualTopSideVExplodeOrDraw3d(XExplodeDraw &mode) const; // 槽式 上边中间垂直等径三通
void EqualRMidVExplodeOrDraw3d(XExplodeDraw &mode) const; // 槽式 下边中间垂直等径三通
void EqualRTAngleVExplodeOrDraw3d(XExplodeDraw &mode) const; // 槽式 上角垂直等径三通 add by wzh 2012-10-23 NULL
void EqualRBAngleVExplodeOrDraw3d(XExplodeDraw &mode) const; // 槽式 下角垂直等径三通 add by wzh 2012-10-23
// 梯式
void EqualRHVExplodeOrDraw3dOfT(XExplodeDraw &mode) const; // 梯式 水平等径
void EqualRHIgnoreExplodeOrDraw3dOfT(XExplodeDraw &mode) const; // 梯式 斜向水平等径三通 2012/11/12 add by wzh
void EqualRTVExplodeOrDraw3dOfT(XExplodeDraw &mode) const; // 梯式 上垂直等径三通
void EqualRBVExplodeOrDraw3dOfT(XExplodeDraw &mode) const; // 梯式 下垂直等径三通
void EqualTopSideVExplodeOrDraw3dOfT(XExplodeDraw &mode) const; // 梯式 上边垂直等径三通
void EqualDSideVExplodeOrDraw3dOfT(XExplodeDraw &mode) const; // 梯式 下边垂直等径三通
void EqualTSideVExplodeOrDraw3dOfT(XExplodeDraw &mode) const; // 梯式 上边中间垂直等径三通
void EqualRMidVExplodeOrDraw3dOfT(XExplodeDraw &mode) const; // 梯式 下边中间垂直等径三通
void EqualRTAngleVExplodeOrDraw3dOfT(XExplodeDraw &mode) const; // 梯式 上角垂直等径三通 add by wzh 2012-10-23 NULL
void EqualRBAngleVExplodeOrDraw3dOfT(XExplodeDraw &mode) const; // 梯式 下角垂直等径三通 add by wzh 2012-10-23 NULL
//////////
void DrawCube(XExplodeDraw &mode,const AcGeVector3d &vtDir, const AcGePoint3dArray &ptArr, double dThick) const;
// MakePolyCurve
void MakePolyCurveOfHEqlR(AcDbPolyline*& pPl) const; // 槽式 水平等径
void MakePolyCurveOfUMidEqlR(AcDbPolyline*& pPl) const; // 槽式 上边中间垂直等径三通
void MakePolyCurveOfBMidEqlR(AcDbPolyline*& pPl) const; // 槽式 下边中间垂直等径三通
void MakePolyCurveOfTVerEqlR(AcDbPolyline*& pPl) const; // 槽式 上垂直等径三通
void MakePolyCurveOfBVerEqlR(AcDbPolyline*& pPl) const; // 槽式 下垂直等径三通
void MakePolyCurveOfTSidEqlR(AcDbPolyline*& pPl) const; // 槽式 下边垂直等径三通
void MakePolyCurveOfBSidEqlR(AcDbPolyline*& pPl) const; // 槽式 上边垂直等径三通
void MakePolyCurveOfUAngEquR(AcDbPolyline*& pPl) const; // 槽式 上角垂直等径三通 add by wzh 2012-10-23 NULL
void MakePolyCurveOfBAngEquR(AcDbPolyline*& pPl) const; // 槽式 下角垂直等径三通 add by wzh 2012-10-23
// MakePolyCurveFaces
void MakePolyCurveFacesOfHEqlR(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfHEqlRXY(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfHEqlRZ(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfHEqlRIgnore(AcDbVoidPtrArray& arFaces); // 斜向水平等径三通 add by wzh 2012/11/12
void MakePolyCurveFacesOfUMidEqlR(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfUMidEqlRX(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfUMidEqlRY(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfUMidEqlRZ(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfBMidEqlR(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfBMidEqlRX(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfBMidEqlRY(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfBMidEqlRZ(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfTVerEqlR(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfTVerEqlRXY(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfTVerEqlRZ(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfBVerEqlR(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfBVerEqlRXY(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfBVerEqlRZ(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfTSidEqlR(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfTSidEqlRX(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfTSidEqlRY(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfTSidEqlRZ(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfBSidEqlR(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfBSidEqlRX(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfBSidEqlRY(AcDbVoidPtrArray& arFaces);
// 上角垂直等径三通 add by wzh 2012-10-23 NULL
void MakePolyCurveFacesOfUAngEquR(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfUAngEquRX(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfUAngEquRY(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfUAngEquRZ(AcDbVoidPtrArray& arFaces);
// 下角垂直等径三通 add by wzh 2012-10-23
void MakePolyCurveFacesOfBAngEquR(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfBAngEquRX(AcDbVoidPtrArray& arFaces);//?
void MakePolyCurveFacesOfBAngEquRY(AcDbVoidPtrArray& arFaces);
void MakePolyCurveFacesOfBAngEquRZ(AcDbVoidPtrArray& arFaces);
//GetOsnapPoints
void GetOsnapPointsOfHEqlR(AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
void GetOsnapPointsOfUMidEqlR(AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
void GetOsnapPointsOfBMidEqlR(AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
void GetOsnapPointsOfTVerEqlR(AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
void GetOsnapPointsOfBVerEqlR(AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
void GetOsnapPointsOfTSidEqlR(AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
void GetOsnapPointsOfBSidEqlR(AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
void GetOsnapPointsOfUAngEqlR(AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const; // 上角垂直等径三通 add by wzh 2012-10-23 NULL
void GetOsnapPointsOfBAngEqlR(AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const; // 下角垂直等径三通 add by wzh 2012-10-23o
//GetCurvesInSide
void GetCurvesInSideOfHEqlR(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfHEqlRX(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfHEqlRY(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfHEqlRZ(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfUMidEqlR(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfUMidEqlRX(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfUMidEqlRY(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfUMidEqlRZ(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfBMidEqlR(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfBMidEqlRX(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfBMidEqlRZ(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfTVerEqlR(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfTVerEqlRX(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfTVerEqlRY(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfTVerEqlRZ(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfBVerEqlR(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfBVerEqlRX(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfBVerEqlRY(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfBVerEqlRZ(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfTSidEqlR(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfTSidEqlRX(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfTSidEqlRY(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfTSidEqlRZ(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfBSidEqlR(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfBSidEqlRX(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfBSidEqlRY(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfBSidEqlRZ(TComplexCurve& cplCurve) const;
// 上角垂直等径三通 add by wzh 2012-10-23 NULL
void GetCurvesInSideOfUAngEqlR(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfUAngEqlRX(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfUAngEqlRY(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfUAngEqlRZ(TComplexCurve& cplCurve) const;
// 下角垂直等径三通 add by wzh 2012-10-23o
void GetCurvesInSideOfBAngEqlR(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfBAngEqlRX(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfBAngEqlRY(TComplexCurve& cplCurve) const;
void GetCurvesInSideOfBAngEqlRZ(TComplexCurve& cplCurve) const;
private:
void FormatPolyline(AcDbPolyline*& pPl,TComplexCurve& cplCurve,int nNum) const;
void FormatArcPolyline(AcDbPolyline*& pPl,TComplexCurve& cplCurve,int nNum) const;
AcDbFace* CreateAcDbFace(const AcGePoint3d& pt1,
const AcGePoint3d& pt2,
const AcGePoint3d& pt3,
const AcGePoint3d& pt4);
BOOL CreateAcDbArcFace(AcDbVoidPtrArray& arFaces,const AcGePoint3d& ptSta,const AcGePoint3d& ptEnd,const AcGePoint3d& ptMid);
void CreateFaceByMesh(XExplodeDraw &mode,AcGePoint3d& pt1,AcGePoint3d& pt2,AcGePoint3d& pt3,AcGePoint3d& pt4) const;
// 计算曲线中点
AcGePoint3d GetPolyCurMidPoint(const AcGePoint3d& pt1,const AcGePoint3d& pt2,const AcGePoint3d& ptGeM) const;
//
AcGePoint3d GetPolyCurMidPoint(const AcGePoint3d& pt1,const AcGePoint3d& pt2,const AcGePoint3d& ptBase, double dAngle) const;
// 计算外切于两等距线的圆心, 用于拐角为单弧/双弧的斜向三通/四通 2012/11/16 add by wzh
AcGePoint3d GetPolyCurveCentre(const AcGePoint3d& pt1,const AcGePoint3d& pt2,const AcGePoint3d& ptBase,double dAngle) const;
BOOL GetIndexOfPointIsOn(TComplexCurve& cplCurv,const AcGePoint3d& ptOn,int& nIndex) const;
CString GetCurrentTypeName() const;
void AppendAcDbExtents(std::vector<AcGePoint3d>& vctpt,AcDbExtents& ext);
private:
// 点
int GetBodyBoxOfTHorEqualR(AcDbExtents& ext);
int GetBodyBoxOfTVerEqualR(AcDbExtents& ext);
int GetBodyBoxOfTDVerEqualR(AcDbExtents& ext);
int GetBodyBoxOfTUSMVEqualR(AcDbExtents& ext);
int GetBodyBoxOfTDMVEqualR(AcDbExtents& ext);
int GetBodyBoxOfTDSVEqualR(AcDbExtents& ext);
int GetBodyBoxOfTUSVEqualR(AcDbExtents& ext);
int GetBodyBoxOfTUAVEqualR(AcDbExtents& ext); // 上角垂直等径三通 add by wzh 2012-10-23 null
int GetBodyBoxOfTBAVEqualR(AcDbExtents& ext); // 下角垂直等径三通 add by wzh 2012-10-23
// 外壳
int GetXBaseShellOfTHorEqualR(TXShell& xShell);
int GetXBaseShellOfTVerEqualR(TXShell& xShell);
int GetXBaseShellOfTDVerEqualR(TXShell& xShell);
int GetXBaseShellOfTUSMVerEqualR(TXShell& xShell);
int GetXBaseShellOfTDSMVerEqualR(TXShell& xShell);
int GetXBaseShellOfTDSVerEqualR(TXShell& xShell);
int GetXBaseShellOfTUSVerEqualR(TXShell& xShell);
int GetXBaseShellOfTUAVerEqualR(TXShell& xShell); // 上角垂直等径三通 add by wzh 2012-10-23 null
int GetXBaseShellOfTBAVerEqualR(TXShell& xShell); // 下角垂直等径三通 add by wzh 2012-10-23
};
#endif //_TEImpCabTee_H__