STEP File auswertenn, wie werden die Koordinaten/Winkel in der STEP File gespeichert

  • Hallo, ich stehe vor einem Problem das mich seit Tagen beschäftigt.


    Ich exportiere mit einem 3D Programm (PTC Creo Elements) mehrere exemplarische Teile.


    Die Teile sind alle exakt gleich, haben aber unterschiedliche Positionen und Verdrehungen.


    Ich code aktuell an einem Tool und möchte aber nur eine dieser exportierten STEP Files abspeichern.


    Die Information über Position/Verdrehung der anderen STEP Files möchte ich als relative Positionen zu diesem "Referenzteil" abspeichern, damit ich nicht mehrere Kopieen vom selben Teil als STEP Datei ablegen muss. (warum ich das benötige erspare ich einfach damit der Post hier nicht zu lange wird :))


    Jetzt habe ich mich die letzten Tage intensiv mit STEP Dateiformat beschäftigt und bemerkt egal in welcher Lage/Position ich die gleichen Teile als STEP exportiere, die STEP ist immer exakt gleich bis auf einige Informationen und zwar sind das die letzten DIRECTION und CARTESIAN_POINT Angabe in der STEP File.


    Also in der 1.stp (mein Refrenzteil) steht folgendes:


    #1510=CARTESIAN_POINT('',(0.,0.,0.));

    #1520=DIRECTION('',(0.,0.,1.));

    #1530=DIRECTION('',(1.,0.,0.));

    #1540=AXIS2_PLACEMENT_3D('',#1510,#1520,#1530);

    .................

    .................

    .................

    #1830=CARTESIAN_POINT('',(-442.7,72.7,0.));

    #1840=DIRECTION('',(0.,0.,1.));

    #1850=DIRECTION('',(0.,1.,0.));

    #1860=AXIS2_PLACEMENT_3D('',#1830,#1840,#1850);

    #1870=ITEM_DEFINED_TRANSFORMATION('2','',#1540,#1860);


    Die Zeilen 1510 - 1540 sind immer exakt gleich.
    Die Zeilen 1830 - 1850 sind die einzigen Zeilen die sich in der STEP Datei ändern wenn ich verdrehte exemplarische Teile exportiere.


    Diese Zeilen beschreiben also ziemlich sicher die Lage der STEP Datei im Raum.


    In der 2.stp steht das selbe nur Zeile 1830-1850 haben sich eben die Werte geändert.


    Wie kann ich nun die relative Lage/Position im Raum von 2.stp zu 1.stp berechnen.


    Zur Info der Referenzteil x.stp kann auch anderen DIRECTIONS haben nicht immer 0,0,1 und zweite Zeile 0,1,0.

    Also Kommazahlen je nach dem wie der Teil im 3D Programm im Raum verdreht wurde, da gibt es kein bestimmtes Muster.


    Gibt es hier jemanden der mir weiterhelfen kann, bin schon etwas am verzweifeln, die Daten sind da aber ich weiß nicht wie ich das berechnen muss.

    Also ich habe in der Firma "Experten" die sich mit Matrixen Vectoren etc sehr gut auskennen und das praktisch umsetzen können aber sie brauchen da noch mehr Infos wie man mit den Daten umgeht sozusagen.


    Wäre super wenn es hier jemanden gibt der mir da weiterhelfen kann, weil wenn ich die STP Datei zurück ins 3D importiere passen die Positonen/Verdrehungen ja wieder das heißt die Infos sind alle da aber ich kann sie nicht nutzen :)


    Vielen Dank im Voraus,


    mfg, Mario

  • ThoSchu

    Hat das Thema freigeschaltet.
  • Naja, das sieht adhoc nach Aufpunkt plus aufgespannter kartesischer Ebene aus...

    Also ich habe in der Firma "Experten" die sich mit Matrixen Vectoren etc sehr gut auskennen und das praktisch umsetzen können aber sie brauchen da noch mehr Infos wie man mit den Daten umgeht sozusagen.

    Dann bräuchten die vermutlich nur sowas, denn 3-dimensionale Vektoren sollten die nicht schockieren bzw. eigentlich das mit Abi-Uni-Mathe 1.-2. Semester hinbekommen:

    https://www.steptools.com/stds/stp_aim/html/


    Wenn das nicht reicht, selber eine Datei erstellen und eine definierte Transformation darauf loslassen...

  • Gleich mal danke für die Info, aber muss nachfragen wie nutze ich die Infos von dem link?


    da steht ziemlich viel und bin mir gerade nicht sicher wie mir/uns das weiterhilft?


    oder können die mit der Aussage "Aufpunkt plus aufgespannter kartesischer Ebene" etwas anfangen?


    muss zugeben ich bin "nur" der programmierer und kenne mich mit solchen begriffen eher weniger aus ;)



    mfg, Mario

  • Das erste Definiert die Nullebene im Raum.
    Eine Ebene im Raum lässt sich u.a. mit einem Vektor (Richtung und Länge, wobei die Länge hier fehlt es werden einfach direktions benutzt) vom KoordinatenUrsprung + zwei linarunabhängiger(Zeigen nicht in die gleiche Richtung) Vektoren mit einer Länge größer 0 definiert.

    Also der erste Vektor ist (0,0,0) es bleibt also beim Koordinatenursprung weil wenn man den Vektor zum Ursprung (0,0,0) addiert bleibt man beim Usprung. Die Richtungen sind (0,1,0) und (0,0,1) also die y,z Ebene

    Zu Ebenen findest du auch viele Videos die das erklären.


    Das Zweite Definiert eine weitere Ebene, die Verschoben/Rotiert sein kann und am Ende wird zwischen den Ebenen(die Erste die der y,z Ebene entspricht und der zweiten rotierten/verschobenen Ebene) berechnet.

  • Etwas genauer: Da wird nicht nur eine Ebene, sondern ein 3D-Koordinatensystem definiert (Stichwort Orthonormalbasis, d.h. der dritte Basisvektor ergibt sich als Kreuzprodukt aus den anderen beiden).


    In dem Fall hier kannst du auch direkt Translation und Rotationsmatrix aus #1830 ff. nehmen, wenn das Quell-Koordinatensystem immer der nicht-rotierte Ursprung ist.