Добрый день.
Столкнулся с такой проблемой при разработке CustomEntity:
Есть собственный примитив MyEntity, который представляет собой контейнер примитивов MySubEntity AcDbVoidPtrArray entArr;
Мне нужно при выделении SubEntity получить его ручки чтобы изменять MySubEntity в соответствии с переопределенным в нем subMoveGripPointsAt.
Получаю ручки так
Acad::ErrorStatus MyEntity::subGetGripPointsAtSubentPath(const AcDbFullSubentPath & path, AcDbGripDataPtrArray & grips, const double curViewUnitSize, const int gripSize, const AcGeVector3d & curViewDir, const int bitflags) const
{
        assertReadEnabled();
        grips.setLogicalLength(0);
 
        long ind = path.subentId().index();
        ((MySubEntity*)entArr[ind - 1])->getGripPoints(grips, curViewUnitSize, gripSize, curViewDir, bitflags);
        AcGeMatrix3d mat = getMatrix();
 
        for (int i = 0; i < grips.length(); i++)
        {
                AcDbGripData* gr = grips.at(i);
                gr->setGripPoint(AcGePoint3d(gr->gripPoint()).transformBy(mat));
        }
 
        return (Acad::eOk);
}
Метод работает нормально, ручки появляются.
Проблема в методе subMoveGripPointsAtSubentPaths, где gripAppData при перемещении одной ручки должен содержать только один элемент, а у меня там
появляется коллекция сразу всех ручек MySubEntity, и соответственно я не могу определить какая ручка перемещается.
Acad::ErrorStatus MyEntity::subMoveGripPointsAtSubentPaths(const AcDbFullSubentPathArray & paths, const AcDbVoidPtrArray & gripAppData, const AcGeVector3d & offset, const int bitflags)
{
        assertWriteEnabled();
 
        if (1 > paths.length()) return Acad::eOk;
 
        long ind = paths.at(0).subentId().index();
        ((MySubEntity*)entArr[ind - 1])->moveGripPointsAt(gripAppData, offset, bitflags);
 
        return (Acad::eOk);
 
}
Похожих примеров в сети я нигде не нашел, поэтому прошу помощи.