Header file: MapArxApi.h.
Note This class has new functions added for AutoCAD Map 3D 2005.
An instance of the AcMapQuery class represents a defined query.
Do not subclass from this class.
Creating a Query
The AcMapQuery class does not have a constructor, and you cannot create and modify its objects directly. After you have created the query definition, instantiate an AcMapQuery object using the AcMapProject::CreateQuery function. This creates the query object in the project, making the query available to the application. You are responsible for deleting the query, as shown in the following example.
// For simplicity, error checking is not shown. #include "StdAfx.h" #include "StdArx.h" #include <MapArxApi.h> #include <MapProj.h> #include <MapQuery.h> AcMapSession *mapApi = NULL; AcMapProject *pProj = NULL; AcMapQuery *pQuery = NULL; mapApi = AcMapGetSession(); mapApi->GetProject(pProj); pProj->CreateQuery(pQuery, Adesk::kTrue); // define and execute the query -- code not shown delete pQuery;
Defining a Query
A = 4) BSPSPopupOnMouseOver(event);;">query definition is built from an AcMapQueryBranch object, which describes the conditions that form the selection criteria of the query. Create the query branch and pass it to the AcMapQuery::Define function to create a query definition. See AcMapQueryBranch class for information about creating the query branch.
Modifying a Query
To modify an existing query, create a new query branch. Then call AcMapQuery::Define to redefine the query using the new query branch.
Executing a Query
Before executing a query, you may also want to set the mode (using AcMapQuery::SetMode), enable or disable = 4) BSPSPopupOnMouseOver(event);;">property alteration (using AcMapQuery::EnablePropertyAlteration) or create a report template (using AcMapQuery::GetReportTemplate) for the query. before executing a query. Then call AcMapQuery::Run to execute the query.
The following example, which assumes drawings are attached, shows how to create a command that creates, defines, and executes a query. For simplicity, error checking is not shown.
#include "StdAfx.h" #include "StdArx.h" #include <MapArxApi.h> #include <MapProj.h> #include <MapQuery.h> #include <MapBoundary.h> void asdkhelpqueryall() { AcMapSession *mapApi = NULL; AcMapProject *pProj = NULL; AcMapDrawingSet *pDSet = NULL; AcMapQueryBranch *pQBranch = NULL; AcMapLocationCondition *pLocationCondition = NULL; AcMapQuery *pNewQuery = NULL; mapApi = AcMapGetSession(); mapApi->GetProject(pProj); pProj->GetDrawingSet(pDSet); pQBranch = new AcMapQueryBranch(); pLocationCondition = new AcMapLocationCondition(AcMap::kOperatorAnd, AcMap::kLocationInside); pLocationCondition->SetBoundary((&AcMapAllBoundary;())); pProj->CreateQuery(pNewQuery, Adesk::kFalse); pNewQuery->Clear(Adesk::kTrue); pNewQuery->SetMode(AcMap::kQueryDraw); pQBranch->AppendOperand(pLocationCondition); pNewQuery->Define(pQBranch); pNewQuery->Run(); pDSet->ZoomExtents(); delete pLocationCondition; delete pQBranch; delete pNewQuery; acedRetVoid(); }
Error Codes
If the return value of a query function is of type AcMap::EErrCode and the function succeeds, it returns AcMap::kOk. Error codes denoting unsuccessful conditions are listed under AcMap::EErrorCode.