//------------------------------------------------------------------------+ // Copyright (C), 1998-2012, Beijing Tangent Software Co. Ltd. // = FileName : TDbStruBarBase.h // = Version : ver1.0 // = Author : zyc // = CreateDate : 2012-11-02 // = Description: 条形基础平面图类声明 // = Maintainers: // //------------------------------------------------------------------------+ #ifdef TASD #ifndef _TDBSTRUBARBASE_H_ #define _TDBSTRUBARBASE_H_ #ifndef _TDBBASEWALL_H_ #include "TDbBaseWall.h" #endif /* TDbBaseWall int m_nWeight; //对象材质重量,类似于优先级 KEY_WEIGHT AcGePoint3d m_ptStart; //起点 KEY_START AcGePoint3d m_ptEnd; //终点 KEY_END double m_dBulge; //凸度 KEY_BULGE double m_dWidth; //宽度 KEY_W double m_dHeight; //高度 KEY_H CString m_strCLab //构件编号 KEY_CLAB */ class TARCH_EXP TDbStruBarBase : public TDbBaseWall { DECLARE_TENTBASE(); ACRX_DECLARE_MEMBERS(TDbStruBarBase); public: TDbStruBarBase(); virtual ~TDbStruBarBase(); // Overriden function from AcDbEntity virtual Acad::ErrorStatus dwgInFields (AcDbDwgFiler* pFiler); virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const; virtual Acad::ErrorStatus subGetOsnapPoints( AcDb::OsnapMode osnapMode, INT_PTR gsSelectionMark, const AcGePoint3d& pickPoint, const AcGePoint3d& lastPoint, const AcGeMatrix3d& viewXform, AcGePoint3dArray& snapPoints, AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform); virtual Acad::ErrorStatus subGetGripPoints( AcGePoint3dArray& gripPoints, AcDbIntArray& osnapModes, AcDbIntArray& geomIds) const; virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray& stretchPoints) const; virtual Acad::ErrorStatus subMoveGripPointsAt( const AcDbIntArray& indices, const AcGeVector3d& offset); virtual Acad::ErrorStatus subMoveStretchPointsAt( const AcDbIntArray& indices, const AcGeVector3d& offset); virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const; virtual Acad::ErrorStatus subDeepClone(AcDbObject* pOwner, AcDbObject*& pClonedObject, AcDbIdMapping& idMap, Adesk::Boolean isPrimary) const; virtual Acad::ErrorStatus subWblockClone( AcRxObject* pOwner, AcDbObject*& pClonedObject, AcDbIdMapping& idMap, Adesk::Boolean isPrimary) const; virtual Acad::ErrorStatus subIntersectWith( const AcDbEntity* ent, AcDb::Intersect intType, AcGePoint3dArray& points, INT_PTR thisGsMarker = 0, INT_PTR otherGsMarker = 0) const; virtual Acad::ErrorStatus subIntersectWith( const AcDbEntity* ent, AcDb::Intersect intType, const AcGePlane& projPlane, AcGePoint3dArray& points, INT_PTR thisGsMarker = 0, INT_PTR otherGsMarker = 0) const; // TEntityBase // 夹点提示 virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const; virtual Acad::ErrorStatus ExplodeOrDraw3d(TGGiExplodeDrawBase &dc) const; virtual Acad::ErrorStatus ExplodeOrDraw2d(TGGiExplodeDrawBase &dc) const; virtual Acad::ErrorStatus GetExtents2d(TADSGePoint3d &ptLow, TADSGePoint3d &ptUp) const; virtual Acad::ErrorStatus GetExtents(TADSGePoint3d &ptLow, TADSGePoint3d &ptUp) const; //取动态属性显示数据 virtual void GetTips(TDPtrList &lstInfo) const; virtual const TCHAR *GetDefaultLayer() const; virtual BOOL IsValid() const; // 支持夹点ctrl功能切换 virtual int GetCtrlToggleIndex()const; virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag); virtual TEntityBase::DrawType GetDrawType() const; virtual bool GetStandardFaceBody(AcDbVoidPtrArray& arFacePtrs) const; virtual bool GetSafeProtectedSpace(AcDbVoidPtrArray& arFacePtrs) const; virtual bool GetSection( const AcDbFace &face, const AcGeVector3d &vtPlaneSecDir, std::vector §ionRecords, AcDbVoidPtrArray &arFillPtrs) const; virtual CString GetXml(const AcGeMatrix3d& mat) const; virtual int GetFirstVersion()const; virtual bool IsModelEntity() const; //TDbBaseWall // 对象修改发出关联更改消息 virtual void PostAssocMsg(TAssocMsg assocMsg)const; // 对象接收到更改消息 virtual void ReceiveAssocMsg(TAssocMsg assocMsg); // 建立关联关系 virtual void MakeAssocRelation(AcDbObjectIdArray& ids); // 移除关联关系 virtual void RemoveAssocRelation(AcDbObjectId& id); // 获得基础总宽度 virtual void GetTotalWidth(double &dWidth)const; // 获得基础总高度 virtual void GetTotalHeight(double &dHeight)const; // 基础外围poly2d virtual void GetPoly2D(TGGePoly2D &poly2d) const; virtual BOOL CanMerge(AcDbObjectId idWall); private: // 独立移动 void SingleMove(const AcDbIntArray& indices, const AcGeVector3d& offset); // 关联移动 void AssociateMove(const AcDbIntArray& indices, const AcGeVector3d& offset); // 绘制端点的封口线 Acad::ErrorStatus DrawSideLine2d(bool bStart, const AcDbObjectId &idWall, const TBaseWallLine &wallLine, TGGiExplodeDrawBase &dc) const; // 绘制加粗的线 Acad::ErrorStatus DrawWeightLine2d(TGGiExplodeDrawBase &dc) const; Acad::ErrorStatus DrawWeightLine2d(TGGiExplodeDrawBase &dc, TGGeVisibilityPoly2D &poly, bool bVal) const; // 融合后生成的TGGeVisibilityPoly2D void GetIntegratedPoly2d(TGGeVisibilityPoly2D &poly) const; // 基础平行时,获得封口线,poly的0索引点与左基础线起点或终点重合 void GetSideLine2d(bool bStart, const AcDbObjectId &idWall, const TBaseWallLine &wallLine, TGGeVisibilityPoly2D &poly) const; private: static const Adesk::UInt8 g_nVersion; }; #endif #endif