Files
envi-code/SourceCode/Code2026/tg_shs/inc/pipebase/TDbInterfacesObj.h
T
2026-09-28 15:28:50 +08:00

283 lines
9.0 KiB
C++

#if !defined(ARX__TDBINTERFACESOBJ_H__20080829_134414)
#define ARX__TDBINTERFACESOBJ_H__20080829_134414
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "TDbExtentsEdge.h"
#include "TInterface.h"
#include "TInterfaceModifyMsg.h"
#include "TXShell.h"
#pragma warning(disable: 4275 4251)
#ifdef _TCHPIPEBASE_
#define DLLIMPEXP __declspec(dllexport)
#else
#ifdef _TCHPIPEBASE_COM_
#define DLLIMPEXP
#else
#define DLLIMPEXP __declspec(dllimport)
#endif
#endif
#ifndef TCHPIPEBASE_DBXSERVICE
#define TCHPIPEBASE_DBXSERVICE "TCHPIPEBASE_DBXSERVICE"
#endif
class TDbXDataMap;
class DLLIMPEXP TDbInterfacesObj : public TDbCurveEntity
{
public:
DECLARE_TENTBASE();
ACRX_DECLARE_MEMBERS(TDbInterfacesObj);
TDbInterfacesObj();
virtual ~TDbInterfacesObj();
public:
// 接口描述对象
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 int GetInterfaceCount() const;
// 建立接口关联关系
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 TDbXDataMap* GetSpecialtyData();
//
// // 读的方式获取专业数据
// virtual TDbXDataMap* GetSpecialtyDataReadOnly() const;
// 统一法向量
virtual Acad::ErrorStatus setNormal(const AcGeVector3d& vtNorm);
virtual AcGeVector3d normal() const;
// 获取2维显示的所有曲线
virtual BOOL MakeCurves(TComplexCurve& cplCurve) const;
// 获取2维边界内显示的曲线
virtual BOOL GetCurvesInSide(TComplexCurve& compCurve) const;
// 获取2维显示的边界pl线
virtual AcDbPolyline* MakePolyCurve() const;
// 获取2维边界围城的面
virtual BOOL MakePolyCurveFaces(AcDbVoidPtrArray& arFaces);
// 获取对象类型名称 [es. 弯头--> TCH_EELBOW]
virtual void GetKindName(CString& sName);
// 添加自身被遮挡的高标高边界对象
virtual BOOL AddCoverEdge(AcDbObjectId& id,TComplexCurve& curEdge);
// 移除自身被遮挡的高标高边界对象
virtual BOOL RemoveCoverEdge(AcDbObjectId& id);
// 获取自身被遮挡的高标高对象
virtual BOOL GetCoverEdgeIds(AcDbObjectIdArray& arIds);
// 添加被自身遮挡的低标高对象
virtual BOOL AddIdsCoverByMe(AcDbObjectId& id);
// 取出被自身遮挡的低标高对象
virtual BOOL GetIdsCoverByMe(AcDbObjectIdArray& arByMeIds);
// 获取自身边界
virtual BOOL GetGeomExtentsEdge(TComplexCurve& crLoop);
// 设置虚线图层
virtual void SetDashLayer(AcDbObjectId idDash);
virtual AcDbObjectId DashLayer() const;
// 设置中心线图层
virtual void SetCenterLayer(AcDbObjectId idCen);
virtual AcDbObjectId CenterLayer() const;
// 更新传入对象的接口信息和关系
static BOOL UpdateRecInterface(const AcDbObjectIdArray& arids);
// 查询记录中接口信息
virtual BOOL FindInterfaceRec(const AcGePoint3d& ptConnect, TInterface& pipeInterface);
// 更新接口记录数据
virtual BOOL UpdateInterfaceRec(const AcGeMatrix3d& xform,AcGePoint3d* ppOld = NULL);
// 更新接口记录位置点
virtual BOOL UpdateInterfaceRec(const AcGePoint3d& ptGeOld,const AcGePoint3d& ptGeNew);
// 更新接口记录方向
virtual BOOL UpdateInterfaceRec(const AcGePoint3d& ptGeOld,const AcGeVector3d& vtDirNew);
// 更新遮挡显示
virtual BOOL UpdateCoverDisplay();
// 立即更新遮挡
virtual BOOL FlashCoverDisplay();
// 获取特定中点位置
virtual double GetElevation();
// // 数据存取
// virtual BOOL SetAt(LPCTSTR pszKey,TXData& XData);
//
// virtual BOOL GetAt(LPCTSTR pszKey,TXData& XData);
// 更新法向量
virtual void UpdateNormal(const AcGePoint3d& ptOld,const AcGePoint3d& ptNew);
// 解释夹点
virtual TDb::Position ExplainGripIndex(int nIndex) const;
// 夹点提示
virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const;
// 版本
virtual int GetFirstVersion()const;
// 对象查询
virtual void GetTips(DList<TObjInfoUnit> &lstInfo) const;
virtual void GetTips(CMapStringToString& mapLable2Tip) const;
//获取出图比例
virtual double GetPrintScale() const;
//设置出图比例
virtual void SetPrintScale(double scale);
//布局转角
virtual double GetLayoutRotationAngle() const;
//布局转角
virtual void SetLayoutRotationAngle(double dRot);
//子类对象格式刷支持 属性从
virtual void CopyPropertiesFrom(AcDbEntity *pSrc,unsigned gMatchFlag);
//子类对象格式刷支持 属性到
virtual void CopyPropertiesTo(AcDbObjectId& idTgr,unsigned gMatchFlag);
//子类对象格式刷支持 属性到
virtual void CopyPropertiesTo(AcDbObjectIdArray& arIds,unsigned gMatchFlag);
// 根据参数名称获得实体的OPM信息,pszName:参数名称(XMap key值)
virtual BOOL OPMInfo(LPCTSTR pszName, TDb::OPMInfo* pInfo);
// 判断当前实体参数是否有效,并将有效的参数数据返回到map中
virtual BOOL IsValid(TDbXDataMap* pXMap = NULL);
// 标注修改
virtual void SetSubText(long i,CString sText);
// 用户自定义接口
virtual LRESULT UserCall(long i,LPVOID pData);
//获取三维的壳对象
virtual int GetXBaseShell(TXShell& xShell);
//获取体的范围方块
virtual int GetBodyBox(AcDbExtents& ext);
public:
//{{AFX_ARX_METHODS(TDbInterfacesObj)
virtual Acad::ErrorStatus subDeepClone(AcDbObject* pOwnerObject,
AcDbObject*& pClonedObject,
AcDbIdMapping& idMap,
Adesk::Boolean isPrimary = true) const;
virtual Acad::ErrorStatus subWblockClone( AcRxObject* pOwnerObject,
AcDbObject*& pClonedObject,
AcDbIdMapping& idMap,
Adesk::Boolean isPrimary = true) const;
virtual void subList() const;
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const;
virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler);
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const;
virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler);
virtual Acad::ErrorStatus copyFrom(const AcRxObject* pSrc);
virtual Acad::ErrorStatus setLayer( const TCHAR* newVal,
Adesk::Boolean doSubents = true);
virtual Acad::ErrorStatus setLayer( AcDbObjectId newVal,
Adesk::Boolean doSubents = true);
virtual Acad::ErrorStatus getArea(double& x0) const;
virtual Acad::ErrorStatus getStartPoint(AcGePoint3d& x0) const;
virtual Acad::ErrorStatus getStartParam(double& x0) const;
virtual Acad::ErrorStatus getSplitCurves(const AcGePoint3dArray& points,
AcDbVoidPtrArray& curveSegments) const;
virtual Acad::ErrorStatus getSplitCurves(const AcGeDoubleArray& params,
AcDbVoidPtrArray& curveSegments) const;
virtual Acad::ErrorStatus getPointAtParam(double x0,
AcGePoint3d& x1) const;
virtual Acad::ErrorStatus getPointAtDist(double x0,
AcGePoint3d& x1) const;
virtual Acad::ErrorStatus getParamAtPoint(const AcGePoint3d& x0,
double& x1)const;
virtual Acad::ErrorStatus getParamAtDist(double dist,
double& param) const;
virtual Acad::ErrorStatus getOffsetCurves(double offsetDist,
AcDbVoidPtrArray& offsetCurves) const;
virtual Acad::ErrorStatus getFirstDeriv(double param,
AcGeVector3d& firstDeriv) const;
virtual Acad::ErrorStatus getFirstDeriv(const AcGePoint3d& x0,
AcGeVector3d& firstDeriv) const;
virtual Acad::ErrorStatus getEndPoint(AcGePoint3d& x0) const;
virtual Acad::ErrorStatus getEndParam(double& x0) const;
virtual Acad::ErrorStatus getDistAtPoint(const AcGePoint3d& x0,
double& x1)const;
virtual Acad::ErrorStatus getDistAtParam(double param,
double& dist) const;
virtual Acad::ErrorStatus getClosestPointTo(const AcGePoint3d& givenPnt,
const AcGeVector3d& direction,
AcGePoint3d& pointOnCurve,
Adesk::Boolean extend = Adesk::kFalse) const;
virtual Acad::ErrorStatus getClosestPointTo(const AcGePoint3d& givenPnt,
AcGePoint3d& pointOnCurve,
Adesk::Boolean extend = Adesk::kFalse) const;
virtual Acad::ErrorStatus extend(double newParam);
virtual Acad::ErrorStatus extend(Adesk::Boolean extendStart,
const AcGePoint3d& toPoint);
virtual Acad::ErrorStatus subErase(Adesk::Boolean erasing);
virtual Acad::ErrorStatus getPlane(AcGePlane& plan,AcDb::Planarity& planvt) const;
virtual Acad::ErrorStatus applyPartialUndo(AcDbDwgFiler* undoFiler,AcRxClass* classObj);
//}}AFX_ARX_METHODS
//{{AFX_ARX_DATA_ACCESS(TDbInterfacesObj)
//}}AFX_ARX_DATA_ACCESS
private:
//{{AFX_ARX_DATA(TDbInterfacesObj)
//}}AFX_ARX_DATA
AcDbHardPointerId m_idDash;
AcDbHardPointerId m_idCenter;
};
//设置专业夹点命令
DLLIMPEXP void SetGlobalContext(LPCTSTR pszKey,LPCTSTR pszCmd);
DLLIMPEXP BOOL GetGlobalContext(LPCTSTR pszKey,CString& sCmd);
DLLIMPEXP void SetGlobalContext(LPCTSTR pszKey,int nVal);
DLLIMPEXP BOOL GetGlobalContext(LPCTSTR pszKey,int& nVal);
DLLIMPEXP TDbXDataMap* GetGlobalContext();
DLLIMPEXP double _ttof(LPCTSTR pszString);
DLLIMPEXP void PipeBaseCommandEndedUser(const CString& sCmd = _T("UNDO"));//add liaoy 170704外部需更新接口时调用
#endif // !defined(ARX__TDBINTERFACESOBJ_H__20080829_134414)