214 lines
7.7 KiB
C++
214 lines
7.7 KiB
C++
#ifndef __DBRECT_H
|
|
#define __DBRECT_H
|
|
//#include "DbEntity.h"
|
|
#define RF_DIA45 0x01 //45度对角
|
|
#define RF_DIA135 0x02 //135对角
|
|
#define RF_CROSSING 0x03 //绘制交叉
|
|
|
|
|
|
class TARCH_EXP TDbRect: public TDbCurveEntity {
|
|
DECLARE_TENTBASE();
|
|
ACRX_DECLARE_MEMBERS(TDbRect);
|
|
public:
|
|
enum BasePosition { kCenter=0, kTopLeft=1, kTopRight=2, kBotRight=3, kBotLeft=4,};
|
|
private:
|
|
const static Adesk::UInt8 g_nVersion;
|
|
protected:
|
|
//基本参数 6
|
|
Adesk::UInt16 m_nRectFlag; //标志
|
|
XPoint m_ptCen; //底面中心
|
|
double m_nRotation;
|
|
double m_nSizeX, m_nSizeY, m_nSizeZ;
|
|
XVector3D m_vtNormal;
|
|
|
|
BasePosition m_baseFlag;
|
|
public:
|
|
// 基本参数 6
|
|
Adesk::UInt16 GetRectFlag() const {
|
|
return m_nRectFlag;
|
|
}
|
|
BasePosition GetBaseFlag() const {
|
|
return m_baseFlag;
|
|
}
|
|
double GetRotation() const { return m_nRotation; }
|
|
XPoint GetCenter() const { return m_ptCen; }
|
|
double GetSizeX() const { return m_nSizeX; }
|
|
double GetSizeY() const { return m_nSizeY; }
|
|
double GetSizeZ() const { return m_nSizeZ; }
|
|
AcGeVector3d GetNormal() const { return m_vtNormal.AsAcGeVector3d(); }
|
|
|
|
double GetElevation() const {
|
|
return m_ptCen.z;
|
|
}
|
|
void SetElevation(double z) {
|
|
assertWriteEnabled();
|
|
m_ptCen.z=z;
|
|
}
|
|
void SetRectFlag(Adesk::UInt16 flag) {
|
|
assertWriteEnabled();
|
|
m_nRectFlag=flag;
|
|
}
|
|
void SetRotation(double nRot) {
|
|
assertWriteEnabled();
|
|
m_nRotation=nRot;
|
|
}
|
|
void SetCenter(XPoint pt) {
|
|
assertWriteEnabled();
|
|
m_ptCen = pt;
|
|
}
|
|
void SetSizeX(double val) {
|
|
assertWriteEnabled();
|
|
m_nSizeX=val;
|
|
}
|
|
void SetSizeY(double val) {
|
|
assertWriteEnabled();
|
|
m_nSizeY=val;
|
|
}
|
|
void SetSizeZ(double val) {
|
|
assertWriteEnabled();
|
|
m_nSizeZ=val;
|
|
}
|
|
void SetNormal(XVector3D vt) {
|
|
assertWriteEnabled();
|
|
m_vtNormal=vt;
|
|
}
|
|
void SetBaseFlag(TDbRect::BasePosition flag) {
|
|
assertWriteEnabled();
|
|
m_baseFlag=flag;
|
|
}
|
|
|
|
|
|
// 导出参数
|
|
XPoint GetLowLeft() const;
|
|
XPoint GetLowRight() const;
|
|
XPoint GetUpRight() const;
|
|
XPoint GetUpLeft() const;
|
|
void GetPolyline(AcDbPolyline &pline) const;
|
|
BOOL SetPolyline(const AcDbPolyline &pline);
|
|
|
|
public:
|
|
TDbRect();
|
|
|
|
// Override from AcDbEntity
|
|
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 subTransformBy(const AcGeMatrix3d& xform);
|
|
virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;
|
|
|
|
// 为了通知墙体更新显示
|
|
virtual Acad::ErrorStatus subGetOsnapPoints(
|
|
AcDb::OsnapMode osnapMode,
|
|
INT_PTR gsSelectionMark,
|
|
const AcGePoint3d& ptPick,
|
|
const AcGePoint3d& lastPoint,
|
|
const AcGeMatrix3d& viewXform,
|
|
AcGePoint3dArray& snapPoints,
|
|
AcDbIntArray& geomIds) const;
|
|
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);
|
|
|
|
// AcDbCurve method
|
|
virtual Acad::ErrorStatus getPlane(AcGePlane& plane, AcDb::Planarity& flag) const;
|
|
virtual Adesk::Boolean isPlanar() const;
|
|
virtual Adesk::Boolean isClosed() const;
|
|
virtual Adesk::Boolean isPeriodic() const;
|
|
|
|
virtual Acad::ErrorStatus getStartPoint(AcGePoint3d& ptStart) const;
|
|
virtual Acad::ErrorStatus getEndPoint(AcGePoint3d& ptEnd) const;
|
|
virtual Acad::ErrorStatus extend(
|
|
Adesk::Boolean extendStart,
|
|
const AcGePoint3d& toPoint) ;
|
|
virtual Acad::ErrorStatus extend(double newParam);
|
|
virtual Acad::ErrorStatus getClosestPointTo(
|
|
const AcGePoint3d& givenPnt,
|
|
const AcGeVector3d& normal,
|
|
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 getDistAtParam(
|
|
double param,
|
|
double& dist) const;
|
|
virtual Acad::ErrorStatus getDistAtPoint(
|
|
const AcGePoint3d& point,
|
|
double& distance) const;
|
|
virtual Acad::ErrorStatus getStartParam(double& startParam) const;
|
|
virtual Acad::ErrorStatus getEndParam(double& endParam) const;
|
|
virtual Acad::ErrorStatus getParamAtPoint(
|
|
const AcGePoint3d& point,
|
|
double& param) const;
|
|
virtual Acad::ErrorStatus getParamAtDist(
|
|
double dist,
|
|
double& param) const;
|
|
virtual Acad::ErrorStatus getPointAtDist(
|
|
double dist,
|
|
AcGePoint3d& point) const;
|
|
virtual Acad::ErrorStatus getPointAtParam(double param, AcGePoint3d &point) const;
|
|
#if (ADS>14)
|
|
virtual Acad::ErrorStatus getOffsetCurvesGivenPlaneNormal(
|
|
const AcGeVector3d& normal,
|
|
double offsetDist,
|
|
AcDbVoidPtrArray& offsetCurves) const;
|
|
#endif
|
|
virtual Acad::ErrorStatus getOffsetCurves(
|
|
double offsetDist,
|
|
AcDbVoidPtrArray& offsetCurves) const;
|
|
virtual Acad::ErrorStatus getOrthoProjectedCurve(
|
|
const AcGePlane& projPlane,
|
|
AcDbCurve*& projCurve) const;
|
|
|
|
virtual Acad::ErrorStatus getProjectedCurve(
|
|
const AcGePlane& projPlane,
|
|
const AcGeVector3d& projDir,
|
|
AcDbCurve*& projCurve) const;
|
|
|
|
virtual Acad::ErrorStatus getFirstDeriv(
|
|
double param,
|
|
AcGeVector3d& secDeriv) const;
|
|
virtual Acad::ErrorStatus getFirstDeriv(
|
|
const AcGePoint3d& point,
|
|
AcGeVector3d& secDeriv) const;
|
|
|
|
virtual Acad::ErrorStatus getSecondDeriv(
|
|
double param,
|
|
AcGeVector3d& secDeriv) const;
|
|
virtual Acad::ErrorStatus getSecondDeriv(
|
|
const AcGePoint3d& point,
|
|
AcGeVector3d& secDeriv) const;
|
|
virtual Acad::ErrorStatus getSpline(AcDbSpline*& spline) const;
|
|
virtual Acad::ErrorStatus getSplitCurves(
|
|
const AcGeDoubleArray& params,
|
|
AcDbVoidPtrArray& curveSegments) const;
|
|
virtual Acad::ErrorStatus getSplitCurves(
|
|
const AcGePoint3dArray& points,
|
|
AcDbVoidPtrArray& curveSegments) const;
|
|
|
|
// Override form TEntityBase
|
|
virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag);
|
|
virtual Acad::ErrorStatus ExplodeOrDraw2d(XExplodeDraw &dc) const;
|
|
virtual Acad::ErrorStatus ExplodeOrDraw3d(XExplodeDraw &dc) const;
|
|
virtual void GetTips(DList<TObjInfoUnit> &) const; //取动态属性显示数据
|
|
virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const;
|
|
virtual BOOL IsValid() const;
|
|
virtual bool IsModelEntity() const{return true;}
|
|
virtual int GetFirstVersion()const{return 6;}//ok
|
|
virtual Acad::ErrorStatus GetPathPoly(XPoly2D &polyPath,AcGeVector3d &normal) const;
|
|
virtual int GetCtrlToggleIndex()const{return 0;}//ok
|
|
#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
|
|
};
|
|
|
|
#endif |