How to add your knowledge

Filtering Objects

    Table of contents
    No headers

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

    Filtering Objects (Overview)

    Other Related 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;
    }