151 lines
5.4 KiB
C++
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> §ionRecords,
|
|
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 |