Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  Transformationsmatrix in kartesische Koordinaten umwandeln

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co.
  
KISTERS 3DViewStation optimiert die Lizenzverwaltung für ihre Kunden, eine Pressemitteilung
Autor Thema:  Transformationsmatrix in kartesische Koordinaten umwandeln (4457 mal gelesen)
MaierKurt
Mitglied


Sehen Sie sich das Profil von MaierKurt an!   Senden Sie eine Private Message an MaierKurt  Schreiben Sie einen Gästebucheintrag für MaierKurt

Beiträge: 2
Registriert: 24.02.2010

erstellt am: 24. Feb. 2010 11:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo

Ich bin mir zwar bewusst, dass über dieses Thema schon viel geschrieben wurde, jedoch komme ich jetzt einfach nicht mehr weiter.

Zu meinem Problem: Ich möchte verschiedene Parts und Products (die in Catia Konstruiert wurden) in einem Planungstool einlesen.
Genau hier ist mein Problem. Von Catia-Seite bekomme ich nur eine Transformationsmatrix, jedoch kann das Planungstool nur mit den Angaben X, Y, Z, Rx, Ry, und Rz umgehen. X, Y und Z bekomme ich auch schon abgelesen aber bei der Rotation habe ich noch Probleme.

Was ich schon habe:

Rx=-arctan2(c33;-c32)

Ry=c13

Rz=arctan2(c11;-c12)

Bei einem Versuch hat das schon funktioniert, jedoch habe ich gelesen, dass ich bei Werten über 90° und unter -90° Probleme bekomme.

Bei Rx und Rz habe ich diese hoffentlich durch das benutzen von arctan2 schon umgangen, jedoch weiß ich nicht wie ich mit Ry umgehen soll.

Aktuell habe ich die Berechnungen einfach von Hand in Excel eingegeben, jedoch möchte ich das ganze über VB6 realisieren.

Über Tipps von euch wäre ich sehr Dankbar.

Gruß

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

zoltan.bekesi
Mitglied



Sehen Sie sich das Profil von zoltan.bekesi an!   Senden Sie eine Private Message an zoltan.bekesi  Schreiben Sie einen Gästebucheintrag für zoltan.bekesi

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 24. Feb. 2010 19:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaierKurt 10 Unities + Antwort hilfreich

Hallo MaierKurt,

ich habe aus einen anderen Grund geforscht und bin dabei auf folgende Bibliothek gestoßen:
Transformations in Phython
Was du von diesen brauchst ist:

Zitat:
A triple of Euler angles can be applied/interpreted in 24 ways, which can
be specified using a 4 character string or encoded 4-tuple:

  *Axes 4-string*: e.g. 'sxyz' or 'ryxy'

  - first character : rotations are applied to 's'tatic or 'r'otating frame
  - remaining characters : successive rotation axis 'x', 'y', or 'z'



Ich weiß, es ist Phython, mit etwas rumspielen bin ich aber auf die Lösung meines Problems gekommen (ich wolle auf eine beliebige Ebene spiegeln und habe dessen Transformationsmatrix benutzt). Ich selber habe auch keine Phyton Erfahrung, habe es aber kurz installiert und die Befehle einzeln eingegeben und die Operationen geprüft. So konnte ich dann formal mein Matrix zusammenstellen.

Gruß,
Zoltan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MaierKurt
Mitglied


Sehen Sie sich das Profil von MaierKurt an!   Senden Sie eine Private Message an MaierKurt  Schreiben Sie einen Gästebucheintrag für MaierKurt

Beiträge: 2
Registriert: 24.02.2010

erstellt am: 25. Feb. 2010 09:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Zoltan

Danke für deine Hilfe.

Probieren hilft mir nicht weiter, da ich noch nicht weiß welche Matrizen ich in Zukunft bekommen werde.

Ich habe 2 Matritzen als Beispiel, bei denen meine Formeln soweit Funktionieren. Meine Angst ist jetzt aber, dass es später Fälle geben kann in denen der Winkel größer wird und dann ein Fehler auftritt.

Beispiel:

Das lese ich ein: <Transform id="37_id175">0.985644 0.0914152 -0.141947 0 -0.0965254 0.994892 -0.0295277 0 0.138523 0.0428054 0.989434 0 1.477 -0.741 0.443005 1</Transform>

