Filtering Objects

AutoCAD Map 3D ObjectARX

 
Filtering Objects
 
 
 

The following code sample illustrates filtering queried and new drawing objects, and adding and removing objects from the EditSet.

Filtering objects

Code samples

      
#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()))
{
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 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("\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 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("\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 EditSet
AcDbObjectIdArray 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 EditSet
AcDbObjectIdArray 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;
}