Robin
Please reread my post you have to set the definition's is2d= AND its snapto=... and then the instance's glue_to= ...
If you are loading a premade component ten why not give that the correct behaviors so you needed worry about reinventing them each time? and then you just need to place the component onto the face and tell it to glue_to it!
You should add the instance with a transformation, OR Geom::Transformation.new() and then later transform it so that it's located on the face to which you want to glue it - it's z-axis needs to be parallel to the face.normal and it's origin somewhere on the face...
It will not magically 'jump' onto the face - you need to code that. There after it will stick onto the face's plane like any other glued component, and move with the face too...