Und das soll rauskommen(stimmt auch bisher): X:1477 Y:-741 Z:443,005 Rx:-1,70937183 Ry:7,936783265 Rz:5,593215124

X, Y, und Z werden von den letzten 4 Zahlen in <Transform> beschrieben, und die Rotationen(die ich schon von Rad in Winkel umgewandelt habe) müssen aus den Kombinationen der anderen Zahlen berechnet werden.

Für mich wäre jetzt wichtig:

-Gibt es eine Sichere Methode die Winkel zu bestimmen?

-Lässt sich die Berechnung durch VB6 ausführen?

-Wie verarbeitet Catia die Matrizen?

-Gibt es in Catia verschiedene Arten von Transformationsmatrizen oder ist die oben gezeigte immer Standart?


Für jeden Tipp von euch wäre ich sehr dankbar.

Hat da evtl. schonmal jemand etwas Programmiert?

Gruß

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

V5Playaz
Mitglied
Dipl.-Ing (BA)


Sehen Sie sich das Profil von V5Playaz an!   Senden Sie eine Private Message an V5Playaz  Schreiben Sie einen Gästebucheintrag für V5Playaz

Beiträge: 447
Registriert: 12.07.2005

DELL PRECISION 390
3,25 GB RAM
WIN XP PRO SP2
CATIA V5 R16-19
Delmia V5 R19
VB6, VB2008
Adobe Acrobat 9 Pro Extended

erstellt am: 25. Feb. 2010 11:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaierKurt 10 Unities + Antwort hilfreich

CATIA benutzt IMHOIn my humble oppinion (Meiner Meinung nach) immer das gleiche Matrizenformat.
In Delmia wird hingegen mit Euler-Winkeln (YPR) gerechnet.

Berechnen lässt sich das natürlich auch per VB.

In dem Code-Beispiel von Zoltan ist eigentlich alles drin was du brauchst. Schau dir mal dort die Funktion 'def euler_from_matrix(matrix, axes='sxyz')' an, dass sollte dir helfen.

Grüsse Dominik

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

zoltan.bekesi
Mitglied



Sehen Sie sich das Profil von zoltan.bekesi an!   Senden Sie eine Private Message an zoltan.bekesi  Schreiben Sie einen Gästebucheintrag für zoltan.bekesi

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 25. Feb. 2010 16:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für MaierKurt 10 Unities + Antwort hilfreich

Hallo MaierKurt,

du musst nicht herumspielen, wenn du die Definition des anderen Programmes hast, also:
-static (habe bisher nicht gesehen) or rotating frame (RobCAD macht es so, dass zuerst gedreht wird, dann wird die gedrehte Achsensytem weitergedreht)
-in welche Reihenfolge die Achsen gedreht werden (bei RobCAD ist es x, neue y, neue z)
wie der Kode sagt, gibt es davon 24 mögliche Kombinationen, du wirst aber genau einen benötigen.
Wenn du die Informationen hast, dann müsste der Code im Link schon ziemlich eindeutig sein.

-Gibt es eine Sichere Methode die Winkel zu bestimmen?
-> Ja, die Methode in der Kode im Link scheint für mich plausibel
-Lässt sich die Berechnung durch VB6 ausführen?
-> Selbstverständlich. Vielleicht findest du auch für VB Beispiel ("rotation matrix to euler angles" als Suchwort)
-Wie verarbeitet Catia die Matrizen? / -Gibt es in Catia verschiedene Arten von Transformationsmatrizen oder ist die oben gezeigte immer Standart?
Suche mal in V5Automation.chm nach "position", da wirst du fündig. Transformationsmatrix ist immer eindeutig (es sind eigentlich die x, y, und z Achsen im aktuellen Achsensystem beschrieben, bzw. die Verschiebung). Lass dich nicht verwirren, CATIA gibt von sich aus nur 12 Zahlen zurück. In der Programmierung (und Mathematik) wird aber oft ein 4x4 Matrix verwendet, um einfacher damit rechnen zu können. Dann ist die letzte Zeile=0, 0, 0, 1.

Code habe ich nur für die Rechnung in die andere Richtung (von RobCAD ins CATIA) in VB.

Gruß,
Zoltan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz