#pragma once #include "PDList.h" #include "EntityField.h" class EntityFields { public: EntityFields(); EntityFields &operator =(const EntityFields&efs); EntityFields(const EntityFields&efs); virtual ~EntityFields(); //表编辑 long Add(EntityField *pField);//允许重名! void Del(long i); void Clear(); //遍历 long GetSubFieldNum()const; EntityField& GetSubField(long i); const EntityField& GetSubField(long i)const; //查找 long Find(const TCHAR* sName); //读写 void DwgIn(AcDbDwgFiler* pFiler); void DwgOut(AcDbDwgFiler* pFiler)const; void DxfIn(AcDbDxfFiler* pFiler); void DxfOut(AcDbDxfFiler* pFiler)const; //SetFieldData,有自动建立字段功能,不允许重名 bool SFD(const TCHAR *sPathName,const Adesk::Boolean& val); bool SFD(const TCHAR *sPathName,const Adesk::Int8& val); bool SFD(const TCHAR *sPathName,const Adesk::UInt8& val); bool SFD(const TCHAR *sPathName,const Adesk::Int16& val); bool SFD(const TCHAR *sPathName,const Adesk::UInt16& val); bool SFD(const TCHAR *sPathName,const Adesk::Int32& val); bool SFD(const TCHAR *sPathName,const Adesk::UInt32& val); bool SFD(const TCHAR *sPathName,const EntityFields&val); bool SFD(const TCHAR *sPathName,const TCHAR* val); bool SFD(const TCHAR *sPathName,const double& val); bool SFD(const TCHAR *sPathName,const AcGePoint2d& val); bool SFD(const TCHAR *sPathName,const AcGePoint3d& val); bool SFD(const TCHAR *sPathName,const AcGeVector2d& val); bool SFD(const TCHAR *sPathName,const AcGeVector3d& val); bool SFD(const TCHAR *sPathName,const AcGeScale3d& val); bool SFD(const TCHAR *sPathName,const AcDbHardOwnershipId& val); bool SFD(const TCHAR *sPathName,const AcDbSoftOwnershipId& val); bool SFD(const TCHAR *sPathName,const AcDbHardPointerId& val); bool SFD(const TCHAR *sPathName,const AcDbSoftPointerId& val); bool SFD(const TCHAR *sPathName,const AcDbHandle&val); //GetFieldData,不允许重名 bool GFD(const TCHAR *sPathName,Adesk::Boolean& val)const; bool GFD(const TCHAR *sPathName,Adesk::Int8& val)const; bool GFD(const TCHAR *sPathName,Adesk::UInt8& val)const; bool GFD(const TCHAR *sPathName,Adesk::Int16& val)const; bool GFD(const TCHAR *sPathName,Adesk::UInt16& val)const; bool GFD(const TCHAR *sPathName,Adesk::Int32& val)const; bool GFD(const TCHAR *sPathName,Adesk::UInt32& val)const; bool GFD(const TCHAR *sPathName,EntityFields& val)const; bool GFD(const TCHAR *sPathName,CString&val)const; bool GFD(const TCHAR *sPathName,double& val)const; bool GFD(const TCHAR *sPathName,AcGePoint2d& val)const; bool GFD(const TCHAR *sPathName,AcGePoint3d& val)const; bool GFD(const TCHAR *sPathName,AcGeVector2d& val)const; bool GFD(const TCHAR *sPathName,AcGeVector3d& val)const; bool GFD(const TCHAR *sPathName,AcGeScale3d& val)const; bool GFD(const TCHAR *sPathName,AcDbHardOwnershipId& val)const; bool GFD(const TCHAR *sPathName,AcDbSoftOwnershipId& val)const; bool GFD(const TCHAR *sPathName,AcDbHardPointerId& val)const; bool GFD(const TCHAR *sPathName,AcDbSoftPointerId& val)const; bool GFD(const TCHAR *sPathName,AcDbHandle&val)const; //匿名AddFieldData,用于数组(使用这个接口时,数组内字段必须全部匿名!) void AFD(const Adesk::Boolean& val); void AFD(const Adesk::Int8& val); void AFD(const Adesk::UInt8& val); void AFD(const Adesk::Int16& val); void AFD(const Adesk::UInt16& val); void AFD(const Adesk::Int32& val); void AFD(const Adesk::UInt32& val); void AFD(const EntityFields &val); void AFD(const TCHAR* val); void AFD(const double& val); void AFD(const AcGePoint2d& val); void AFD(const AcGePoint3d& val); void AFD(const AcGeVector2d& val); void AFD(const AcGeVector3d& val); void AFD(const AcGeScale3d& val); void AFD(const AcDbHardOwnershipId& val); void AFD(const AcDbSoftOwnershipId& val); void AFD(const AcDbHardPointerId& val); void AFD(const AcDbSoftPointerId& val); void AFD(const AcDbHandle&val); //匿名const GetFieldData bool GFD(long index,Adesk::Boolean& val)const; bool GFD(long index,Adesk::Int8& val)const; bool GFD(long index,Adesk::UInt8& val)const; bool GFD(long index,Adesk::Int16& val)const; bool GFD(long index,Adesk::UInt16& val)const; bool GFD(long index,Adesk::Int32& val)const; bool GFD(long index,Adesk::UInt32& val)const; bool GFD(long index,EntityFields& val)const; bool GFD(long index,CString&val)const; bool GFD(long index,double& val)const; bool GFD(long index,AcGePoint2d& val)const; bool GFD(long index,AcGePoint3d& val)const; bool GFD(long index,AcGeVector2d& val)const; bool GFD(long index,AcGeVector3d& val)const; bool GFD(long index,AcGeScale3d& val)const; bool GFD(long indexe,AcDbHardOwnershipId& val)const; bool GFD(long index,AcDbSoftOwnershipId& val)const; bool GFD(long index,AcDbHardPointerId& val)const; bool GFD(long index,AcDbSoftPointerId& val)const; bool GFD(long index,AcDbHandle&val)const; //匿名读取GetFieldData bool GFD(long index,Adesk::Boolean& val); bool GFD(long index,Adesk::Int8& val); bool GFD(long index,Adesk::UInt8& val); bool GFD(long index,Adesk::Int16& val); bool GFD(long index,Adesk::UInt16& val); bool GFD(long index,Adesk::Int32& val); bool GFD(long index,Adesk::UInt32& val); bool GFD(long index,EntityFields& pVal); bool GFD(long index,CString&val); bool GFD(long index,double& val); bool GFD(long index,AcGePoint2d& val); bool GFD(long index,AcGePoint3d& val); bool GFD(long index,AcGeVector2d& val); bool GFD(long index,AcGeVector3d& val); bool GFD(long index,AcGeScale3d& val); bool GFD(long indexe,AcDbHardOwnershipId& val); bool GFD(long index,AcDbSoftOwnershipId& val); bool GFD(long index,AcDbHardPointerId& val); bool GFD(long index,AcDbSoftPointerId& val); bool GFD(long index,AcDbHandle&val); protected: //解析路径 static void GetFieldPath(const TCHAR *sPathName,SHList &res); //创建直接父节点(不存在的话) EntityFields* CreateParentField(const TCHAR *sPathName,CString &sLastName); //查找直接父节点,返回NULL不存在 EntityFields* FindParentField(const TCHAR *sPathName,CString &sLastName)const; protected: PDList m_lstField; };