108 lines
3.8 KiB
C++
108 lines
3.8 KiB
C++
#ifndef __DBCURVEMESH_H
|
|||
|
|
#define __DBCURVEMESH_H
|
||
|
|
|
||
|
|
#include "DbPolyPathEnt.h"
|
||
|
|
|
||
|
|
#define CMF_SHOWSHAPE 0x01
|
||
|
|
#define CMF_NO2D 0x02
|
||
|
|
#define CMF_NO3D 0x04
|
||
|
|
#define CMF_DIVIDE2D 0x08//TArch7用于二维散水
|
||
|
|
|
||
|
|
class TARCH_EXP TDbCurveMesh: public TDbPolyPathEnt {
|
||
|
|
DECLARE_TENTBASE();
|
||
|
|
ACRX_DECLARE_MEMBERS(TDbCurveMesh);
|
||
|
|
private:
|
||
|
|
const static Adesk::UInt8 g_nVersion;
|
||
|
|
protected:
|
||
|
|
XPoly2D m_polyBase;
|
||
|
|
XPoly2D m_polyShape;
|
||
|
|
XVector3D m_vtNormal;
|
||
|
|
XPoint m_ptShapeBase;
|
||
|
|
Adesk::UInt8 m_nCMFlag;
|
||
|
|
public:
|
||
|
|
TDbCurveMesh();
|
||
|
|
~TDbCurveMesh();
|
||
|
|
virtual BOOL IsValid() const;
|
||
|
|
virtual bool IsModelEntity() const{return true;}
|
||
|
|
virtual bool IsClipMe(const TEntityBase* pEnt=NULL)const;
|
||
|
|
virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag);
|
||
|
|
|
||
|
|
virtual void SetNormal(const XVector3D &vt);
|
||
|
|
void SetShapePoly(const XPoly2D &newShape);
|
||
|
|
void SetBasePoly(const XPoly2D &newBase);
|
||
|
|
void SetShapeBase(const XPoint &ptBase);
|
||
|
|
void ShowShape(BOOL bTrue);
|
||
|
|
void SetHas2D(BOOL bTrue);
|
||
|
|
void SetHas3D(BOOL bTrue);
|
||
|
|
void SetHasDivide2D(BOOL bTrue);
|
||
|
|
|
||
|
|
// SetMethod
|
||
|
|
virtual Acad::ErrorStatus SetPathPoly(const XPoly2D &polyPath,const AcGeVector3d &normal)
|
||
|
|
{
|
||
|
|
assertWriteEnabled();
|
||
|
|
SetBasePoly(polyPath);
|
||
|
|
SetNormal(normal);
|
||
|
|
return Acad::eOk;
|
||
|
|
}
|
||
|
|
// GetMethos
|
||
|
|
virtual Acad::ErrorStatus GetPathPoly(XPoly2D &polyPath,AcGeVector3d &normal) const
|
||
|
|
{
|
||
|
|
assertReadEnabled();
|
||
|
|
polyPath=GetBasePoly();
|
||
|
|
normal=m_vtNormal.AsAcGeVector3d();
|
||
|
|
return Acad::eOk;
|
||
|
|
}
|
||
|
|
virtual XVector3D GetNormal() const;
|
||
|
|
const XPoly2D & GetShapePoly() const;
|
||
|
|
const XPoly2D & GetBasePoly() const;
|
||
|
|
XPoint GetShapeBase() const;
|
||
|
|
BOOL IsShapeShow() const;
|
||
|
|
BOOL Has2D() const;
|
||
|
|
BOOL Has3D() const;
|
||
|
|
BOOL HasDivide2D()const;
|
||
|
|
// 取得二维平面上的投影区域,只针对normal=(0,0,1)以及路径不封闭。否则返回FALSE
|
||
|
|
BOOL Get2DRegion(XPoly2D &poly2d) const;
|
||
|
|
|
||
|
|
// 工程量
|
||
|
|
double GetPathLength() const;
|
||
|
|
double GetShapePerimeter() const;
|
||
|
|
double GetShapeArea() const;
|
||
|
|
double GetSideArea() const;
|
||
|
|
double GetVolume() const;
|
||
|
|
|
||
|
|
Acad::ErrorStatus MoveShapeGripPoint(int nShapeIndex, const XVector3D &vtOffset);
|
||
|
|
|
||
|
|
|
||
|
|
// Overriden function from AcDbEntity
|
||
|
|
virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;
|
||
|
|
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 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 subTransformBy(const AcGeMatrix3d& xform);
|
||
|
|
virtual Acad::ErrorStatus subMoveGripPointsAt(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;
|
||
|
|
};
|
||
|
|
|
||
|
|
TARCH_IMPEXP int EditCurveMesh0(AcDbObjectId id);
|
||
|
|
|
||
|
|
#endif
|
||
|
|
|