Filtering Objects
Filtering Objects
The following code sample illustrates filtering queried and new drawing objects, and adding and removing objects from the EditSet.
#include "StdAfx.h"#include "StdArx.h"#include "AdMapOracleConnection.h"#include "AdMaporacleProject.h"BOOL FilterProjectObjects(){// Get connection pointerAcMapOSEConnection *pConnection = AcMapOSEGetConnection();// Declare project interfaceAcMapOSEProject *pProject = new AcMapOSEProject(pConnection);// Initialize project interface with a drawing databaseif(pProject->Init(acdbHostApplicationServices()->workingDatabase())){acutPrintf("\nProject interface initialized\n");}else{acutPrintf("\nError initializing project interface\n");}// Filter queried objects// Empty vector of features means filter all features in// the drawing databasestd:vector<std:string> vFeatureNames;// Similarly empty input array of objectIds means filter// all objects in the drawing databaseAcDbObjectIdArray arrInput, arrErased;AcDbObjectIdArray arrModified, arrUnchanged, arrFilteredOut;if(pProject->FilterQueriedObjects(vFeatureNames,arrInput,arrErased,arrModified,arrUnchanged,arrFilteredOut,AcMapOSEProject::kInEditSet | AcMapOSEProject::kNotInEditSet)){acutPrintf("\n Input array = %d\n",arrInput.length());acutPrintf("\n Erased array = %d\n",arrErased.length());acutPrintf("\n Modified array = %d\n",arrModified.length());acutPrintf("\n Unchanged array = %d\n",arrUnchanged.length());acutPrintf("\n Filter array = %d\n",arrFilteredOut.length());} else {acutPrintf("\nFilterQueriedObjects() returned false\n");}// Filter new objects// Filter these featuresvFeatureNames.push_back("Feature1");vFeatureNames.push_back("Feature2");// Empty input array of objectIds means filter all objects// in the drawing databaseAcDbObjectIdArray arrInput, arrNew, arrFilteredOut;if(pProject->FilterNewObjects(vFeatureNames,arrInput,arrNew,arrFilteredOut,AcMapOSEProject::kInEditSet | AcMapOSEProject::kNotInEditSet)){acutPrintf("\n Input array = %d\n",arrInput.length());acutPrintf("\n New array = %d\n",arrErased.length());acutPrintf("\n Filter array = %d\n",arrFilteredOut.length());} else {acutPrintf("\nFilterNewObjects() returned false\n");}// Add objects to EditSet// Populate arrAcadIds with drawing objects by manually// selecting or iterating through drawing database;// arrFilteredOut reports objects that could not be// added to the EditSetAcDbObjectIdArray arrAcadIds, arrFilteredOut;// ... (add code to populate arrAcadIds)if(pProject->AddToEditSet(arrAcadIds, arrFilteredOut)){acutPrintf("\nObjects added to EditSet\n");}else{acutPrintf("\nError adding objects to EditSet\n");}// Remove objects from EditSet// Populate arrAcadIds with drawing objects by manually// selecting or iterating through drawing database;// arrFilteredOut reports objects that could not be// removed from the EditSetAcDbObjectIdArray arrAcadIds, arrFilteredOut;// ... (add code to populate arrAcadIds)if(pProject->RemoveFromEditSet(arrAcadIds, arrFilteredOut)){acutPrintf("\nObjects removed from EditSet\n");}else{acutPrintf("\nError removing objects from EditSet\n");}delete pProject;}