201 lines
6.3 KiB
C++
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;
|
|
};
|