2026-10-04 00:04:20 +08:00
|
|
|
|
#ifndef __DBAUTOSTAIR_H
|
2026-09-28 15:28:50 +08:00
|
|
|
|
#define __DBAUTOSTAIR_H
|
|
|
|
|
|
#include "DbPolyPathEnt.h"
|
|
|
|
|
|
#include "dbStair.h"
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 楼梯的标志
|
2026-09-28 15:28:50 +08:00
|
|
|
|
class TDbSymbArrow;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
#define SFEX_SINGLESTAIR 0x10000 //单排,TdbAutoStair
|
|
|
|
|
|
#define SFEX_CROSSSTAIR 0x100000 //交叉放置,TdbAutoStair
|
|
|
|
|
|
#define SFEX_HASHOLE 0x40000 //顶层单梯或双梯并列开洞,TdbAutoStair
|
|
|
|
|
|
#define SFEX_SAMEDIR 0x80000 //上下梯段同向运行,TdbAutoStair
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
//双梯时起步侧
|
|
|
|
|
|
#define OFFSET_LEFT 0 //左边
|
|
|
|
|
|
#define OFFSET_RIGHT 1 //右边
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
// 自动扶梯
|
|
|
|
|
|
class TARCH_EXP TDbAutoStair: public TDbPolyPathEnt { //为支持栏杆的绊定
|
2026-09-28 15:28:50 +08:00
|
|
|
|
DECLARE_TENTBASE();
|
|
|
|
|
|
ACRX_DECLARE_MEMBERS(TDbAutoStair);
|
|
|
|
|
|
private:
|
|
|
|
|
|
const static Adesk::UInt8 g_nVersion;
|
|
|
|
|
|
protected:
|
2026-10-04 00:04:20 +08:00
|
|
|
|
double m_nStepHeight; //踏步高
|
|
|
|
|
|
double m_nStepWidth; //踏步宽
|
|
|
|
|
|
double m_nStairWidth; //梯段宽
|
|
|
|
|
|
double m_nSlabSize; //平台宽
|
|
|
|
|
|
XPoint m_ptLocation; //位置
|
|
|
|
|
|
double m_nRotation; //旋转角度
|
|
|
|
|
|
//Adesk::UInt8 m_nStepNum; //梯段步数
|
|
|
|
|
|
double m_nRailHeight; //扶手高度
|
|
|
|
|
|
double m_nRailWidth; //扶手宽度
|
|
|
|
|
|
double m_lSectPos; //左侧剖切位置
|
|
|
|
|
|
double m_rSectPos; //右侧剖切位置
|
|
|
|
|
|
double m_nStepDist; //平步伸出距离
|
|
|
|
|
|
Adesk::UInt8 m_nStairFlag; //楼层标记: 0--首层, 1--中间层, 2--顶层
|
|
|
|
|
|
double m_dFloorHeight; //楼层高
|
|
|
|
|
|
double m_dSlopeAngle; //坡角(角度值)(扶梯:30,35;坡道:0,10~12)
|
|
|
|
|
|
double m_dTextHeight; //字高
|
|
|
|
|
|
double m_dSlopeLength; //坡长
|
|
|
|
|
|
double m_dSpaceWidth; //双梯间距
|
|
|
|
|
|
Adesk::UInt8 m_nStartSide; //双梯起步的一侧
|
|
|
|
|
|
double m_dHoleLength; //洞口长度
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
|
|
|
|
|
Adesk::UInt32 m_nFlagEx;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
double m_nSlabThick; //板厚或梁厚
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
|
|
|
|
|
AcDbHardPointerId m_idLayerStep3d;
|
|
|
|
|
|
AcDbHardPointerId m_idLayerText,m_idLayerArrow,m_idTextStyle;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
Adesk::UInt8 m_nViewCtrl; //视图控制:0-自动(由楼层决定);1-禁止3D;2-禁止2D
|
2026-09-28 15:28:50 +08:00
|
|
|
|
public:
|
|
|
|
|
|
TDbAutoStair();
|
|
|
|
|
|
~TDbAutoStair();
|
|
|
|
|
|
int GetSectStairPos()const;
|
|
|
|
|
|
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);
|
|
|
|
|
|
// 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 const TCHAR *GetDefaultLayer() const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
virtual void GetTips(DList<TObjInfoUnit> &) const; //取动态属性显示数据
|
2026-09-28 15:28:50 +08:00
|
|
|
|
virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const;
|
|
|
|
|
|
virtual int GetFirstVersion()const{return 8;}
|
|
|
|
|
|
|
|
|
|
|
|
Acad::ErrorStatus ExplodeTo(TDbLineStair &stair1, TDbLineStair &stair2) const;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
//扶手线
|
2026-09-28 15:28:50 +08:00
|
|
|
|
void DrawRailLine(XPoint ptS,XPoint ptE,double rot,double dWidth,XExplodeDraw &dc)const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
//内侧垫板线
|
2026-09-28 15:28:50 +08:00
|
|
|
|
void DrawInSlabLine(XPoint ptS,XPoint ptE,double rot,double dWidth,XExplodeDraw &dc)const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
//外侧垫板线
|
2026-09-28 15:28:50 +08:00
|
|
|
|
void DrawOutSlabLine(XPoint ptS,XPoint ptE,double rot,double dWidth,BOOL bConnect,XExplodeDraw &dc)const;
|
|
|
|
|
|
XDirectionCurve GetSideCurve2d(int nSide) const;
|
|
|
|
|
|
BOOL GetSectionPoly(double lSectionPos,double rSectionPos,int nSide,XPoly &polyDown, XPoly &polyUp, XPoly &polyMid) const;
|
|
|
|
|
|
|
2026-10-04 00:04:20 +08:00
|
|
|
|
//add by xlc on 090426 箭头文字,动态数据
|
2026-09-28 15:28:50 +08:00
|
|
|
|
CString GetTextUp() const;
|
|
|
|
|
|
void SetTextUp(const TCHAR *sVal);
|
|
|
|
|
|
CString GetTextDown() const;
|
|
|
|
|
|
void SetTextDown(const TCHAR *sVal);
|
|
|
|
|
|
|
|
|
|
|
|
// Attribute Access method
|
|
|
|
|
|
double GetLength()const;
|
|
|
|
|
|
double GetTotalLength()const{return GetLength()+m_nSlabSize*2;};
|
|
|
|
|
|
double GetTotalWidth()const
|
|
|
|
|
|
{
|
|
|
|
|
|
double dWidth=_AS_SYS_UNIT(205.5);
|
|
|
|
|
|
if(IsSingleStair())
|
|
|
|
|
|
{
|
|
|
|
|
|
return m_nStairWidth+dWidth*8/3;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return m_dSpaceWidth+m_nStairWidth*2+dWidth*16/3;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
double GetHoleLength()const;
|
|
|
|
|
|
void SetHoleLength(double l);
|
|
|
|
|
|
double GetLSectPos()const;
|
|
|
|
|
|
double GetRSectPos()const;
|
|
|
|
|
|
void SetLSectPos(double l);
|
|
|
|
|
|
void SetRSectPos(double l);
|
|
|
|
|
|
double GetStepHeight() const;
|
|
|
|
|
|
Adesk::UInt8 GetStairFlag() const;
|
|
|
|
|
|
double GetSlabSize() const;
|
|
|
|
|
|
void SetSlabSize(double s);
|
|
|
|
|
|
double GetFloorHeight()const;
|
|
|
|
|
|
void SetFloorHeight(double h);
|
|
|
|
|
|
double GetSlopeAngle()const;
|
|
|
|
|
|
void SetSlopeAngle(double a);
|
|
|
|
|
|
double GetSlopeLength()const;
|
|
|
|
|
|
void SetSlopeLength(double l);
|
|
|
|
|
|
double GetTextHeight()const;
|
|
|
|
|
|
void SetTextHeight(double h);
|
|
|
|
|
|
double GetRailHeight() const;
|
|
|
|
|
|
double GetRailWidth() const;
|
|
|
|
|
|
double GetStepDist() const;
|
|
|
|
|
|
double GetSpaceWidth() const;
|
|
|
|
|
|
double GetStepWidth() const;
|
|
|
|
|
|
double GetStairWidth() const;
|
|
|
|
|
|
double GetElevation() const;
|
|
|
|
|
|
XPoint GetLocation() const;
|
|
|
|
|
|
XPoint GetUpRight2d() const;
|
|
|
|
|
|
XPoint GetUpLeft2d() const;
|
|
|
|
|
|
double GetRotation() const;
|
|
|
|
|
|
int GetStartSide() const;
|
|
|
|
|
|
void SetStartSide(int nSide);
|
|
|
|
|
|
void SetStepDist(double w);
|
|
|
|
|
|
void SetRailHeight(double l);
|
|
|
|
|
|
void SetRailWidth(double w);
|
|
|
|
|
|
void SetSpaceWidth(double w);
|
|
|
|
|
|
void SetStepWidth(double w);
|
|
|
|
|
|
void SetStairWidth(double w);
|
|
|
|
|
|
void SetElevation(double elev);
|
|
|
|
|
|
void SetLocation(const XPoint &pt);
|
|
|
|
|
|
void SetRotation(double rot);
|
|
|
|
|
|
void SetStepHeight(double h);
|
|
|
|
|
|
void SetStairFlag(Adesk::UInt8 flag);
|
|
|
|
|
|
|
|
|
|
|
|
void SetArrow(BOOL bTrue);
|
2026-10-04 00:04:20 +08:00
|
|
|
|
BOOL IsArrow() const; //是否显示箭头
|
2026-09-28 15:28:50 +08:00
|
|
|
|
|
|
|
|
|
|
BOOL IsHasHole()const;
|
|
|
|
|
|
void SetHasHole(BOOL bTrue);
|
|
|
|
|
|
BOOL IsCross()const;
|
|
|
|
|
|
void SetCross(BOOL bTrue);
|
|
|
|
|
|
BOOL IsSameDir()const;
|
|
|
|
|
|
void SetSameDir(BOOL bTrue);
|
|
|
|
|
|
BOOL IsSingleStair()const;
|
|
|
|
|
|
void SetSingleStair(BOOL bTrue);
|
|
|
|
|
|
|
|
|
|
|
|
BOOL IsAscent() const;
|
|
|
|
|
|
BOOL IsOnGround() const;
|
|
|
|
|
|
BOOL HasSlant() const;
|
|
|
|
|
|
double GetSlabThick() const;
|
|
|
|
|
|
AcDbObjectId GetLayerStep3d() const;
|
|
|
|
|
|
AcDbObjectId GetLayerText() const;
|
|
|
|
|
|
AcDbObjectId GetTextStyle() const;
|
|
|
|
|
|
AcDbObjectId GetLayerArrow() const;
|
2026-10-04 00:04:20 +08:00
|
|
|
|
//上楼箭头
|
2026-09-28 15:28:50 +08:00
|
|
|
|
void GetDefaultArrow(TDbSymbArrow*pArrowUp,TDbSymbArrow*pArrowUp2,
|
|
|
|
|
|
TDbSymbArrow*pArrowDown,TDbSymbArrow*pArrowDown2)const;
|
|
|
|
|
|
|
|
|
|
|
|
Adesk::UInt8 GetViewCtrl() const {
|
|
|
|
|
|
return m_nViewCtrl;
|
|
|
|
|
|
}
|
|
|
|
|
|
void SetViewCtrl(Adesk::UInt8 nCtrl) {
|
|
|
|
|
|
assertWriteEnabled();
|
|
|
|
|
|
m_nViewCtrl=nCtrl;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SetAscent(BOOL bTrue);
|
|
|
|
|
|
void SetOnGround(BOOL bTrue);
|
|
|
|
|
|
void SetSlant(BOOL bTrue);
|
|
|
|
|
|
void SetSlabThick(double val);
|
|
|
|
|
|
void SetLayerStep3d(AcDbObjectId idLayer);
|
|
|
|
|
|
void SetLayerText(AcDbObjectId idLayer);
|
|
|
|
|
|
void SetTextStyle(AcDbObjectId idStyle);
|
|
|
|
|
|
void SetLayerArrow(AcDbObjectId idLayer);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|