bool ArxDbgUtils::isOnLockedLayer(AcDbEntity* ent, bool printMsg) { AcDbObject* obj; AcDbLayerTableRecord* layer; bool isLocked = false; Acad::ErrorStatus es; es = acdbOpenAcDbObject(obj, ent->layerId(), AcDb::kForRead); if (es == Acad::eOk) { layer = AcDbLayerTableRecord::cast(obj); if (layer) isLocked = layer->isLocked(); else { ASSERT(0); } obj->close(); } else { ASSERT(0); ArxDbgUtils::rxErrorMsg(es); } if (isLocked && printMsg) { acutPrintf(_T("\nSelected entity is on a locked layer.")); } return isLocked; }
CLayerState::CLayerState(const AcDbObjectId& idLayer) { m_idLayer = idLayer; AcDbLayerTableRecord* pLayer = NULL; if (acdbOpenObject(pLayer, m_idLayer, AcDb::kForRead) == Acad::eOk) { m_bOff = pLayer->isOff(); m_bFrozen = pLayer->isFrozen(); m_bLocked = pLayer->isLocked(); pLayer->close(); } else { m_bOff = false; m_bFrozen = false; m_bLocked = false; } }
void AecUiPrEntitySet::getLockedLayers() { m_lockedLayerCache.setLogicalLength(0); m_lockedLayerNames.RemoveAll(); if (m_filterLockedLayers == Adesk::kFalse) return; AcDbLayerTableRecord* layer; const TCHAR* tmpName; AcDbLayerTable* layTbl; Acad::ErrorStatus es = acdbHostApplicationServices()->workingDatabase()->getSymbolTable(layTbl, AcDb::kForRead); if (es == Acad::eOk) { AcDbLayerTableIterator* tblIter; if (layTbl->newIterator(tblIter) == Acad::eOk) { for (; !tblIter->done(); tblIter->step()) { es = tblIter->getRecord(layer, AcDb::kForRead); if (es == Acad::eOk) { if (layer->isLocked()) { m_lockedLayerCache.append(layer->objectId()); es = layer->getName(tmpName); if (es == Acad::eOk) { m_lockedLayerNames.Add(tmpName); } else { AEC_ASSERT(0); m_lockedLayerNames.Add(_DNT(_T(""))); // have to keep balanced } } layer->close(); } } delete tblIter; } else { AEC_ASSERT(0); } layTbl->close(); } }