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

201 lines
6.3 KiB
C++

//-------------------------------------------------------------------------------------------------------+
// Copyright (C), 1998-2012, swer Software Co. Ltd.
// = FileName :
// = Version : ver2.0
// = Author :
// = CreateDate :
// = Description: 设备造型单元,基点 0,0,0点 + 原点位置的 x,y,z轴的旋转 + X,Y,Z 方向的偏移
// = Maintainers:
//
//-------------------------------------------------------------------------------------------------------+
#pragma once
#include "AecDbEntityBase.h"
#include <vector>
#include "define_class_xdata_key.h"
#ifdef EARTHWORM_EXPORT
#define DLLIMPEXP __declspec(dllexport)
#else
#define DLLIMPEXP __declspec(dllimport)
#endif
struct AecGripData;
class DLLIMPEXP AecDbEwPipeDim : public AecDbEntityBase
{
public:
ACRX_DECLARE_MEMBERS(AecDbEwPipeDim);
public:
AecDbEwPipeDim(void);
~AecDbEwPipeDim(void);
void AddAecDbWEntity(const AcDbObjectId& idObj);
AcDbObjectId GetAecDbWEntity(int nIndex);
int GetAecDbWEntityCount();
void SetDimStyle(short nStyle);
short GetDimStyle();
void SetDimDir(short nDir);
short GetDimDir();
void SetDimTextUporDownFlag(short nDimText);
short GetDimTextUporDownnFlag();
void SetISODim(short nIsISO);
short IsISODim();
void SetTextStyleId(AcDbObjectId& idStyle);
AcDbObjectId GetTextStyleId();
void SetTextLayerId(AcDbObjectId id);
AcDbObjectId GetTextLayerId();
//序号标注的圆圈 判断是否重叠
bool GetSNDimCircle(AcDbCircle& cir) const;
bool IsSNOverlapping(const AecDbEwPipeDim* pDim) const;
// 如果标注了标高,则修改标高, dDelta 是标高的变化量
void ModifyElevation(const double &dDelta_M);
bool HasElevation();
// dEle为mm单位
bool GetElevation(double &dEle_mm);
//nPos -1 down,1up
void RemoveAt(int nPos,int nIndex);
void RemoveAll(int nPos);
void AddDimText(LPCTSTR pszUp,LPCTSTR pszDown = NULL);
void GetDimText(int nIndex,CString& sUp,CString& sDown);
void SetDimupScript(LPCTSTR pszUpScr);
void GetDimupScript(CString& sUpScr);
void SetDimdownScript(LPCTSTR pszDownScr);
void GetDimdownScript(CString& sDownScr);
double GetTextHeight();
void SetTextHeight(double dH);
double GetTextWidthScale();
void SetTextWidthScale(double dScale);
void AppendPoint(AcGePoint3d& pt);
void AppendNoPoint(AcGePoint3d& pt);
void SetDimupdownSpace(double dD);
void UpdateFromParam();
void SetPScale(double dScale);
double GetPScale() const;
virtual void saveAs(AcGiWorldDraw *pWd, AcDb::SaveType saveType);
virtual int GetDraw2dables(Adesk::UInt16 nDrawStyle, AcDbVoidPtrArray& arEntPtrs) const;
virtual Acad::ErrorStatus Draw2d(AcGiDraw &dc) const;
virtual Acad::ErrorStatus subGetGripPoints (AcDbGripDataPtrArray& grips,
const double curViewUnitSize,
const int gripSize,
const AcGeVector3d& curViewDir,
const int bitflags) const;
virtual Acad::ErrorStatus subMoveGripPointsAt(const AcDbVoidPtrArray& appData,const AcGeVector3d& offset,const int bitflags);
virtual Acad::ErrorStatus subGetOsnapPoints(AcDb::OsnapMode osnapMode,
INT_PTR gsSelectionMark,
const AcGePoint3d& pickPoint,
const AcGePoint3d& lastPoint,
const AcGeMatrix3d& viewXform,
AcGePoint3dArray& snapPoints,
AcDbIntArray& geomIds) const;
virtual Acad::ErrorStatus copyFrom(const AcRxObject* pSrc);
virtual Acad::ErrorStatus subTransformBy(const AcGeMatrix3d& xform);
virtual Acad::ErrorStatus subExplode(AcDbVoidPtrArray& entitySet) const;
virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const;
virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler);
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const;
virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler);
virtual const AecDbObjXDataMap *GetSpecialtyData() const;
virtual AecDbObjXDataMap *GetSpecialtyData(AcDb::OpenMode bMode = AcDb::kForWrite);
protected:
Acad::ErrorStatus DrawLeaderDim(AcGiDraw &dc) const;
Acad::ErrorStatus DrawMBoxLineLdDim(AcGiDraw &dc) const;
Acad::ErrorStatus DrawOnlineDim(AcGiDraw &dc) const;
Acad::ErrorStatus DrawPolylineDim(AcGiDraw &dc) const;
Acad::ErrorStatus DrawSNo(AcGiDraw &dc) const;
Acad::ErrorStatus DrawText(AcGiDraw &dc,AcGePoint3d ptFr,AcGePoint3d ptTo,LPCTSTR pszDimup,LPCTSTR pszDimDown,const AcGeVector3d& vtDimType,BOOL bHasUnderline = FALSE) const;
Acad::ErrorStatus DrawText(AcGiDraw &dc,LPCTSTR pszText,AcGePoint3d& ptFr,double dAngle) const;
Acad::ErrorStatus DrawText2(AcGiDraw &dc,LPCTSTR pszText,AcGePoint3d& ptFr,double dAngle) const;
Acad::ErrorStatus DrawEl(AcGiDraw &dc,AcGePoint3d& ptFr,double dAngle,short nElType,double dH, int nUpOrDwn = 1) const;
Acad::ErrorStatus ParseDownString(LPCTSTR psz
, short &elType
, CString &sLeft
, CString &sRight ) const;
Acad::ErrorStatus TextEx(AcGiDraw &dc
, const AcGiDraw::TextAlignment &ta
, const AcGePoint3d &ptPos
, const AcGeVector3d &vtDir
, LPCTSTR pszDimup
, double &len
, int nUpOrDwn = 1) const;//1 -1
Acad::ErrorStatus MakeWDot(AcGiDraw &dc, AcGePoint3d &pt) const;
double UnderLineLength(LPCTSTR pszDimup) const;
AcGePoint2d DimTextExtent(LPCTSTR pszDimup) const;
protected:
short m_nStyle; //0: 引出标注 1: 在线标注 //2: 批量标注
short m_nDir; //0: 水平标注 1: 垂直标注
short m_nDimText; //0: 只标上标 1: 上下标
short m_nIsISO; //0: 非iso 标注 30: iso 30度标注 45:iso 45度标注 其他按30
CStringArray m_arsUps; //上标
CString m_sUpScr; //上标脚本
CStringArray m_arsDowns; //下标
CString m_sDownScr; //下标脚本
double m_dTextH; //打印纸面字高度 2.5
double m_dWScale; //打印纸面字宽度 1
double m_dD; //上下标的间隙,在线标注用到
double m_dPScale; //出图比例,由调用方传入
AcDbObjectId m_idTextSty; //文字样式
AcDbObjectId m_idTextLayer; //文字图层
AcGePoint3dArray m_arPoints; //系列点,末点是文字底线开始点
AcGePoint3dArray m_arNoPoints; //批量标注的和管子的交点
AcDbObjectIdArray m_aridAttachs;//附着对象
AecDbObjXDataMap m_mapSpecXData;
// 序号标注 圆圈半径相关
private:
static const CString _Custom_No_R_;
public:
bool SetCustomNoR(const double &v);
double GetCustomNoR() const;
//不序列化
protected:
AecGripData* m_pGripAppData;
};