Files
envi-code/SourceCode/Code2026/Dimension/DbRect.h
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

215 lines
6.8 KiB
C++

#pragma once
#include "AecDbEntityBaseEx.h"
#include "ObjInfoUnit.h"
#define RF_DIA45 0x01 //45度对角
#define RF_DIA135 0x02 //135对角
#define RF_CROSSING 0x03 //绘制交叉
class CDbRect : public AecXDbCurveBaseEx
{
public:
ACRX_DECLARE_MEMBERS(CDbRect);
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(CDbRect::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:
CDbRect();
// 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 (ARX>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 Draw2d(AcGiDraw &dc) const;
virtual Acad::ErrorStatus Draw3d(AcGiDraw &dc) const;
virtual void GetTips(DList<ObjInfoUnit> &) 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 ARX>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
};