对已经建成的实体进行修改,首先要打开实体所在的数据库,然后通过数据库分配给该实体的ID获得该实体的指针,就可以查询或修改实体的属性。
ARX中有三个函数实现ID到指针的转换:acdbOpenAcDbEntity()、acdbOpenObject()、acdbOpenAcDbObject(),这三个函数的区别是适用范围不同。
例1:一个ARX修改实体颜色的函数
Acad::ErrorStatus ChangeColor(AcDbObjectId entId,Adesk::UInt16 colorIndex)
{
AcDbEntity *pEntity;
acdbOpenObject(pEntity,entId,AcDb::kForWrite);
pEntity->setColorIndex(colorIndex);
pEntity->close();
return Acad::eOk;
}
例2:一个ARX修改实体颜色的函数
struct resbuf *crvRb = NULL;
{crvRb = ads_entget(entName);
if (crvRb == NULL)
return;
for (eb2=crvRb; eb2!=NULL; eb2=eb2->rbnext)
{
if (eb2->restype == 8)
{char * strLayer = NULL;
strLayer = (char *)malloc((strlen(layerName) + 1) * sizeof (char) );
strcpy(strLayer, layerName);
free( eb2->resval.rstring );
eb2->resval.rstring = strLayer;
break;
}
}
iStatus = ads_entmod( crvRb );
}
ads_relrb (crvRb);
crvRb = NULL;