AdeQuate Solutions GmbH

Koordinatensystem in TSV6 per API - Umrechnung Schwenkwink

Beitrag 02.06.2017, 07:00 Uhr
andi74
andi74
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 10.07.2006
Beiträge: 23
Hallo,

ich möchte aus der Schwenkebene eines Heidenhain-Cycle19 ein Koordinatensystem in TSV6 per API erstellen. Wie kann ich die Schwenkwinkel der Achsen A und C in die benötigten Raum-Vektoren umrechnen. Ich programmiere mit C#, aber das spielt hier vermutlich keine Rolle.

Die Methode lautet bekannterweise ICoordinateSystems.AddBasic(Ox, Oy, Oz, Xx, Xy, Xz, Yx, Yy, Yz)

Danke und Grüße


--------------------
Grüße Andi
   
Beitrag 02.06.2017, 15:33 Uhr
aachen-matthias
aachen-matthias
Level 2 = Community-Facharbeiter
**
Gruppe: Mitglied
Mitglied seit: 16.01.2009
Beiträge: 72
Hallo,

Du brauchst ja Vektoren.
Was für eine Kinematik hat die Maschine?


Probier mal das:

EPSILON = 0.0000001
IF (ABS_(Xz-1) <= EPSILON) // singularity, -Sine(Y) == 1
{
RaumwCAng=0.;
RaumwBAng=-90.;
RaumwAAng=ATAN2(-Yx,Yy);
}
ELSE IF
IF (ABS_(Xz+1) <= EPSILON) // singularity, -Sine(Y) == -1
{
RaumwCAng=0.;
RaumwBAng=90.;
RaumwAAng=ATAN2(Yx,Yy);
}
ELSE IF
{
RaumwBAng=ASIN(-Xz);
RaumwCAng=ATAN2(Xy,Xx);
RaumwAAng=ATAN2(Yz,Oz);
}
   
Beitrag 02.06.2017, 16:12 Uhr
andi74
andi74
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 10.07.2006
Beiträge: 23
Hallo aachen-matthias,

danke schon mal.
Dein Snippet muss ich für jeden Winkel (A und C-Achse) durchlaufen und Xz steht für den Winkel, also mein Input?
Der nc-code den ich simulieren will ist eine hermle c40, als eine Tisch-Tisch-Kinematik. Ist das für mich von Bedeutung? Ich glaube nicht. Ich möchte einfach die Fräsbahn der geschwenkten Ebene in topsolid darstellen. Er kommt von einem Fremdsystem und enthält nur Linearbewegungen. Dazu brauche ich halt ein Koordinaten System in der entsprechenden Ebene und kann 1:1 die Bahn per API reinpinseln.

Der Beitrag wurde von andi74 bearbeitet: 02.06.2017, 16:17 Uhr


--------------------
Grüße Andi
   
Beitrag 02.06.2017, 16:40 Uhr
andi74
andi74
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 10.07.2006
Beiträge: 23
Hallo aachen-matthias,

meine Ausgangsdaten sind der Nullpunkt kartesisch in X, Y, Z plus die Schwenkwinkel der Rundachsen (A, C). Den Nullpunkt kann ich 1:1 übernehmen, die Schwenkwinkel müssen in Raum-Vektoren umgerechnet werden. Kann es sein, dass du mir den umgekehrten Weg beschrieben hast?

Danke und Gruß


--------------------
Grüße Andi
   
Beitrag 02.06.2017, 17:54 Uhr
andi74
andi74
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 10.07.2006
Beiträge: 23
QUOTE (andi74 @ 02.06.2017, 17:40 Uhr) *
Hallo aachen-matthias,

meine Ausgangsdaten sind der Nullpunkt kartesisch in X, Y, Z plus die Schwenkwinkel der Rundachsen (A, C). Den Nullpunkt kann ich 1:1 übernehmen, die Schwenkwinkel müssen in Raum-Vektoren umgerechnet werden. Kann es sein, dass du mir den umgekehrten Weg beschrieben hast?

Danke und Gruß


Wobei die A-Achse sich um X dreht und die C-Achse um Z.

