Catch-Mechanismus

Prev Next

Mit dem Catch-Mechanismus werden bei zwei Objekten lokale „benannte“ Punkte mit einem lokalen Achsensystem erstellt. Mit einem Programmaufruf werden diese zwei Koordinatensystem deckungsgleich übereinanderer gebracht.

Im obigen Beispiel werden die zwei kleinen Lokalen Achsensystem deckungsgleich übereinandergelegt. Beim Catch wird der Griff nicht nur positioniert sondern auch gedreht.

Catchpunkte definieren

Catchpunkte können auf zwei Arten angelegt werden:

  • DES-Files → Description-File

  • Programmtechnisch → AddCatchPointOrientation

Ein Catchpunkt besteht aus:

  • Position relativ zur Objektmatrix

  • Ausrichtung zur Objektmatrix

  • Name

Es muss für die Konfiguration der Catch-Name vom bewegenden Objekt und auch vom Zielobjekt bekannt sein. Ein vernünftiges Namensschema ist hier wichtig.

Catchpunkte werden relativ zur Objektmatrix (Nicht zu verwechseln mit der Position) angelegt. Jedes Objekt hat eine Objektausrichtung, eine Matrixposition und die Objektbox. Matrixposition und Objektbox müssen nicht übereinstimmen. Zu erkennen ist die am einfachsten in PLAN4, wenn Position und Absolut-Position nicht übereinstimmen:

Anlegen von Catchpunkten mit DES-Files

Das DES-File muss denselben Namen haben wie das A3d-File, und muss im selben Ordner abgelegt werden. Für jedes Objekt kann man dann einen Eintrag im DES-File schreiben.

Siehe Beispiel am Anfang → Die X-Achse schaut in X, die Y-Achse schaut nach oben (=Z), die Z-Achse schaut -Y (Aus dem Griff heraus) (Diese Verdrehung der Achse wird später erklärt.)

Inhalt eines DES-Files:

Object "Stange_L900_Halbrund_R"
{
   Catch {
   Delete Matrix = "BohrungZentrum";
   Matrix = "BohrungZentrum", "Bohrung",  
1,0,0,  0,0,1,   0,-1,0 , 12.5, 265, 650, FLAGS{INTERACTIVE};
   Delete Matrix = "BohrungUnten";
   Matrix = "BohrungUnten", "Bohrung",  1,0,0,  0,0,1,   0,-1,0 , 12.5, 265, 305, FLAGS{INTERACTIVE};
   }
}

Rot = X-Achse
Grün = Y-Achse
Blau = Z-Achse
Gelb ist die Position

Programmtechnisches Anlegen der Catchpunkte

Mit dem Kernelbefehl „AddCatchPointOrientation“ kann ein Catchpunkt erzeugt werden. Um doppelte Catchpunkte zu vermeiden kann man mit „DeleteCatchInfo“ vorher Catchinformationen löschen.

Kernel.DeleteCatchInfo(objId, catchName)
Kernel.AddCatchPointOrientation(objId, catchName, "ProgammSnap", posX, posY, posZ, XAxisX,XAxisY,XAxisZ,YAxisX,YAxisY,YAxisZ)

Position und Achsenverdrehung

Die Flächenpunktnummerierung ist immer beginnend von links unten → gegen dem Uhrzeigersinn. (Ergänzung: Fläche = 5 = von Unten → Punkt 0 = links hinten, Punkt 2 = rechts hinten)

Das lokale Koordinatensystem ist in jeder Fläche gleicht definiert:

  • X-Achse geht von Punkt 0 Richtung Punkt 2

  • Y-Achse geht von Punkt 0 Richtung Punkt 6

  • Z-Achse zeigt aus der Fläche raus.

Wenn man einen Catchpunkt 100mm von der Fläche entfernt angeben will benötigt man offsetZ = 100.

GetBoxPointOrientationLocal

Kernel.GetBoxPointOrientationLocal( objId, boxFace, facePoint, offsetX, offsetY, offsetZ, rotateAngle, posX, posY, posZ, XAxisX, XAxisY, XAxisZ, YAxisX, YAxisY, YAxisZ )

  • objId = Kennzeichnung des Objektes

  • boxFace ( 0 -5 ) = Definition der Fläche

  • facePoint ( 0 – 8 ) = Definition des Punktes auf der Fläche.

  • offsetX, offsetY, offsetZ → Verschieben des Punktes auf dem lokalen Flächenkoordinatensystem.

  • rotateAngle → Winkel um welchen der Catchpunkt gedreht werden soll. (z.B. Griff vertikal, horizontal → Verdrehung um 90Grad)

Als Ergebnis erhält man die Position und die Verdrehung relativ zur Objektmatrix und man kann die Werte posX … XAxis… und YAxis… für den Befehl „AddCatchpointOrientation“ verwenden.

Beispiel:
Man möchte auf der rechten Seite mittig 100mm von unten einen waagrechten Stangengriff montieren.

  • boxFace = 1

  • bacePoint = 1 → (Unten in der Mitte)

  • offsetX = 0 → Keine Verschiebung links rechts

  • offsetY = 100 → Verschiebung um 100 nach oben (lokales Kordinatensystem)

  • offsetZ = 0 → Keine Verschiebung von Fläche weg.

  • rotateAngle = 90 → (In Abhängig von Griffmatrix → In unserem Beispiel muss der Griff gedreht werden)

Kernel. GetBoxPointOrientationLocal ( objId, 1, 1, 0, 100, 0, 90, posX, posY, posZ, XAxisX, XAxisY, XAxisZ, YAxisX, YAxisY, YAxisZ )
Kernel.DeleteCatchInfo( objId, catchName )
Kernel.AddCatchPointOrientation( objId, catchName, "ProgammSnap", posX, posY, posZ, XAxisX,XAxisY,XAxisZ,YAxisX,YAxisY,YAxisZ )

Ident mit GetBoxPointOrientationLocal gibt es auch „GetBoxPointOrientation“. Hier werden die gleichen Information, jedoch ins Weltkoordinatensystem umgerechnet geliefert.

Prüfen der Catchpunkte

In Plan4 werden Catchpunkte mit einem blauen Punkt markiert:

Im Debugdialog von OCX können die Definitonen der Catchpunkte ausgelesen werden: