Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  NX Programmierung
  Komponenten ausrichten über Koordinatensysteme

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 NX
Autor Thema:  Komponenten ausrichten über Koordinatensysteme (2699 mal gelesen)
stefan027
Mitglied
CAM-Programmierer


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

Beiträge: 18
Registriert: 05.09.2011

NX8.5
VB.NET 2008

erstellt am: 17. Mai. 2012 12: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 zusammen,

ich versuche mittels VB-Journal in einem Assambly Komponenten über Koordinatensysteme auszurichten und zu verschieben. Es sollen die Koordinatensysteme welche in den Komponenten beinhaltet sind genau übereinander liegen.

Die Verschiebung habe ich hinbekommen indem ich die Positionen der Komponenten und die Positionen der beinhaltenden Koordinatensysteme ermittelt und verrechnet habe.

Das sieht auszugsweise folgendermaßen aus:

    Dim Komponente1Position As Point3d
    Dim Komponente1Matrix As Matrix3x3
    component1.GetPosition(Komponente1Position, Komponente1Matrix)
    Dim Offset1_X, Offset1_Y, Offset1_Z As Double
    Offset1_X = cartesianCoordinateSystem1.Origin.X + Komponente1Position.X
    Offset1_Y = cartesianCoordinateSystem1.Origin.Y + Komponente1Position.Y
    Offset1_Z = cartesianCoordinateSystem1.Origin.Z + Komponente1Position.Z

    Dim Komponente2Position As Point3d
    Dim Komponente2Matrix As Matrix3x3
    component2.GetPosition(Komponente2Position, Komponente2Matrix)
    Dim Offset2_X, Offset2_Y, Offset2_Z As Double
    Offset2_X = cartesianCoordinateSystem2.Origin.X + Komponente2Position.X
    Offset2_Y = cartesianCoordinateSystem2.Origin.Y + Komponente2Position.Y
    Offset2_Z = cartesianCoordinateSystem2.Origin.Z + Komponente2Position.Z

    Dim TransX, TransY, TransZ As Double
    TransX = Offset1_X + Offset2_X
    TransY = Offset1_Y + Offset2_Y
    TransZ = Offset1_Z + Offset2_Z

    Dim translation1 As Vector3d = New Vector3d(TransX, TransY, TransZ)


Fehlen tut mir jetzt noch die Rotation als Matrix3x3. 
           
    Dim rotation1 As Matrix3x3

Muss ich die vier Matrizen jetzt verrechnen um die resultierende Rotation zu bekommen oder gibt es Grundsätzlich einen einfacheren Lösungsweg? Und wenn ich sie verrechnen muss, hat mir jemand ein Beispiel, dass mir auf die Sprünge hilft, da dies Neuland für mich ist.

Danke schonmal für die Antworten.

Gruß

Stefan

------------------
www.sr-web.eu

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

mseufert
Moderator
Freiberuflicher CAD/CAM Ingenieur


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

Beiträge: 2624
Registriert: 18.10.2005

HP Z420
WIN7 64 Win 10
UG NX6-1980
3D Printer Prusa MK2 S

erstellt am: 18. Mai. 2012 16:27    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 stefan027 10 Unities + Antwort hilfreich

Hallo Stefan,

wenn's einen einfachen Weg gibt, würd' ich ihn in NXOpen.Positioning vermuten (Journal aufzeichnen ...). Falls es dort nichts gibt, bleibt m.E. nur die Ochsentour über UFSession.mtx*, also Positionen und Matrizen in Double-Arrays umwandeln, Transformationsmatrix berechnen und auf die Komponente anwenden.

Gruß, Michael

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

MAhrens
Mitglied
Dipl.-Ing.


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

Beiträge: 528
Registriert: 17.11.2000

erstellt am: 20. Mai. 2012 17:05    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 stefan027 10 Unities + Antwort hilfreich

Hallo Stefan,

Du kannst aber auch ganz gezielt Rotationen um bestimmte Achsen definieren und diese anschließend zu einer 3x3 Matrix umrechnen lassen.

Gruß

Matthias

Beispiel:
rotXDeg,etc. sollen Winkel als Grad erhalten.
...
' This is the same math another way which also works:
Dim tempVecMat As VectorArithmetic.Matrix3 = New VectorArithmetic.Matrix3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0)
' Rotate around Y
tempVecMat.Rotate(1, 0, 0, DegreesToRadians(rotXDeg))
' Rotate around Y
tempVecMat.Rotate(0, 1, 0, DegreesToRadians(rotYDeg))
' Rotate around Z
tempVecMat.Rotate(0, 0, 1, DegreesToRadians(rotZDeg))
' ----------------------------------------------
' The Orientation
' ----------------------------------------------
Dim orientation1 As Matrix3x3
orientation1 = convertMatrix3ToMatrix3x3(tempVecMat)
...
' ----------------------------------------------
' Convert a transformation matrix
' ----------------------------------------------
Function convertMatrix3ToMatrix3x3(ByVal mtx As VectorArithmetic.Matrix3) As Matrix3x3
Dim mx As Matrix3x3
With mx
.Xx = mtx.m(0)
.Xy = mtx.m(1)
.Xz = mtx.m(2)
.Yx = mtx.m(3)
.Yy = mtx.m(4)
.Yz = mtx.m(5)
.Zx = mtx.m(6)
.Zy = mtx.m(7)
.Zz = mtx.m(8)
End With
Return mx
End Function
...
' ----------------------------------------------
' Convert degrees angle to radiant
' ----------------------------------------------
Function DegreesToRadians(ByVal degrees As Double) As Double
'Return 2 * Math.PI * degrees / 360.0
Return degrees * Math.PI / 180.0
End Function

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

stefan027
Mitglied
CAM-Programmierer


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

Beiträge: 18
Registriert: 05.09.2011

NX8.5
VB.NET 2008

erstellt am: 21. Mai. 2012 18:28    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 Matthias,

dein Beispiel hilft mir sehr. Wenn ich das ganze von hinten aufrolle, kann ich mir ja auch die Winkel ausrechnen auf denen ein Koordinatensystem steht. Ich kann dann die Winkel lesen und schreiben und bekomme somit meine Aufgabe gelöst.

Nur eine Frage noch - in welchem Namespace hat sich die Klasse "VectorArithmetic" versteckt. In der API-Referenz habe ich sie auch nicht gefunden.

Gruß

Stefan

------------------
www.sr-web.eu

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



Elektro-Fachplaner (m/w/d)

Zahlreiche namhafte Unternehmen, öffentliche Bauherrn oder Planer setzen seit vielen Jahren auf unsere Bauweise. Über 1400 Mitarbeiterinnen und Mitarbeiter realisieren jährlich Projekte mit insgesamt weit über 180.000 m² Fläche. Individuell geplante, anspruchsvolle Gebäude nach Kundenwunsch oder flexible Raumlösungen aus unserem 400.000 m² umfassenden Mietpark. Wetterunabhängig vorgefertigt in unseren 12 Standorten in Deutschland und schon nach kurzer Zeit bezugsfertig....

Anzeige ansehenTechnischer Zeichner, Bauzeichner
MAhrens
Mitglied
Dipl.-Ing.


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

Beiträge: 528
Registriert: 17.11.2000

erstellt am: 21. Mai. 2012 19:13    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 stefan027 10 Unities + Antwort hilfreich

Hallo,

das Ganz ist an einem GTAC Beispiel angelehnt, welches nur folgende Bibliotheken verwendet:

-Imports System
-Imports System.Math
-Imports NXOpen
-Imports NXOpen.UF

Gruß

Matthias

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)2023 CAD.de | Impressum | Datenschutz