Created in Blender with geometry nodes. Cubes are generated on an ico sphere. These cubes can be changed into many different shapes by changing the values in the geometry nodes modifier. When changing the values it may lag a bit, because alot of geometries are being generated. If you change the switch value to 1 it is recommended, that you also set Subdivisions to 1, Density to 0 and lower the values of Base height, Tower height, Scale faces and Spike offset to around 1 (I have found that this helps with generating the shapes faster). Don't go too absurd with the values, because it will 'break' Blender. When opening the .blend file (or the .stl file), you should have something that looks similar to the first thumbnail picture.