Тема: Выбор объектов рисунка с помощью метода acedSSGet
Добрый день.
Не получается выбрать блоки одинаковым атрибутом.
long i = 0; ads_name m_ssname; struct resbuf** resBufTemp; struct resbuf* resBufEntityFilter = NULL; // 1. сформировать строку фильтра // 1.1 по названиям примитивов resBufTemp = &resBufEntityFilter; if( entNamesVec.size() ){ *resBufTemp = acutBuildList( AcDb::kDxfOperator, _T( "<OR" ), 0 ); resBufTemp = &(*resBufTemp)->rbnext; for( i = 0; i < (int)entNamesVec.size(); i++){ *resBufTemp = acutBuildList( RTDXF0, entNamesVec[i], 0 ); resBufTemp = &(*resBufTemp)->rbnext; } *resBufTemp = acutBuildList( AcDb::kDxfOperator, _T( "OR>" ), 0 ); resBufTemp = &(*resBufTemp)->rbnext; } // 1.3 по названию слоя if( !info.m_Layer.IsEmpty() ){ *resBufTemp = acutBuildList( AcDb::kDxfLayerName, BlockLayer, RTNONE ); resBufTemp = &(*resBufTemp)->rbnext; } if( !info.m_Name.IsEmpty() ){ *resBufTemp = acutBuildList( AcDb::kDxfBlockName, BlockName, RTNONE ); resBufTemp = &(*resBufTemp)->rbnext; } if( !info.m_Attribute.IsEmpty() ){ *resBufTemp = acutBuildList( AcDb::kDxfAttributeTag, BlockAttributeTag, RTNONE ); resBufTemp = &(*resBufTemp)->rbnext; } // 2. получить примитивы с чертежа int nDoneSS = acedSSGet( _T("_X"), NULL, NULL, resBufEntityFilter, m_ssname ); acutRelRb( resBufEntityFilter ); if( nDoneSS != RTNORM ) return false; // 3. сформировать массив AcDbObjectIdArray long len; ads_name ent; AcDbObjectId objId; if( acedSSLength( m_ssname, &len ) == RTNORM ){ for( i=0; i < len; i++) { if(acedSSName( m_ssname, i, ent ) != RTNORM) continue; if(acdbGetObjectId( objId, ent ) != Acad::eOk) continue; objIdArr.append( objId ); } } acedSSFree( m_ssname ); return true;
Посоветуйте что делать.