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

109 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