Drawing Set Sample

AutoCAD Map 3D ObjectARX

 
Drawing Set Sample
 
 
 

The following sample demonstrates drawing set operations.

    
void editDSet()
{
AcMapSession *mapApi;
AcMapProject   *pProj;
AcMapDrawingSet *pDSet;
char       res[32];
do {
mapApi = AcMapGetSession();
if (mapApi == NULL)
{
acutPrintf ("\nCan't connect MAP") ;
break ;
}
if (mapApi->GetProject(pProj) == Adesk::kFalse)
{
break ;
}
if (pProj->GetDrawingSet(pDSet) == Adesk::kFalse)
{
acutPrintf ("\nCan't get drawing set") ;
break ;
}
do {
// Setup
printDSet(pDSet) ;
*res = EOS ;
acedInitGet(
0,
"eXit aTtach Detach Activate deaCtivate Settings
gettaBle aLiases View Preview Report Query Zoom") ;
if (acedGetKword(
"\naTtach/Detach/Activate/deaCtivate/
Settings/gettaBle/aLiases/View/Preview/Report/
Query/Zoom/<eXit>: ",
res
) == RTNORM)
{
if (*res == EOS || !(strcmp(res, "eXit")))
{
break ;
}
// Attach a drawing
else if (!strcmp(res, "aTtach"))
{
if (acedGetString (
1,
"Enter alias path: ",
res
) == RTNORM)
{
AcMapAttachedDrawing *pDwg = NULL ;
if (pDSet->AttachDrawing(pDwg, res) == AcMap::kOk)
{
delete pDwg ;
}
}
}
// Detach a drawing
else if (!strcmp(res, "Detach"))
{
acedGetString(1, "Enter drawing path ", res) ;
AcMapAttachedDrawing *pDwg = NULL ;
pDSet->DetachDrawing(res) ;
}
// Activate a drawing
else if (!strcmp(res, "Activate"))
{
acedGetString(1, "Enter drawing path ", res) ;
AcMapAttachedDrawing *pDwg = NULL ;
if (pDSet->GetDrawing(
pDwg,
res,
Adesk::kFalse
) == AcMap::kOk)
{
pDwg->Activate() ;
delete pDwg ;
}
}
// Deactivate a drawing
else if (!strcmp(res, "deaCtivate"))
{
acedGetString(1, "Enter drawing path ", res) ;
AcMapAttachedDrawing *pDwg = NULL ;
if (pDSet->GetDrawing(
pDwg,
res,
Adesk::kFalse
) == AcMap::kOk)
{
pDwg->Deactivate() ;
delete pDwg ;
}
}
// Get a drawing's symbol table
else if (!strcmp(res, "gettaBle"))
{
acedGetString(1, "Enter drawing path ", res) ;
AcMapAttachedDrawing *pDwg = NULL ;
if (pDSet->GetDrawing(
pDwg,
res,
Adesk::kFalse
) == AcMap::kOk)
{
getTable(pDwg) ;
delete pDwg ;
}
}
// Edit a drawing's settings
else if (!strcmp(res, "Settings"))
{
acedGetString(1, "Enter drawing path ", res) ;
AcMapAttachedDrawing *pDwg = NULL ;
if (pDSet->GetDrawing(
pDwg,
res,
Adesk::kFalse
) == AcMap::kOk)
{
editSettings(pDwg) ;
delete pDwg ;
}
}
// Preview all of a drawing
else if (!strcmp(res, "View"))
{
acedGetString(1, "Enter drawing path ", res) ;
AcMapAttachedDrawing *pDwg = NULL ;
if (pDSet->GetDrawing(
pDwg,
res,
Adesk::kFalse
) == AcMap::kOk)
{
pDwg->Preview() ;
delete pDwg ;
}
}
// Preview queried objects in a drawing
else if (!strcmp(res, "Preview"))
{
acedGetString(1, "Enter drawing path ", res) ;
AcMapAttachedDrawing *pDwg = NULL ;
if (pDSet->GetDrawing(
pDwg,
res,
Adesk::kFalse
) == AcMap::kOk)
{
AcDbObjectIdArray tIds ;
pDwg->ApplyQuery(tIds) ;
pDwg->Preview(tIds) ;
delete pDwg ;
}
}
// Create a report of the queried objects in a drawing
else if (!strcmp(res, "Report"))
{
acedGetString(1, "Enter drawing path ", res) ;
AcMapAttachedDrawing *pDwg = NULL ;
if (pDSet->GetDrawing(
pDwg,
res,
Adesk::kFalse
) == AcMap::kOk)
{
AcDbObjectIdArray tIds ;
pDwg->ApplyQuery(tIds) ;
pDwg->Report(tIds) ;
delete pDwg ;
}
}
// Copy the drawing objects matching the
// current query to the project drawing
else if (!strcmp(res, "Query"))
{
acedGetString(1, "Enter drawing path ", res) ;
AcMapAttachedDrawing *pDwg = NULL ;
if (pDSet->GetDrawing(
pDwg,
res, Adesk::kFalse
) == AcMap::kOk)
{
AcDbObjectIdArray tIds ;
pDwg->ApplyQuery(tIds) ;
pDwg->QueryIn(tIds) ;
delete pDwg ;
}
}
// Zoom the drawings to the maximum
else if (!strcmp(res, "Zoom"))
{
pDSet->ZoomExtents() ;
}
}
else
{
break ;
}
printErrStack() ;
} while(1) ;
} while (0) ;
}