Grundlage
Möchte man verschiedene Objekte zueinander ausrichten so gibt es folgende zentrale Procedure in unserer lib3D:
ObjectFaceAlign
Mit dieser Procedure lässt sich ein Objekt an einem anderen Objekt ausrichten. Ein praktisches Beispiel wäre ein Lichtausschnitt, welcher immer an der gleichen Stelle eines Türblattes ausgerichtet werden soll:
.png)
Der Lichtausschnitt wird in diesem Fall immer mittig am rechten oberen Rand ausgerichtet, und kann dann z.B. mit ‘TranslateBy’ immer um einen gewissen Wert in die Mitte verschoben werden. Dadurch lassen sich komplexere Berechnungen zur richtigen Positionierung verschiedener Objekte zueinander einfacher bewerkstelligen.
Anwendung
Die Procedure benötigt folgende Parameter:
ObjectFaceAlign (ObjIdTarget, FaceTarget, FacePointTarget, ObjId, Face, FacePoint)
- ObjIDTarget: Objekt an dem ausgerichtet wird 
- FaceTarget: Fläche an der ausgerichtet wird 
- FacePointTarget: Punkt auf der Fläche an dem ausgerichtet wird 
- ObjID: Objekt welches verschoben wird 
- Face: Fläche auf Objekt, welches verschoben wird 
- FacePoint: Punkt auf Fläche vom Objekt welches verschoben wird 

FaceTarget / Face
Hier wird angegeben, auf welche Fläche sich bezogen wird, wobei der Parameter ‘FaceTarget’ die Fläche beschreibt an der ausgerichtet wird und der Parameter ‘Face’ die Fläche des zu verschobenen Objektes angegeben wird. Im Screenshot ist die Fläche als rot gekennzeichnet.
0: vorne
1: rechts
2: hinten
3: links
4: oben
5: unten
FacePointTarget / FacePoint
Hier wird angegeben, auf welchen Punkt der bereits angegeben Fläche bezogen wird, wobei der Parameter ‘FacePointTarget’ den Punkt beschreibt an dem ausgerichtet wird und der Parameter ‘FacePoint’ den Punkt des zu verschobenen Objektes angibt. Im Screenshot sind die Punkte in blau (Vorderseite) und gelb (Oberseite) gekennzeichnet.
0: unten links
1: unten mittig
2: unten rechts
3: mittig rechts
4: oben rechts
5: oben mittig
6: oben links
7: links mittig
8: mittig mittig
Beispiel
Möchte man einen Lichtausschnitt an einem Türblatt ausrichten, wie weiter oben beschrieben, dann kann die Procedure z.B. folgendermaßen aussehen:
RUN public\lib3D.ObjectFaceAlign(nIdTuerblatt, 0, 4, nIDLA, 0, 5)