Creating an Object Data Table
Creating an Object Data Table
The following sample creates an object data table called Zones with two columns, Residential and Commercial.
To create an object data table
- Include the necessary
header files:
#include "StdAfx.h"
#include "StdArx.h"
#include <MapODColumn.h>
#include <MapArxApi.h>
#include <MapODDefinition.h>
#include <MapProj.h>
- Create variables for
the session, project, object data container, table, and columns.
For example, create variables for a table with two columns.
AcMapSession *mapApi;
AcMapProject *pProj;
AcMapODContainer *pODCont;
AcMapODTableDefinition *pTabDef = NULL;
AcMapODColumnDefinition *pColDef1 = NULL;
AcMapODColumnDefinition *pColDef2 = NULL;
- Create an AutoCAD Map 3D
session and get the top level objects.
mapApi = AcMapGetSession();
mapApi->GetProject(pProj);
pProj->GetODContainer(pODCont);
- Allocate memory for table
and column objects by calling the table and column constructors
with the new operator.
pTabDef = new AcMapODTableDefinition();
pColDef1 = new AcMapODColumnDefinition();
pColDef2 = new AcMapODColumnDefinition();
- For each of the columns,
set the column name and description and the type of data the column
stores. Set the default value for the data.
pColDef1->SetName("Residential");pColDef1->SetDescription("Residential R1-R3");pColDef1->SetType(AcMap::kCharacter);
pColDef1->SetDefaultValue("R1");pColDef2 = new AcMapODColumnDefinition();
pColDef2->SetName("Commercial");pColDef2->SetDescription("Commercial C1-C3");pColDef2->SetType(AcMap::kCharacter);
pColDef2->SetDefaultValue("C1"); - Add the column definitions
to the table definition.
pTabDef->AddColumn(*pColDef1);
pTabDef->AddColumn(*pColDef2);
- Create the object data
table. For example, create a table called Zones to store XData using
the following code:
pODCont->CreateODTable("Zones", *pTabDef, "Zoning of King City",Adesk::kTrue);
- Release the memory you
allocated for the table and columns in step 4 using the delete operator.
if (pColDef2) delete pColDef2;
if (pColDef1) delete pColDef1;
if (pTabDef) delete pTabDef;