You may try computing difference between bounding boxes, for example.
Handle(AIS_Shape) thePrsShape = ...;
Handle(AIS_Shape) thePrsUnfolded = ...;
Bnd_Box aBox1, aBox2;
thePrsShape->BoundingBox(aBox1);
thePrsUnfolded->BoundingBox(aBox2);
gp_XYZ aCenter1 = (aBox1.CornerMin().XYZ() + aBox1.CornerMax().XYZ()) * 0.5;
gp_XYZ aCenter2 = (aBox2.CornerMin().XYZ() + aBox2.CornerMax().XYZ()) * 0.5;
gp_XYZ aShift = aCenter2 - aCenter1;
gp_Trsf aShiftTrsf;
aShiftTrsf.SetTranslation(aShift);
thePrsUnfolded->InteractiveContext()->SetLocation(thePrsUnfolded, TopLoc_Location(aShiftTrsf));