A universal GreatRhombicosidodecahedron (GRD) is produced by truncating an Icosidodecahedron (ID). A SmallRhombicosidodecahedron (SRD) is produced at the end of the truncation process, during which the size is increased in order to keep the truncated surface square.
fi=GoldenRatio;alf=ArcTan[fi];bet=ArcTan[1/fi];bet1=ArcTan[1/fi^2];y=0.5+0.5fi;el=yfi;u=0.5Sqrt[3]/3;unit=Sqrt[3]/3;grd=GraphicsComplex[PolyhedronData["GreatRhombicosidodecahedron","VertexCoordinates"],Polygon[PolyhedronData["GreatRhombicosidodecahedron","FaceIndices"]]];grdn=Rotate[Scale[Rotate[grd,bet,{0,1,0}],1{1,1,1},{0,0,0}],Pi/2,{0,0,1}];ico=GraphicsComplex[PolyhedronData["Icosahedron","VertexCoordinates"],Polygon[PolyhedronData["Icosahedron","FaceIndices"]]];icofr=Normal[ico]/.p:Polygon[__](p/.pts:{{_?NumericQ,_,_},__}Module[{cent,innervtx},cent=Mean[pts];innervtx={1-0.15,0.15}.{#,cent}&/@pts;Join[pts,pts[[{1}]],innervtx,innervtx[[{1}]]]])//#&;icofr1=Rotate[Scale[icofr,2.618{1,1,1},{0,0,0}],Pi/2,{0,0,1}];srd=GraphicsComplex[PolyhedronData["SmallRhombicosidodecahedron","VertexCoordinates"],Polygon[PolyhedronData["SmallRhombicosidodecahedron","FaceIndices"]]];DynamicManipulatev=xCos[bet1];is=(0.5unit+v)unit;t=2isunit;shift=0.5unit+v;sink=xTan[bet1];(*square*)s1={x,-x,0};sqv=Table[RotationTransform[i2Pi/4,{0,0,1}][s1],{i,4}];sq=Polygon[sqv];sq1=Translate[sq,{0,0,isfi-sink}];sq2=Translate[sq,{0,0,-isfi+sink}];sq3=Rotate[{sq1,sq2},Pi/2,{1,0,0}];sq4=Rotate[{sq1,sq2},Pi/2,{0,1,0}];sq30=Table[Rotate[Rotate[{sq1,sq2,sq3,sq4},bet,{1,0,0}],i2Pi/5+Pi/5,{0,0,1}],{i,5}];(*hexagon*)b1={x,-u,0};b2=RotationTransform[2Pi/3,{0,0,1}][b1];b3=RotationTransform[4Pi/3,{0,0,1}][b1];b123=Polygon[{b1,b2,b3}];c1={-x,-u,0};c2=RotationTransform[2Pi/3,{0,0,1}][c1];c3=RotationTransform[4Pi/3,{0,0,1}][c1];hex=Rotate[Polygon[{b1,c2,b2,c3,b3,c1}],Pi/3,{0,0,1}];t1=Rotate[Translate[{hex},{0,-shift,0}],bet1,{1,0,0}];t2=Rotate[t1,Pi,{0,0,1}];hexa=Table[Rotate[Rotate[Translate[{t1,t2},{0,0,isfi}],alf,{1,0,0}],i2Pi/5,{0,0,1}],{i,5}];hexb=Rotate[hexa,Pi,{1,0,0}];hex20={hexa,hexb};(*decagon*)height=isfi-sink;p0={-x,-x,height};p1=RotationTransform[bet,{0,1,0}][p0];p2=RotationTransform[2Pi/5,{0,0,1}][p1];p3=RotationTransform[4Pi/5,{0,0,1}][p1];p4=RotationTransform[6Pi/5,{0,0,1}][p1];p5=RotationTransform[8Pi/5,{0,0,1}][p1];q0={-x,x,height};q1=RotationTransform[bet,{0,1,0}][q0];q2=RotationTransform[2Pi/5,{0,0,1}][q1];q3=RotationTransform[4Pi/5,{0,0,1}][q1];q4=RotationTransform[6Pi/5,{0,0,1}][q1];q5=RotationTransform[8Pi/5,{0,0,1}][q1];dec1=Rotate[Polygon[{p1,q1,p2,q2,p3,q3,p4,q4,p5,q5}],Pi/2,{0,0,1}];dec5=Table[Rotate[Rotate[Rotate[dec1,Pi,{0,0,1}],-2bet,{1,0,0}],i2Pi/5,{0,0,1}],{i,5}];dec6=Rotate[{dec1,dec5},Pi,{1,0,0}];dec12={dec1,dec5,dec6};grdg={dec12,Red,sq30,Green,hex20};Graphics3D[{icofr1,grdg},BoxedFalse,SphericalRegionTrue,ImageSize400,PlotRange3],{{x,0.3,"side"},{0"ID",0.5/3"GRD",0.5"SRD"}},{{x,0.5/3,"ratio of edges"},0,0.5,Appearance->"Labeled"},TrackedSymbols{x},SaveDefinitionsTrue
Out[]=
Normally, truncation of ID involves the creation of rectangles, and the size does not change
Needs["PolyhedronOperations`"];Dynamic[Manipulate[id=GraphicsComplex[PolyhedronData["Icosidodecahedron","VertexCoordinates"],Polygon[PolyhedronData["Icosidodecahedron","FaceIndices"]]];idn=Rotate[Scale[id,1/2{1,1,1},{0,0,0}],-Pi/2,{0,0,1}];idtr=Truncate[id,idt];Graphics3D[{icofr1,Yellow,idtr},BoxedFalse,SphericalRegionTrue,ImageSize400,PlotRange10],{{idt,0.4,"truncase ID"},0,0.5},TrackedSymbols{idt},SaveDefinitionsTrue]]
Out[]=