#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 &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)