现在看一下AsdkEmployeeDetails.h头文件中的AsdkEmployeeDetails类声明,您会发现该向导添加了以下成员函数(因为我们选择在“ ObjectDBX自定义对象类向导”中实现dwg / dxf协议)
//----- AcDbObject protocols

//- Dwg Filing protocol

virtual Acad::ErrorStatus dwgOutFields (AcDbDwgFiler *pFiler) const ;

virtual Acad::ErrorStatus dwgInFields (AcDbDwgFiler *pFiler) ;

//- Dxf Filing protocol

virtual Acad::ErrorStatus dxfOutFields (AcDbDxfFiler *pFiler) const ;

virtual Acad::ErrorStatus dxfInFields (AcDbDxfFiler *pFiler) ;

使用这些函数是为了使我们可以将自定义类写到持久存储中并从中读取自定义类。 有关这些功能的更多信息,请参考《 ObjectARX开发人员指南》和在线帮助。.

 

我们将添加以下成员变量,如下表所示:

为AsdkEmployeeDetails对象添加成员变量:

Variable Name Data Type DXF Code
m_lastName TCHAR* 300
m_firstName TCHAR* 301
m_cube Adesk::Int32 90
m_ID Adeak::Int32 91

 

  1. 在AsdkEmployeeDetails.h头文件中,在AsdkEmployeeDetails声明中添加以下内容:
private:
Adesk::Int32 m_ID;
Adesk::Int32 m_cube;
TCHAR* m_firstName;
TCHAR* m_lastName;

 

  1. 在AsdkEmployeeDetails.cpp文件中添加以下构造函数.
//-----constructor
AsdkEmployeeDetails::AsdkEmployeeDetails():AcDbObject()
{

//-----do your initialization.
m_firstName = NULL;
m_lastName = NULL;

}

 

  1. 我们需要为这些成员变量添加访问/修改功能。 在AsdkEmployeeDetails声明中添加以下内容.
public:
Acad::ErrorStatus setID(const Adesk::Int32 ID);
Acad::ErrorStatus iD(Adesk::Int32& ID);
Acad::ErrorStatus setCube(const Adesk::Int32 cube);
Acad::ErrorStatus cube(Adesk::Int32& cube);
Acad::ErrorStatus setFirstName(const TCHAR* firstName);
Acad::ErrorStatus firstName(TCHAR*& firstName);
Acad::ErrorStatus setLastName(const TCHAR* lastName);
Acad::ErrorStatus lastName(TCHAR*& lastName);

 

  1. 以下代码显示了如何在AsdkEmployeeDetails.cpp文件中实现上述功能。 此代码实现firstName(),它将返回存储在AsdkEmployeeDetails对象中的名字,而setFirstName()将为该对象设置名字.
Acad::ErrorStatus AsdkEmployeeDetails::firstName(TCHAR *& firstName)
{

assertReadEnabled();
firstName = _tcsdup(m_firstName);
return Acad::eOk;

}

Acad::ErrorStatus AsdkEmployeeDetails::setFirstName(const TCHAR* firstName)
{

assertWriteEnabled();
if (m_firstName)
free(m_firstName);
m_firstName = _tcsdup(firstName);
return Acad::eOk;

}

 

  1. 请注意在firstName()中调用的函数assertReadEnabled()。 从对象读取任何数据之前,必须先调用此函数。 此功能将检查对象是否确实已打开供读取,如果没有打开,它将引发异常,在此阶段,用户至少可以保存其图形。
  2. 类似地,应该在试图修改对象的函数中调用assertWriteEnabled()。此函数将检查对象是否已打开以进行写入,如果不是,则将引发异常,在该阶段用户至少可以保存其图形.
  3. 类似地实现所有剩余的访问/修改功能.

尝试自己实现上述所有功能。 不要忘记ObjectARX联机帮助以获取快速参考。 如果卡住,则可以打开 Step05解决的项目 并研究EmployeeDetails项目的AsdkEmployeeDetails.cpp和AsdkEmployeeDetails.h文件中的代码.

 

NEXT: 初始化AsdkEmployeeDetails类

 

Adding member variables to the AsdkEmployeeDetails class 
Copyright ? 2013 Autodesk, Inc.