2026-10-04 00:04:20 +08:00
|
|
|
|
#if !defined(AFX_THIMPHVACFLANGE_H__)
|
2026-09-28 15:28:50 +08:00
|
|
|
|
#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
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 处理实体删除后操作
|
2026-09-28 15:28:50 +08:00
|
|
|
|
virtual void OnSubErase(Adesk::Boolean erasing);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 用户自定义调用, 用于复制法兰预览位移时,删除接口。区别仅位移情况 090916
|
2026-09-28 15:28:50 +08:00
|
|
|
|
virtual LRESULT UserCall(long i,LPVOID pData);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
2026-10-04 00:04:20 +08:00
|
|
|
|
//获取三维的壳对象
|
2026-09-28 15:28:50 +08:00
|
|
|
|
virtual int GetXBaseShell(TXShell& xShell);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
//获取体的范围方块
|
2026-09-28 15:28:50 +08:00
|
|
|
|
virtual int GetBodyBox(AcDbExtents& ext);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// add by hh 2010-12-27 导出XML
|
2026-09-28 15:28:50 +08:00
|
|
|
|
// virtual CString GetXml() const;
|
|
|
|
|
|
virtual CString GetXml(const AcGeMatrix3d& mat) const;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// mcl add 2011.1.30 剖切功能。 注意 GetSection内不应将std::vector<TObjSectionRecord>参数清空
|
2026-09-28 15:28:50 +08:00
|
|
|
|
virtual bool GetSection(const AcDbFace &face, const AcGeVector3d &vtPlaneSecDir,
|
|
|
|
|
|
std::vector<TObjSectionRecord> §ionRecord, AcDbVoidPtrArray& arFillPtrs) const;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 剖切用,返回Z坐标最高、最低点
|
2026-09-28 15:28:50 +08:00
|
|
|
|
virtual Acad::ErrorStatus GetExtents(TADSGePoint3d &ptLow, TADSGePoint3d &ptUp) const;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// add by hh 2014-08-06 支持管件与水管遮挡
|
2026-09-28 15:28:50 +08:00
|
|
|
|
virtual Acad::ErrorStatus GetClipBoundary(TGGePoly2D& poly)const;
|
|
|
|
|
|
virtual bool IsMeClip() const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
virtual bool IsClipMe(const TEntityBase* pEnt=NULL)const;//ok是否被裁剪
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
|
|
|
|
|
private:
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 得到边线宽
|
2026-09-28 15:28:50 +08:00
|
|
|
|
double GetEdgeLineWidth() const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 得到中线宽
|
2026-09-28 15:28:50 +08:00
|
|
|
|
double GetCentLineWidth() const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 变径是否水平放置
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL IsHorzAlignment() const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 变径是否垂直放置
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL IsVertAlignment() const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 是否是单线变径
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL IsSingleLine() const;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 获取接口尺寸数据type,size,size1
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL GetInterfaceSizeData(int nIndex, TInterface& pipeInterface) const;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 夹点移动消息处理
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL OnMoveGripPointMsgNotify(const TInterfaceModifyMsg& iModiMsg, TInterfaceModifyMsgs& iModiMsgs);
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 对象移动消息处理
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL OnTransformMsgNotify(const TInterfaceModifyMsg& iModiMsg, TInterfaceModifyMsgs& iModiMsgs);
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 尺寸调整消息处理
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL OnSizeMsgNotify(const TInterfaceModifyMsg& iModiMsg, TInterfaceModifyMsgs& iModiMsgs);
|
|
|
|
|
|
Acad::ErrorStatus OnCHorEqualRMoveGripPointsAt(const AcDbIntArray& indices, const AcGeVector3d& offset);
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 二维VertView
|
|
|
|
|
|
// 矩形二维绘制
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL MakeRectangle2D(TComplexCurve& cplCurve) const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 圆形二维绘制
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL MakeCircle2D(TComplexCurve& cplCurve) const;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 二维HorzView
|
|
|
|
|
|
// 二维单线
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL MakeHSingleLine2D(TComplexCurve& cplCurve) const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 二维双线开口
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL MakeHOpenDbLine2D(TComplexCurve& cplCurve) const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 二维双线封口
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL MakeHCloseDbLine2D(TComplexCurve& cplCurve) const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 二维三线
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL MakeHCloseTrLine2D(TComplexCurve& cplCurve) const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
//任意角度
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL MakeAnyAngle2D(TComplexCurve& cplCurve, int nType = 0) const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 圆形法兰倾斜二维图形
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL MakeCirInclineLine2D(TComplexCurve& cplCurve, int nType = 0) const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 得到倾斜法兰二维图形的圆弧点
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL GetInclineAnglePts(AcGePoint3dArray &arpts, AcGePoint3dArray &arpts1) const;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 类似风管同名函数,得到法兰管件的四个点Lixl add
|
2026-09-28 15:28:50 +08:00
|
|
|
|
void GetFourKeyPoints( AcGePoint3dArray &ptArr ) const;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 三维
|
|
|
|
|
|
// 矩形口
|
2026-09-28 15:28:50 +08:00
|
|
|
|
void MakeRectangle3D(XExplodeDraw &mode) const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 圆形口
|
2026-09-28 15:28:50 +08:00
|
|
|
|
void MakeCircle3D(XExplodeDraw &mode) const;
|
|
|
|
|
|
|
|
|
|
|
|
// GetFaces
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 矩形
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL MakeRectangleFaces(AcDbVoidPtrArray& arFaces);
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 圆形
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL MakeCircleFaces(AcDbVoidPtrArray& arFaces);
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 单线
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL MakeSigleLineFaces(AcDbVoidPtrArray& arFaces);
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 多线
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL MakeMultiLineFaces(AcDbVoidPtrArray& arFaces);
|
|
|
|
|
|
|
|
|
|
|
|
// PolyCurve
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 矩形
|
2026-09-28 15:28:50 +08:00
|
|
|
|
AcDbPolyline* MakeRectanglePolyCurve() const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 圆形
|
2026-09-28 15:28:50 +08:00
|
|
|
|
AcDbPolyline* MakeCirclePolyCurve() const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 单线
|
2026-09-28 15:28:50 +08:00
|
|
|
|
AcDbPolyline* MakeSingleLinePolyCurve() const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 多线
|
2026-09-28 15:28:50 +08:00
|
|
|
|
AcDbPolyline* MakeMultiLinePolyCurve() const;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 辅助构建决定遮挡面, pt1, pt2, pt3分别为面上不同三点,vtNormal为法向,dEle返回距原点高度
|
2026-09-28 15:28:50 +08:00
|
|
|
|
AcGePlane GetHidePlane(AcGePoint3d pt1, AcGePoint3d pt2, AcGePoint3d pt3,
|
|
|
|
|
|
const AcGeVector3d vtNormal, double &dEle) const;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 以ucsZ基准制作标准面,ptOnPlan过面上的点
|
2026-09-28 15:28:50 +08:00
|
|
|
|
AcGePlane GetStdPrjPlan( const AcGePoint3d &ptOnPlan ) const;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL GetAnyAnglePts(AcGePoint3dArray &arpts, AcGePoint3dArray &arpts1) const;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 管件自由移动处理
|
2026-09-28 15:28:50 +08:00
|
|
|
|
Acad::ErrorStatus MoveGripRandom(TDb::Position ePos, const AcGeVector3d& offset );
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 是否在连接的风管内移动, 没有连接风管也返回FALSE
|
2026-09-28 15:28:50 +08:00
|
|
|
|
BOOL IsMovedWithInDuct(const AcGeVector3d &vtOffset);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif // !defined(AFX_THIMPHVACFLANGE_H__)
|