Da Thema ist kompexer als ich zunächst dachte. Evtl. reicht es mir auch schon wenn ich einen Winkel in einen 2D-Vektor umrechnen kann. Weiß jemand wie das geht?

Der Beitrag wurde von andi74 bearbeitet: 02.06.2017, 17:59 Uhr


--------------------
Grüße Andi
   
Beitrag 02.06.2017, 17:58 Uhr
andi74
andi74
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 10.07.2006
Beiträge: 23
Da Thema ist kompexer als ich zunächst dachte.

Evtl. reicht es mir auch schon wenn ich einen Winkel in einen 2D-Vektor umrechnen kann. Weiß jemand wie das geht?

Der Beitrag wurde von andi74 bearbeitet: 02.06.2017, 17:59 Uhr


--------------------
Grüße Andi
   
Beitrag 02.06.2017, 19:05 Uhr
AndiKS
AndiKS
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 23.12.2007
Beiträge: 183
Hallo,

ich verwende dafür die Klassen im Namespace "System.Windows.Media.Media3D" hier findest du eine "Vector3D" Klasse.

Um einen Einheitsvektor um einen Raumwinkel zu drehen benötigste du eine "Quaternion" Instanz als Drehung und eine "Matrix3D" für das Transform.

So habe ich es in meinem Postprozessor für TopSolid gemacht, such am besten in der MSDN nach diesen Klassen..


cu
andi
   
Beitrag 02.06.2017, 19:21 Uhr
AndiKS
AndiKS
Level 3 = Community-Techniker
***
Gruppe: Mitglied
Mitglied seit: 23.12.2007
Beiträge: 183
Hab noch ein kleines Beispiel:

QUOTE
var v = new Vector3D(0, 0, 1);
var m = new Matrix3D();
m.Rotate(new Quaternion(new Vector3D(0, 1, 0), 90));
var v2 = m.Transform(v);


Am Anfang ist v ein Einheitsvektor auf Z+
mit dem Rotate wird um Y 90° gedreht, also B90

V2 enthält dann dein Ergebnis..
   
Beitrag 02.06.2017, 20:40 Uhr
andi74
andi74
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 10.07.2006
Beiträge: 23
QUOTE (AndiKS @ 02.06.2017, 20:21 Uhr) *
Hab noch ein kleines Beispiel:



Am Anfang ist v ein Einheitsvektor auf Z+
mit dem Rotate wird um Y 90° gedreht, also B90

V2 enthält dann dein Ergebnis..


Vielen Dank.

Dein Ergebnis liefert 1;0;2,22044604925031E-16

Ich kann es noch nicht ganz einordnen. Wir stehen vor einer Fräsmaschine, zB eine Deckel FP4, waagerechter Tisch. 0 Grad zeigt nach X-Plus, 90 Grad wären Y-Plus, -90 Grad wären y-Minus usw. Wie müsste dein Beispiel lauten wenn ich zB 90 Grad umrechnen möchte. Dann würde der Vector nach Y-Plus zeigen und müsste lauten 0;1;0 oder?


--------------------
Grüße Andi
   
Beitrag 02.06.2017, 21:57 Uhr
andi74
andi74
Level 1 = Community-Lehrling
*
Gruppe: Mitglied
Mitglied seit: 10.07.2006
Beiträge: 23
QUOTE (andi74 @ 02.06.2017, 21:40 Uhr) *
Vielen Dank.

Dein Ergebnis liefert 1;0;2,22044604925031E-16

Ich kann es noch nicht ganz einordnen. Wir stehen vor einer Fräsmaschine, zB eine Deckel FP4, waagerechter Tisch. 0 Grad zeigt nach X-Plus, 90 Grad wären Y-Plus, -90 Grad wären y-Minus usw. Wie müsste dein Beispiel lauten wenn ich zB 90 Grad umrechnen möchte. Dann würde der Vector nach Y-Plus zeigen und müsste lauten 0;1;0 oder?


Sorry, jetzt habe ich es kapiert. Nochmals vielen Dank.


--------------------
Grüße Andi
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: