376 lines
18 KiB
C++
376 lines
18 KiB
C++
// 暖通弯头实现类
|
||
//
|
||
// 弯头示意图:
|
||
// 水平放置: 垂直放置:
|
||
// ┏━━━━━━━━━━━┓ ┏━━━━━┓
|
||
// ┃ ┃ ┃ ④ ┃
|
||
// ┃ ┃ ┃ ┃
|
||
// ④①━━━━━━━━③ ┃ ┃ ① ┃
|
||
// ┃ ┃ ┃ ┃ ┃
|
||
// ┃ ┃ ┃ ┃ ③ ┃
|
||
// ┗━━━━━┓ ┃ ┃ ┣━━━━━┫
|
||
// ┃ ┃ ┃ ┃ ┃
|
||
// ┃ ┃ ┃ ┃ ┃
|
||
// ┃ ┃ ┃ ┃ ┃
|
||
// ┃ ┃ ┃ ┃ ┃
|
||
// ┗━━②━━┛ ┗━━②━━┛
|
||
// ⑤ ⑤
|
||
//
|
||
// 夹点说明:
|
||
// ①: 弯头左端移动点
|
||
// ②: 弯头下端移动点
|
||
// ③: 中心命令激活点
|
||
// ④: 左端命令激活点
|
||
// ⑤: 下端命令激活点
|
||
|
||
|
||
#ifndef __THIMPHVACELBOW_H__
|
||
#define __THIMPHVACELBOW_H__
|
||
|
||
#if _MSC_VER > 1000
|
||
#pragma once
|
||
#endif
|
||
|
||
#include "TImpSpecFitting.h"
|
||
|
||
class THImpHvacElbow : public TImpSpecFitting
|
||
{
|
||
public:
|
||
THImpHvacElbow();
|
||
virtual ~THImpHvacElbow();
|
||
|
||
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 RemoveInterfaceRelation(const AcGePoint3d& ptConnect,const AcDbObjectId& idConnect);
|
||
virtual BOOL NotifyInterfaceToModify(const TInterfaceModifyMsg& iModiMsg,TInterfaceModifyMsgs& iModiMsgs);
|
||
virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &dc) const;
|
||
virtual Acad::ErrorStatus ExplodeOrDraw3d(XExplodeDraw &dc) 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;
|
||
virtual AcGeVector3d THImpHvacElbow::normal() const;
|
||
//}}AFX_ARX_METHODS
|
||
|
||
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.17 剖切功能。 注意 GetSection内不应将std::vector<TObjSectionRecord>参数清空
|
||
virtual bool GetSection(const AcDbFace &face, const AcGeVector3d &vtPlaneSecDir,
|
||
std::vector<TObjSectionRecord> §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;
|
||
// 得到端线宽
|
||
double GetEndLineWidth() const;
|
||
//得到单线遮挡线宽
|
||
BOOL SetSingleDashWidth(double& dDiameterS,double& dDiameterE) const;
|
||
// 弯头是否水平放置
|
||
BOOL IsHorzAlignment() const;
|
||
// 弯头是否垂直放置
|
||
BOOL IsVertAlignment() const;
|
||
// 弯头是否倾斜放置
|
||
BOOL IsInclineAlignment() const;
|
||
|
||
// 是否是单线弯头
|
||
BOOL IsSingleLine() const;
|
||
BOOL HasBaseLine() const;
|
||
// 是否是弧形弯头
|
||
BOOL IsArcuate() 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);
|
||
|
||
// 内外圆弧
|
||
//三维绘制函数
|
||
void ExplodeOrDrawAllArcuate3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeAllArcuatePolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeAllArcuate2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeAllArcuatePolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 内外圆弧消声
|
||
//三维绘制函数
|
||
void ExplodeOrDrawAllArcWrap3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeAllArcWrapPolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeAllArcWrap2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeAllArcWrapPolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 消声弯头
|
||
//三维绘制函数
|
||
void ExplodeOrDrawAllArcInWrap3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeAllArcInWrapPolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeAllArcInWrap2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeAllArcInWrapPolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 分段拟合
|
||
//三维绘制函数
|
||
void ExplodeOrDrawSegmental3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeSegmentalPolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeSegmental2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建分段拟合倾斜二维图形
|
||
BOOL MakeSegmental2DInc(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeSegmentalPolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 内斜线
|
||
//三维绘制函数
|
||
void ExplodeOrDrawIncline3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeInclinePolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeIncline2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeInclinePolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 内斜线消声
|
||
//三维绘制函数
|
||
void ExplodeOrDrawInclineWrap3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeInclineWrapPolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeInclineWrap2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeInclineWrapPolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 内斜线隔板消声
|
||
//三维绘制函数
|
||
void ExplodeOrDrawInclineBoard3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeInclineBoardPolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeInclineBoard2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeInclineBoardPolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 内斜线导流
|
||
//三维绘制函数
|
||
void ExplodeOrDrawInclineLead3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeInclineLeadPolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeInclineLead2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeInclineLeadPolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 内弧线
|
||
//三维绘制函数
|
||
void ExplodeOrDrawArcuate3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeArcuatePolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeArcuate2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeArcuatePolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 内弧线消声
|
||
//三维绘制函数
|
||
void ExplodeOrDrawArcuateWrap3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeArcuateWrapPolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeArcuateWrap2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeArcuateWrapPolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 内弧线隔板消声
|
||
//三维绘制函数
|
||
void ExplodeOrDrawArcuateBoard3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeArcuateBoardPolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeArcuateBoard2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeArcuateBoardPolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 内弧线筛板消声
|
||
//三维绘制函数
|
||
void ExplodeOrDrawArcuateSieve3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeArcuateSievePolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeArcuateSieve2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeArcuateSievePolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 内弧线导流
|
||
//三维绘制函数
|
||
void ExplodeOrDrawArcuateLead3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeArcuateLeadPolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeArcuateLead2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeArcuateLeadPolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 内外直角
|
||
//三维绘制函数
|
||
void ExplodeOrDrawAllOrtho3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeAllOrthoPolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeAllOrtho2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeAllOrthoPolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 内外直角消声
|
||
//三维绘制函数
|
||
void ExplodeOrDrawOrthoWrap3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeOrthoWrapPolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeOrthoWrap2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeOrthoWrapPolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
// 内外直角导流
|
||
//三维绘制函数
|
||
void ExplodeOrDrawOrthoLead3d(XExplodeDraw &mode) const;
|
||
// 构建外轮廓
|
||
AcDbPolyline* MakeOrthoLeadPolyCurve() const;
|
||
// 构建二维图形
|
||
BOOL MakeOrthoLead2DCurves(TComplexCurve& cplCurve,int &nType) const;
|
||
// 构建外轮廓所围平面的3DFace组
|
||
BOOL MakeOrthoLeadPolyCurveFaces(AcDbVoidPtrArray& arFaces);
|
||
|
||
|
||
Acad::ErrorStatus OnCHorEqualRMoveGripPointsAt(const AcDbIntArray& indices,const AcGeVector3d& offset);
|
||
|
||
|
||
//AllArcuate的辅助函数
|
||
//三维模型
|
||
void ExplodeOrDrawAllArcuate3dRec(XExplodeDraw &mode) const;
|
||
void ExplodeOrDrawAllArcuate3dCir(XExplodeDraw &mode) const;
|
||
void GetPtsAllArcuate3dRec(AcGePoint3dArray &arptSides,AcGePoint3d & pt,AcGeVector3d & vtStr,AcGeVector3d & vtNormal,double& dWidth,double& dThick) const;
|
||
//求弯头的圆心,即开始点终止点,垂直切线方向的交点。
|
||
BOOL GetIntersectWith(AcGePoint3d &pt1,AcGePoint3d &pt2,AcGeVector3d &vt1,AcGeVector3d &vt2,AcGePoint3d &ptIntersect) const;
|
||
//求弯头圆弧上的中心点。
|
||
BOOL GetPtOnArc(AcGePoint3d &ptStart,AcGePoint3d &ptCorner,AcGePoint3d &ptEnd,double &dPlusEdge) const;
|
||
|
||
//BEGIN=======================================================================================================================================================================
|
||
//扩展后的计算弯头圆弧上的点
|
||
BOOL GetPtOnArcExt(AcGePoint3d &ptStartArc, const AcGePoint3d &ptCorStart, AcGePoint3d &ptEndArc, const AcGePoint3d &ptCorEnd, AcGePoint3d &ptOnArcOut, double &dPlusEdge) const;
|
||
//修改时间:2009-11-19
|
||
//修改人 :王亚东
|
||
//修改原因:对GetPtOnArc进行扩展,用于计算中心线偏离情况下的圆弧上点
|
||
//END=========================================================================================================================================================================
|
||
|
||
//2D轮廓线
|
||
// ptStart,ptMid,ptEnd表示的一段曲线,向ptOnPlan投影,得到的曲线上的点放在arPt中返回,
|
||
BOOL GetPtsOnHidePlanFromInc(AcGePoint3d &ptStart, AcGePoint3d &ptMid, AcGePoint3d &ptEnd, AcGePoint3d &ptOnPlan, AcGePoint3dArray &arPt) const;
|
||
BOOL GetPrjPts(AcGePoint3dArray &arPtsU, AcGePoint3dArray &arPtsD) const;
|
||
BOOL DrawAllArcuate2DInc(TComplexCurve& cplCurve,int &nType) const;
|
||
BOOL GetAllArcuateCplCurveInc(TComplexCurve& cplCurve,int &nType,AcGePoint3d& ptStart, AcGePoint3d& ptCorner,AcGePoint3d& ptEnd,double& dPlusEdge,double& dDiameterS,double& dDiameterE,int& nWrapType) const;
|
||
BOOL DrawAllArcuate2DHor(TComplexCurve& cplCurve,int &nType) const;
|
||
BOOL DrawAllArcuate2DVer(TComplexCurve& cplCurve,int &nType) const;
|
||
BOOL GetAllArcuateCplCurveHor(TComplexCurve& cplCurve,int &nType,AcGePoint3d& ptStart, AcGePoint3d& ptCorner,AcGePoint3d& ptEnd,double& dPlusEdge,double& dDiameterS,double& dDiameterE,int& nWrapType) const;
|
||
BOOL GetAllArcuateCplCurveVerRec(TComplexCurve& cplCurve,int &nType,AcGePoint3d& ptStart, AcGePoint3d& ptCorner,AcGePoint3d& ptEnd,double& dPlusEdge,double& dDiameterS,double& dDiameterE,double& dThick, double& dEndThick) const; //修改时间:2009-12-29 修改人:王亚东 修改原因:添加方口弯头末端厚度参数
|
||
BOOL GetAllArcuateCplCurveVerRecForOffset(TComplexCurve& cplCurve, int &nType) const;
|
||
BOOL GetAllArcuateCplCurveVerCir(TComplexCurve& cplCurve,int &nType,AcGePoint3d& ptStart, AcGePoint3d& ptCorner,AcGePoint3d& ptEnd,double& dPlusEdge,double& dDiameterS,double& dDiameterE) const;
|
||
BOOL GetInclineCplCurveHor(TComplexCurve& cplCurve,int &nType,AcGePoint3d& ptStart, AcGePoint3d& ptCorner,AcGePoint3d& ptEnd,double& dPlusEdge,double& dDiameterS,double& dDiameterE) const;
|
||
BOOL GetPtsSegmentalHor(AcGePoint3dArray& pts) const;
|
||
BOOL GetArcuateCplCurveHor(TComplexCurve& cplCurve,int &nType,AcGePoint3d& ptStart, AcGePoint3d& ptCorner,AcGePoint3d& ptEnd,double& dPlusEdge,double& dDiameterS,double& dDiameterE) const;
|
||
BOOL GetAllOrthoCplCurveHor(TComplexCurve& cplCurve,int &nType,AcGePoint3d& ptStart, AcGePoint3d& ptCorner,AcGePoint3d& ptEnd,double& dPlusEdge,double& dDiameterS,double& dDiameterE) const;
|
||
|
||
//2DPolyline
|
||
AcDbPolyline* DrawAllArcuatePolyHorRec(AcGePoint3d& ptStart, AcGePoint3d& ptCorner,AcGePoint3d& ptEnd,double& dPlusEdge,double& dDiameterS,double& dDiameterE) const;
|
||
|
||
//BEGIN==================================================================================================================================================
|
||
AcDbPolyline* DrawAllArcuatePolyHorCir(AcGePoint3d& ptStart, AcGePoint3d& ptCorner,AcGePoint3d& ptEnd,double& dPlusEdge,double& dDiameterS, double& dDiameterE) const;
|
||
//END====================================================================================================================================================
|
||
AcDbPolyline* DrawAllArcuatePolyIncCir(AcGePoint3d& ptStart, AcGePoint3d& ptCorner,AcGePoint3d& ptEnd,double& dPlusEdge,double& dDiameterS, double& dDiameterE) const;
|
||
//BEGIN=======================================================================
|
||
//内外圆弧和非内外圆弧的方口弯头立式消影多段线生成函数
|
||
AcDbPolyline* DrawAllArcuatePolyVerRec(AcGePoint3d& ptStart, AcGePoint3d& ptCorner, AcGePoint3d& ptEnd, double& dPlusEdge, double& dDiameterS, double& dDiameterE, double& dThick, double &dEndThick) const;
|
||
AcDbPolyline* DrawNotAllArcuatePolyVerRec(AcGePoint3d& ptStart, AcGePoint3d& ptCorner, AcGePoint3d& ptEnd, double& dPlusEdge, double& dDiameterS, double& dDiameterE, double& dThick, double &dEndThick) const;
|
||
//修改时间:2010-1-6
|
||
//修改人 :王亚东
|
||
//修改原因:支持方口变径弯头的立式消影多段线生成
|
||
//END=========================================================================
|
||
|
||
AcDbPolyline* DrawAllArcuatePolyVerCir(AcGePoint3d& ptStart, AcGePoint3d& ptCorner,AcGePoint3d& ptEnd,double& dDiameterS, double& dDiameterE) const;
|
||
AcDbPolyline* DrawInclinePolyCurveHor(AcGePoint3d& ptStart, AcGePoint3d& ptCorner,AcGePoint3d& ptEnd,double& dPlusEdge,double& dDiameterS,double& dDiameterE) const;
|
||
AcDbPolyline* DrawArcuatePolyCurveHor(AcGePoint3d& ptStart, AcGePoint3d& ptCorner,AcGePoint3d& ptEnd,double& dPlusEdge,double& dDiameterS,double& dDiameterE) const;
|
||
AcDbPolyline* DrawAllOrthoPolyCurveHor(AcGePoint3d& ptStart, AcGePoint3d& ptCorner,AcGePoint3d& ptEnd,double& dPlusEdge,double& dDiameterS,double& dDiameterE) const;
|
||
//Polyline画弧,圆弧上位于起点与终点之间的一点,半径,开始点,终止点,线宽,Polyline开始index
|
||
BOOL CreatePlElbow(AcDbPolyline *p,AcGePoint3d& pt,double dradius,AcGePoint3d& pt1,AcGePoint3d& pt2,double dWidth,int index) const;
|
||
double AngleTo(AcGePoint3d pt,AcGePoint3d pt1,AcGePoint3d pt2) const;
|
||
Adesk::Boolean IsClockWise(AcGePoint3d pt1 ,AcGePoint3d pt2,AcGePoint3d pt3) const;
|
||
//Face面
|
||
BOOL DrawAllArcuatePolyCurveFacesHor(AcDbVoidPtrArray& arFaces);
|
||
BOOL DrawAllArcuatePolyCurveFacesVer(AcDbVoidPtrArray& arFaces);
|
||
BOOL DrawAllArcuatePolyCurveFacesInc(AcDbVoidPtrArray& arFaces);
|
||
BOOL GetPtsAllArcuateCurveFacesHor(AcGePoint3dArray& arpts,AcGePoint3d &ptStart,AcGePoint3d &ptCorner,AcGePoint3d &ptEnd,double& dDiameterS,double& dDiameterE,double &dPlusEdge) const;
|
||
void GetArcPoint(AcDbPolyline &polyLine, AcGePoint3dArray &ptArcArr) const;
|
||
BOOL MergerPline(AcDbPolyline* pPl,AcDbPolyline* pSrc) const;
|
||
void GetSideFace(TXShell& xShell, AcGePoint3d ptStart, double dStartWidth);
|
||
|
||
// 智能拖动处理发送消息
|
||
Acad::ErrorStatus MoveGripRandom(TDb::Position ePos, const AcGeVector3d& offset );
|
||
|
||
// 生成3D轮廓PL线 iFlag: 1 顶面 2 底面 3 内弧 4 外弧
|
||
BOOL Make3DOutline(TGGePoly2D& poly, int iFlag) const;
|
||
BOOL MakeRect3DOutline(TGGePoly2D& poly, int iFlag) const; // 方形
|
||
BOOL MakeCirc3DOutline(TGGePoly2D& poly, int iFlag) const; // 圆形
|
||
|
||
// 得到弯头端口圆截面投影下来的半个椭圆面(椭圆面向外)Lixl
|
||
BOOL GetEllipseFaces(AcDbVoidPtrArray& arFaces) const;
|
||
};
|
||
|
||
#endif //__THIMPHVACELBOW_H__
|