При разработке собственного CustomEntity, решил разбить ее на SubEntity и написать для SubEntity COM-объекты для паллеты свойств, чтобы выводить отдельные параметры. 
За основу взял пример из 
"ObjectARX 2009\samples\entity\SubEntity\". 
При рисовании объекта в SubWorldDraw, перед рисованием отдельных элементов CustomEntity вызываю mode->subEntityTraits().setSelectionMarker(id). 
По сколько количество SubEntity у меня меняется я рассчитываю SelectionMarker динамически.
- ::subWorldDraw (AcGiWorldDraw *mode)  
- { 
-         .... 
-         for(PolylinePtrVecIt it = polyElems.begin(); it != polyElems.end(); ++it ){              
-                 Adesk::LongPtr markerId = std::distance(polyElems.begin(), it) + 1; 
-                 mode->subEntityTraits().setSelectionMarker( markerId ); 
-                  
-                 mode->subEntityTraits().setColor(3);  
-                 int size = it->get()->numVerts(); 
-                 AcGePoint3dArray polyPnts; 
-                 for(int i = 0; i < (int)it->get()->numVerts(); ++i){ 
-                         AcGePoint3d pnt; 
-                         it->get()->getPointAt(i, pnt); 
-                         polyPnts.append(pnt); 
-                 } 
-   
-                 mode->geometry().polyline(polyPnts.length(), &polyPnts[0]); 
- //              mode->geometry().pline(*it->get()); 
- //              (*it)->worldDraw(mode); 
-         } 
-   
-         .... 
- } 
Когда рисую полилинию по точкам 
- mode->geometry().polyline(polyPnts.length(), &polyPnts[0]); 
При выделении SubEntity (кликом мыши + Сtrl по части CustomEntity), подсвечивается полилиния целиком и в унаследованный метод
- subGetSubentPathsAtGsMarker(AcDb::SubentType  type, Adesk::GsMarker gsMark, const AcGePoint3d & pickPoint, const AcGeMatrix3d & viewXform, int & numPaths, AcDbFullSubentPath *& subentPaths, int  numInserts, AcDbObjectId * entAndInsertStack) const 
gsMark приходить всегда тот что я задал в setSelectionMarker.
Если же рисовать полилинии одним из методов:
- mode->geometry().pline(*it->get()); 
- (*it)->worldDraw(mode); 
При выделении SubEntity (кликом мыши + Сtrl по части CustomEntity), подсвечивается части полилинии (полилиния разбивается на линии) и в унаследованный метод:
- subGetSubentPathsAtGsMarker(AcDb::SubentType  type, Adesk::GsMarker gsMark, const AcGePoint3d & pickPoint, const AcGeMatrix3d & viewXform, int & numPaths, AcDbFullSubentPath *& subentPaths, int  numInserts, AcDbObjectId * entAndInsertStack) const 
gsMark приходить для первой линии (части полилинии что рисовалась) тот что я задал в  setSelectionMarker (в начале это 1), а для последующих инкрементируется (соответственно 2, 3,....).
Проблема в том что мне нужно рисовать полилинии с кривыми (Bulge) и по этому мне не подходит mode->geometry().polyline, а в дальнейшем мне нужно знать какая SubEntity (часть объекта) была выбрана для того чтобы выводить данные в паллету свойств. 
Как можно выйти из этой ситуации? Можно ли сделать так чтобы полилиния выделялась целиком и чтобы gsMark приходил тот что я задаю при рисовании для целой полилинии используя выше указанные методы? С COM-объектами и палеттой свойств для CustomEntity i SubEntity проблем нет.