129 lines
4.8 KiB
C++
129 lines
4.8 KiB
C++
#ifndef __DBSLAB_H
|
|
#define __DBSLAB_H
|
|
//#include "DbEntity.h"
|
|
|
|
class TDbHandRail;
|
|
class TARCH_EXP TDbSlab: public TDbEntity {
|
|
DECLARE_TENTBASE();
|
|
ACRX_DECLARE_MEMBERS(TDbSlab);
|
|
private:
|
|
const static Adesk::UInt8 g_nVersion;
|
|
protected:
|
|
XPoly2D m_polyOutline; //平台轮廓和标高
|
|
DList<XPoly2D> m_lstHoles;
|
|
double m_nThickness; //<0, 则基准面在顶部
|
|
Adesk::UInt32 m_nInvisibleEdge; //不可见的边
|
|
AcDbVoidPtrArray m_tempRailArray;
|
|
|
|
// TArch6 member
|
|
XVector3D m_vtNormal;
|
|
|
|
// Upgrade from TArch5 to TArch6 only
|
|
XVector3D _GetNormal() const;
|
|
// Downgrade from TArch6 to TArch5 only
|
|
void _SetNormal(XVector3D vt);
|
|
public:
|
|
TDbSlab();
|
|
~TDbSlab();
|
|
virtual BOOL IsValid() const;
|
|
virtual bool IsModelEntity() const{return true;}
|
|
virtual bool IsClipMe(const TEntityBase* pEnt=NULL)const;//ok
|
|
virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag);
|
|
virtual Acad::ErrorStatus DownGradeSave(int nDrawMode, AcDbVoidPtrArray &entSet, BOOL *bErase);
|
|
virtual Acad::ErrorStatus GetPathPoly(XPoly2D& poly,AcGeVector3d &normal)const;
|
|
virtual Acad::ErrorStatus SetPathPoly(const XPoly2D& poly,const AcGeVector3d &normal);
|
|
|
|
// Overriden function from AcDbEntity
|
|
virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;
|
|
virtual Acad::ErrorStatus dwgInFields (AcDbDwgFiler*);
|
|
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler*) const;
|
|
virtual Acad::ErrorStatus dxfInFields (AcDbDxfFiler*);
|
|
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler*) const;
|
|
virtual Acad::ErrorStatus subGetGripPoints(AcGePoint3dArray& gripPoints,
|
|
AcDbIntArray& osnapModes,
|
|
AcDbIntArray& geomIds) const;
|
|
virtual Acad::ErrorStatus subGetStretchPoints(AcGePoint3dArray & stretchPoints) const;
|
|
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);
|
|
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbIntArray& indices,
|
|
const AcGeVector3d& offset);
|
|
virtual Acad::ErrorStatus subMoveStretchPointsAt(const AcDbIntArray& indices,
|
|
const AcGeVector3d& offset);
|
|
|
|
// drived from TDbEntity
|
|
virtual Acad::ErrorStatus ExplodeOrDraw3d(XExplodeDraw &dc) const;
|
|
virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &dc) const;
|
|
virtual void GetTips(DList<TObjInfoUnit> &) const; //取动态属性显示数据
|
|
virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const;
|
|
virtual const TCHAR *GetDefaultLayer() const;
|
|
virtual Acad::ErrorStatus GetExtents2d(XPoint &ptLow, XPoint &ptUp) const;
|
|
virtual Acad::ErrorStatus GetExtents(XPoint &ptLow, XPoint &ptUp) const;
|
|
#if ADS>15
|
|
virtual void CreateGrip();
|
|
virtual Acad::ErrorStatus EntityToDim(long iGrip,long iDim,const AcDbEntity*pEnt);
|
|
virtual Acad::ErrorStatus DimToEntity(long iGrip,long iDim,double newValue,const AcGeVector3d& offset);
|
|
#endif
|
|
virtual void UnionScale(double nScale);
|
|
// cet 2012.11.12 add 支持导出XML
|
|
virtual CString GetXml(const AcGeMatrix3d& mat) const;
|
|
|
|
virtual Acad::ErrorStatus subDeepClone(AcDbObject* pOwnerObject,
|
|
AcDbObject*& pClonedObject,
|
|
AcDbIdMapping& idMap,
|
|
Adesk::Boolean isPrimary) const;
|
|
virtual Acad::ErrorStatus subWblockClone( AcRxObject* pOwnerObject,
|
|
AcDbObject*& pClonedObject,
|
|
AcDbIdMapping& idMap,
|
|
Adesk::Boolean isPrimary) const;
|
|
|
|
XVector3D GetNormal() const;
|
|
int GetEdgeNum() const;
|
|
BOOL GetVisibilityAt(int idx) const;
|
|
double GetThickness() const;
|
|
double GetElevation() const;
|
|
const XPoly2D & GetOutline() const;
|
|
const DList<XPoly2D> & GetHoles() const;
|
|
|
|
void SetNormal(XVector3D vt);
|
|
void SetThickness(double h);
|
|
void SetOutline(const XPoly2D &poly);
|
|
void SetVisibilityAt(int idx, BOOL bTrue);
|
|
void SetVisibilityAll(BOOL bTrue);
|
|
void SetElevation(double elev);
|
|
BOOL AddHole(const XPoly2D &polyHole);
|
|
BOOL RemoveHole(int idx);
|
|
// bHitFlag, 高16--洞序号, 低16--边号
|
|
BOOL HitTestOnHole(const XPoint &ptTest, Adesk::UInt32 *bHitFlag) const;
|
|
int HitTestOnOutline(const XPoint &ptTest) const;
|
|
void AddTempRail(TDbHandRail *pRail);
|
|
void ResetTempRailArray() {
|
|
while(!m_tempRailArray.isEmpty())
|
|
m_tempRailArray.removeLast();
|
|
}
|
|
|
|
// 0--没有命中; 1--任意穿越; 2--任意包含; 3--重边穿越; 4--重边包含
|
|
// segHit--重边穿越或包含时的纠正位置
|
|
int HitTest(const XCurveSegment &seg, double nTol, XCurveSegment &segHit) const;
|
|
|
|
|
|
// 工程量属性
|
|
// 没有扣除洞口
|
|
double GetPerimeter0() const {
|
|
return GetOutline().Distance2d();
|
|
}
|
|
double GetBottomArea0() const {
|
|
return GetOutline().Area();
|
|
}
|
|
double GetSideArea0() const {
|
|
return GetOutline().Distance2d()*fabs(GetThickness());
|
|
}
|
|
double GetVolume0() const {
|
|
return GetBottomArea0()*fabs(GetThickness());
|
|
}
|
|
// 扣除洞口
|
|
double GetPerimeter() const;
|
|
double GetBottomArea() const;
|
|
double GetSideArea() const;
|
|
double GetVolume() const;
|
|
};
|
|
|
|
#endif |