选择集用法
最常见的 用户点选
ads_name sset;
//选择集的使用方法 前面四个为空的话就是提示用户进行选择 最后一个参数是选择集返回的名称 acedSSGet(NULL, NULL, NULL, NULL, sset); long len;
//建立一个 len 返回选择集里面实体的个数 也就是用户选择的实体的个数 acedSSLength(sset, &len);
acutPrintf(TEXT("实体数:%d"),len);
//建立一个objarr 用来储存选择集里面实体的id AcDbObjectIdArray objarr; for (int i = 0; i < len;i++) {
//循环len 然后获得实体的名字 ent,i是实体在选择集中的编号 ads_name ent; acedSSName(sset, i, ent);
//通过名字获得id AcDbObjectId objId; acdbGetObjectId(objId, ent); //获得指向当前实体的指针 AcDbEntity *pEnt; Acad::ErrorStatus es = acdbOpenAcDbEntity(pEnt, objId, AcDb::kForWrite); if (es==Acad::eWasOpenForWrite) { continue; }
//在此可以设置实体需要的操作 /* pEnt->setColorIndex(i);*/ objarr.append(pEnt->objectId()); pEnt->close(); } int nlen=objarr.length(); for (int i = 0; i < nlen;i++) {
//如果有objarr 然后一样的循环获得实体 然后操作实体 AcDbObjectId id = objarr.at(i); AcDbEntity *pent; acdbOpenAcDbEntity(pent, id, AcDb::kForWrite); pent->setColorIndex(i); pent->close(); } acedSSFree(sset);