Gets the entity name for the specified handle.
int
ade_qryhandent(
ade_id dwg_id,
char* handle,
ads_name result);
Returns RTNORM or an error code.
| dwg_id | ID of the drawing in which the object resides. |
| handle | Original handle of the object in the specified drawing. |
| result | Output the entity name for the specified drawing ID and handle. |
This function provides access to the entity name of an object in a source database.
You must use the retrieved entity name immediately before you call any other function (except ade_expreval) or return control to AutoCAD.
Once you have the entity name of an object, you can use it with other functions. For example, you could use entget (or ads_entget) to retrieve the entity and its definition data.
To get the original handle of the object in the source drawing, use the ade_qrygetentlist function.
To obtain a drawing ID, use ade_dslist.
To get the ID of a drawing given a drawing file path, use ade_dwggetid.
The following sample shows how you can combine ade_qrygetentlist and ade_qryhandent to count the number of objects in the source drawing(s) that are of type lwpolyline. First the current query defenition is cleared and a new location query is defined. The drawing ids for the attached drawings are obtained using ade_dslist(). Entity handles for objects which satisfy the current query are obtained from the active drawing using ade_qrygetentlist. The resbuf returned by ade_qrygetentlist is parsed and the entity name for each object is passed to acdbEntGet() which returns entity information that is checked for a type of LWPOLYLINE. A count of lwpolylines is displayed and all resbufs are released as required.
int resultCode = ade_qryclear();
char* pszJoinOperator = ""; // none
char* pszBgnCondGrouping = ""; // none
char* pszNotOperator = ""; // none
char* pszCondType = "Location";
char* pszEndCondGrouping = ""; // none
struct resbuf* pLocQueryConditionRb = acutBuildList(
RTLB,
RTSTR, "All",
RTLE,
0 );
ade_id locQueryId = ade_qrydefine(
pszJoinOperator,
pszBgnCondGrouping,
pszNotOperator,
pszCondType,
pLocQueryConditionRb,
pszEndCondGrouping);
long lwPlineCount = 0;
struct resbuf* pSelectedObjHandlesRb = NULL;
struct resbuf* pEntdata = NULL;
struct resbuf* pAttachedDwgsRb = ade_dslist(ADE_NULLID, 1);
if (NULL != pAttachedDwgsRb) {
struct resbuf* rb = pAttachedDwgsRb;
while(NULL != rb) {
if (ADE_TRUE == ade_dwgisactive(rb->resval.rreal)) {
pSelectedObjHandlesRb = ade_qrygetentlist(rb->resval.rreal);
if (NULL != pSelectedObjHandlesRb) {
struct resbuf* rb1 = pSelectedObjHandlesRb;
while(NULL != rb1) {
ads_name queriedEntity;
resultCode = ade_qryhandent(
rb->resval.rreal, // dwg_id
rb1->resval.rstring, // handle
queriedEntity);
pEntdata = acdbEntGet(queriedEntity);
while(NULL != pEntdata) {
if (0 == pEntdata->restype &&
(_tcscmp(pEntdata->resval.rstring, "LWPOLYLINE") == 0)) {
lwPlineCount++;
}
pEntdata = pEntdata->rbnext;
}
rb1 = rb1->rbnext;
}
}
acutPrintf(
"\nThere are %d \"LWPOLYLINES\" in the active drawing set."
, lwPlineCount);
}
else{
acutPrintf(
"\nThe drawing was not active.");
}
rb = rb->rbnext;
}
}
else {
acutPrintf(
"\nThere are no attached drawings in this project.");
}
acutRelRb(pAttachedDwgsRb);
acutRelRb(pSelectedObjHandlesRb);
acutRelRb(pEntdata);


