void ArxDbgUiDlgClassDict::buildClassList() { // get an interator over the class dictionary AcRxDictionary* classDict = acrxClassDictionary; AcRxDictionaryIterator* iter; if ((classDict == NULL) || ((iter = classDict->newIterator()) == NULL)) { ArxDbgUtils::stopAlertBox(_T("ERROR: Couldn't get class dictionary.")); return; } // iterate over each item and get its info AcRxObject* classDictItem; AcRxClass* classObj; const char* text; CString str, className, dxfName, appName; for (; !iter->done(); iter->next()) { classDictItem = iter->object(); if ((classObj = AcRxClass::cast(classDictItem)) != NULL) { if ((text = classObj->appName()) != NULL) appName = text; else appName = _T(""); if ((text = classObj->name()) != NULL) className = text; else className = _T(""); if ((text = classObj->dxfName()) != NULL) dxfName = text; else dxfName = _T(""); m_classNameStrList.AddTail(className); m_dxfNameStrList.AddTail(dxfName); m_appNameStrList.AddTail(appName); if (dxfName.IsEmpty()) { m_proxyStrList.AddTail(_T("")); m_birthDwgVerList.AddTail(_T("")); m_birthMntVerList.AddTail(_T("")); } else { int dwgVer = 0; int maintVer = 0; classObj->getClassVersion(dwgVer, maintVer); m_proxyStrList.AddTail(ArxDbgUtils::intToStr(classObj->proxyFlags(), str)); m_birthDwgVerList.AddTail(ArxDbgUtils::dwgVersionToStr(static_cast<AcDb::AcDbDwgVersion>(dwgVer), str)); m_birthMntVerList.AddTail(ArxDbgUtils::intToStr(maintVer, str)); } } else { ArxDbgUtils::stopAlertBox(_T("ERROR: found non AcRxClass in class dictionary!")); } } delete iter; }
void AecUiPrEntitySet::getAllowableClassTypes() { ASSERT(m_allowedClassTypes.length() == m_doIsATest.length()); m_classTypeCache = m_allowedClassTypes; // copy over all the definite classes that are ok AcRxDictionaryIterator* iter; AcRxDictionary* classDict = acrxClassDictionary; if (classDict == NULL) { AEC_ASSERT(0); return; } int len = m_doIsATest.length(); for (int i=0; i<len; i++) { // if not doing isA() testing, must get all classes derived from // this one. if (m_doIsATest[i] == Adesk::kFalse) { iter = classDict->newIterator(); if (iter != NULL) { // iterate over each item and get its info AcRxObject* classDictItem; AcRxClass* classObj; for (; !iter->done(); iter->next()) { classDictItem = iter->object(); if ((classObj = AcRxClass::cast(classDictItem)) != NULL) { if (classObj->isDerivedFrom(static_cast<AcRxClass*>(m_allowedClassTypes[i]))) { if (m_classTypeCache.contains(classObj) == Adesk::kFalse) { m_classTypeCache.append(classObj); } } } else { AEC_ASSERT(0); } } delete iter; } else { AEC_ASSERT(0); } } } }