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 pointer AcMapOSEConnection *pConnection = AcMapOSEGetConnection(); // Declare project interface AcMapOSEProject *pProject = new AcMapOSEProject(pConnection); // Initialize project interface with a drawing database if(pProject->Init( acdbHostApplicationServices()->workingDatabase())) {} else {acutPrintf("\nProject interface initialized\n");} // Filter queried objects // Empty vector of features means filter all features in // the drawing database std:vector<std:string> vFeatureNames; // Similarly empty input array of objectIds means filter // all objects in the drawing database AcDbObjectIdArray arrInput, arrErased; AcDbObjectIdArray arrModified, arrUnchanged, arrFilteredOut; if(pProject->FilterQueriedObjects( vFeatureNames, arrInput, arrErased, arrModified, arrUnchanged, arrFilteredOut, AcMapOSEProject::kInEditSet | AcMapOSEProject::kNotInEditSet)) {acutPrintf("\nError initializing project interface\n");} else {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());} // Filter new objects // Filter these features vFeatureNames.push_back("Feature1"); vFeatureNames.push_back("Feature2"); // Empty input array of objectIds means filter all objects // in the drawing database AcDbObjectIdArray arrInput, arrNew, arrFilteredOut; if(pProject->FilterNewObjects( vFeatureNames, arrInput, arrNew, arrFilteredOut, AcMapOSEProject::kInEditSet | AcMapOSEProject::kNotInEditSet)) {acutPrintf("\nFilterQueriedObjects() returned false\n");} else {acutPrintf("\n Input array = %d\n",arrInput.length()); acutPrintf("\n New array = %d\n",arrErased.length()); acutPrintf("\n Filter array = %d\n",arrFilteredOut.length());} // 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 EditSet AcDbObjectIdArray arrAcadIds, arrFilteredOut; // ... (add code to populate arrAcadIds) if(pProject->AddToEditSet(arrAcadIds, arrFilteredOut)) {acutPrintf("\nFilterNewObjects() returned false\n");} else {acutPrintf("\nObjects added 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 EditSet AcDbObjectIdArray arrAcadIds, arrFilteredOut; // ... (add code to populate arrAcadIds) if(pProject->RemoveFromEditSet(arrAcadIds, arrFilteredOut)) {acutPrintf("\nError adding objects to EditSet\n");} else {acutPrintf("\nObjects removed from EditSet\n");} delete pProject;acutPrintf("\nError removing objects from EditSet\n");