Files
envi-code/SourceCode/Code2026/tg_shs/inc/TArch/TDbStruBarBase.h
T
2026-09-28 15:28:50 +08:00

151 lines
5.4 KiB
C++

//------------------------------------------------------------------------+
// Copyright (C), 1998-2012, Beijing Tangent Software Co. Ltd.
// = FileName : TDbStruBarBase.h
// = Version : ver1.0
// = Author : zyc
// = CreateDate : 2012-11-02
// = Description: 条形基础平面图类声明
// = Maintainers:
//
//------------------------------------------------------------------------+
#ifdef TASD
#ifndef _TDBSTRUBARBASE_H_
#define _TDBSTRUBARBASE_H_
#ifndef _TDBBASEWALL_H_
#include "TDbBaseWall.h"
#endif
/* TDbBaseWall
int m_nWeight; //对象材质重量,类似于优先级 KEY_WEIGHT
AcGePoint3d m_ptStart; //起点 KEY_START
AcGePoint3d m_ptEnd; //终点 KEY_END
double m_dBulge; //凸度 KEY_BULGE
double m_dWidth; //宽度 KEY_W
double m_dHeight; //高度 KEY_H
CString m_strCLab //构件编号 KEY_CLAB
*/
class TARCH_EXP TDbStruBarBase : public TDbBaseWall
{
DECLARE_TENTBASE();
ACRX_DECLARE_MEMBERS(TDbStruBarBase);
public:
TDbStruBarBase();
virtual ~TDbStruBarBase();
// Overriden function from AcDbEntity
virtual Acad::ErrorStatus dwgInFields (AcDbDwgFiler* pFiler);
virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const;
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 subTransformBy(const AcGeMatrix3d& xform);
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);
virtual Acad::ErrorStatus subGetClassID(CLSID* pClsid) const;
virtual Acad::ErrorStatus subDeepClone(AcDbObject* pOwner,
AcDbObject*& pClonedObject,
AcDbIdMapping& idMap,
Adesk::Boolean isPrimary) const;
virtual Acad::ErrorStatus subWblockClone(
AcRxObject* pOwner,
AcDbObject*& pClonedObject,
AcDbIdMapping& idMap,
Adesk::Boolean isPrimary) const;
virtual Acad::ErrorStatus subIntersectWith(
const AcDbEntity* ent,
AcDb::Intersect intType,
AcGePoint3dArray& points,
INT_PTR thisGsMarker = 0,
INT_PTR otherGsMarker = 0) const;
virtual Acad::ErrorStatus subIntersectWith(
const AcDbEntity* ent,
AcDb::Intersect intType,
const AcGePlane& projPlane,
AcGePoint3dArray& points,
INT_PTR thisGsMarker = 0,
INT_PTR otherGsMarker = 0) const;
// TEntityBase
// 夹点提示
virtual Acad::ErrorStatus GetGripText(int i, CString &cs) const;
virtual Acad::ErrorStatus ExplodeOrDraw3d(TGGiExplodeDrawBase &dc) const;
virtual Acad::ErrorStatus ExplodeOrDraw2d(TGGiExplodeDrawBase &dc) const;
virtual Acad::ErrorStatus GetExtents2d(TADSGePoint3d &ptLow, TADSGePoint3d &ptUp) const;
virtual Acad::ErrorStatus GetExtents(TADSGePoint3d &ptLow, TADSGePoint3d &ptUp) const;
//取动态属性显示数据
virtual void GetTips(TDPtrList<TObjInfoUnit> &lstInfo) const;
virtual const TCHAR *GetDefaultLayer() const;
virtual BOOL IsValid() const;
// 支持夹点ctrl功能切换
virtual int GetCtrlToggleIndex()const;
virtual void CopyPropertiesFrom(AcDbEntity *pSrcEntity, unsigned gMatchFlag);
virtual TEntityBase::DrawType GetDrawType() const;
virtual bool GetStandardFaceBody(AcDbVoidPtrArray& arFacePtrs) const;
virtual bool GetSafeProtectedSpace(AcDbVoidPtrArray& arFacePtrs) const;
virtual bool GetSection(
const AcDbFace &face,
const AcGeVector3d &vtPlaneSecDir,
std::vector<TObjSectionRecord> &sectionRecords,
AcDbVoidPtrArray &arFillPtrs) const;
virtual CString GetXml(const AcGeMatrix3d& mat) const;
virtual int GetFirstVersion()const;
virtual bool IsModelEntity() const;
//TDbBaseWall
// 对象修改发出关联更改消息
virtual void PostAssocMsg(TAssocMsg assocMsg)const;
// 对象接收到更改消息
virtual void ReceiveAssocMsg(TAssocMsg assocMsg);
// 建立关联关系
virtual void MakeAssocRelation(AcDbObjectIdArray& ids);
// 移除关联关系
virtual void RemoveAssocRelation(AcDbObjectId& id);
// 获得基础总宽度
virtual void GetTotalWidth(double &dWidth)const;
// 获得基础总高度
virtual void GetTotalHeight(double &dHeight)const;
// 基础外围poly2d
virtual void GetPoly2D(TGGePoly2D &poly2d) const;
virtual BOOL CanMerge(AcDbObjectId idWall);
private:
// 独立移动
void SingleMove(const AcDbIntArray& indices, const AcGeVector3d& offset);
// 关联移动
void AssociateMove(const AcDbIntArray& indices, const AcGeVector3d& offset);
// 绘制端点的封口线
Acad::ErrorStatus DrawSideLine2d(bool bStart, const AcDbObjectId &idWall, const TBaseWallLine &wallLine, TGGiExplodeDrawBase &dc) const;
// 绘制加粗的线
Acad::ErrorStatus DrawWeightLine2d(TGGiExplodeDrawBase &dc) const;
Acad::ErrorStatus DrawWeightLine2d(TGGiExplodeDrawBase &dc, TGGeVisibilityPoly2D &poly, bool bVal) const;
// 融合后生成的TGGeVisibilityPoly2D
void GetIntegratedPoly2d(TGGeVisibilityPoly2D &poly) const;
// 基础平行时,获得封口线,poly的0索引点与左基础线起点或终点重合
void GetSideLine2d(bool bStart, const AcDbObjectId &idWall, const TBaseWallLine &wallLine, TGGeVisibilityPoly2D &poly) const;
private:
static const Adesk::UInt8 g_nVersion;
};
#endif
#endif