Density Packing in Grasshopper

Hi there, I am dealing with the issue of density packing.
I want to array scanned objects in a predefined space. The objects have a complex geometry with multiple faces. The space between the arrayed objects should be adjustable.

For design reasons, a user should be able to pick one of the object’s faces and be able to pre- determine it`s position in space. (e.g. facing upwards)

Has anyone experience in that direction and could help me create a grasshopper function?
Feel free to reach out to me if you have experience and want to collab.

Best,

Seb

Use open nest in grasshopper