PlayCanvas is quite often used in product configurators.
It’s easy to load models, setup materials and lighting with minimal to no code required. You can definitely change their size, arrangement, rotation in real-time using simple code logic.
Cutting holes in meshes though that isn’t supported. You can potentially add support for that using a 3rd party library, though that isn’t an easy task. Your best bet if you have a fixed number of options is to prepare all the variations in your modelling app and load the correct one on demand.
Take a look at this also, it’s a visual trick not a real geometry hole, but it may be of help: