HEIDENHAIN
HEIDENHAIN

Steuerungen, Messgeräte & Positionsanzeigen

5X Bewegungen N-Vektor senkrecht zum T-Vektor umrechnen

Beitrag 12.08.2025, 05:39 Uhr
Andreas1964
Level 4 = Community-Meister
****
Hallo,

ich hab da noch eine Idee, aber ich weiß nicht wie ich das umsetzen kann.

Aus meinem SolidCAM bekomme ich ein Programm das macht die Bewegungen die ich will, das hänge ich hier mal dran.
Angehängte Datei  4358_T2_2.H ( 364KB ) Anzahl der Downloads: 16


Ich habe einige Erkenntnisse aus dem vorausgegangen Beitrag zu einer anderen Problematik gewonnen, das wäre hier:
5X Bewegungen Vektor mit Tischrotation umrechnen

Das Teil was ich mache ist im Prinzip ein Zylinder der am Umfang lange eckige Stifte hat und wird aus dem Vollen gefräst.

Damit ich die Bewegungen so hinbekomme muss ich mir in SolidCAM Hilfsflächen konstruieren die ähnlich wie der Zylinder geformt sind, auf diesen Flächen steht das Werkzeug senkrecht. (Vereinfacht kann man auch annehmen das das Werkzeug senkrecht auf dem Zylinder steht.)

Daher gibt mir SolidCAM den N-Vektor in der gleichen Richtung wie den T-Vektor aus, was natürlich blöd ist wenn ich den Fräser mal mit 3D-Radiuskorrektur korrigieren will. Also müsste der N-Vektor senkrecht zum T-Vektor stehen.

Wenn man sich das Programm anschaut, dann gibt es viele Sätze wo der N-Vektor 0 ist, das sind Zwischenbewegungen, die kann man ignorieren.

Bei den anderen Bewegungen, wenn ich mal Gleichlauf voraussetze, habe ich (fast) immer 2 Sätze mit N-Vektor = T-Vektor.
Und von XYZ nach XYZ ist ja auch ein Vektor!

Wenn ich diesen "XYZ-Vektor" um 90° von seiner Richtung aus nach links um die Achse des T-Vektor drehe, das als N-Vektor in das Programm schreibe, dann könnte ich mein Werkzeug korrigieren.

Das ist die Idee, aber wie rechne ich das?

Andreas.
   
Beitrag 12.08.2025, 16:43 Uhr
käse
Level 3 = Community-Techniker
***
Mit dem Kreuzprodukt kann man einen Vektor der senkrecht zu zwei anderen Vektoren ist berechnen. https://de.m.wikipedia.org/wiki/Kreuzproduk...hen_Koordinaten Das Kreuzprodukt aus deinem Werkzeugvektor und dem Vektor der Bewegung (Startpunkt - Endpunkt) ergibt deinen Flächennormalenvektor. Diesen sollte man für die Heidehainsteuerung dann noch normieren. Wenn der Flächennormalenvekor in die falsche Richtung zeigt, entweder Werkzeugvektor und Bewegungsvektor vertauschen oder jede Komponente des Flächennormalenvektor mit -1 multiplizieren.
   
Beitrag 13.08.2025, 06:17 Uhr
Andreas1964
Level 4 = Community-Meister
****
ZITAT(käse @ 12.08.2025, 17:43 Uhr) *
Wenn der Flächennormalenvekor in die falsche Richtung zeigt, entweder Werkzeugvektor und Bewegungsvektor vertauschen oder jede Komponente des Flächennormalenvektor mit -1 multiplizieren.

Und woher bitte weiß ich das? Ein NC-Programm ist eine Textdatei, ich kann die Zahlen da auslesen, damit irgendwas rechnen und wieder reinschreiben.

Und für den Rest: Das hilft mir nicht mal ansatzweise, ich bin kein Mathematiker.

Hand auf's Herz: Hast Du von Mathematik wirklich Ahnung?

Das ist ein Bild aus dem CAM wo man die Wege sieht wie sich das Werkzeug bewegt. Es fährt in einer Schleife im Gleichlauf von innen nach aussen auf die Stifte zu und wird je weiter es nach aussen kommt mehr und mehr gekippt. Sieht dann ein bißchen so aus als wenn die Spitze des Werkzeuges stehen bleibt und der Schaft hin/her kippt. Ein animiertes GIF krieg ich hier nicht hochgeladen, ist zu groß.
Angehängte Datei  a.PNG ( 30.54KB ) Anzahl der Downloads: 18


Ich denke ich bin schon einen Schritt weiter... ich häng mal ein bisschen Code dran. Wenn das Zeugs was ich mir da gebastelt hab korrekt ist, dann muss nur noch der Groschen fallen ob ich +90 oder -90 Grad drehen muss.

Wenn ich das NC-Programm umrechne, könntest Du dann verifizieren ob die N-Vektoren richtig stehen und die Maschine/TNC das Werkzeug in die richtige Richtung (auf die beiden Stifte links und rechts) korrigiert?

Andreas.

QUELLTEXT
Function Direction( _
    ByVal X1 As Double, ByVal Y1 As Double, ByVal Z1 As Double, _
    ByVal X2 As Double, ByVal Y2 As Double, ByVal Z2 As Double, _
    ByRef Vx As Double, ByRef Vy As Double, ByRef Vz As Double, _
    Optional P1ToP2 As Boolean = True) As Boolean
  'Return the vector from a line / cosinus direction between two points
  Dim A
  A = Sqr((X2 - X1) ^ 2 + (Y2 - Y1) ^ 2 + (Z2 - Z1) ^ 2)
  If A = 0 Then Exit Function
  If P1ToP2 Then
    'Vector point from P1 to P2
    Vx = (X2 - X1) / A
    Vy = (Y2 - Y1) / A
    Vz = (Z2 - Z1) / A
  Else
    'Vector point from P2 to P1
    Vx = (X1 - X2) / A
    Vy = (Y1 - Y2) / A
    Vz = (Z1 - Z2) / A
  End If
  Direction = True 'Sqr(Vx ^ 2 + Vy ^ 2 + Vz ^ 2) = 1
End Function

Sub RotVector(ByVal Angle As Double, _
    ByVal Vx As Double, ByVal Vy As Double, ByVal Vz As Double, _
    ByVal Nx As Double, ByVal Ny As Double, ByVal Nz As Double, _
    ByRef Rx As Double, ByRef Ry As Double, ByRef Rz As Double)
  'Drehung eines Vektors (V) um eine Ursprungsgerade, deren Richtung und Orientierung durch den beliebigen Einheitsvektor (N) gegeben ist
  'https://de.wikipedia.org/wiki/Drehmatrix#Drehmatrizen_des_Raumes_%E2%84%9D%C2%B3
  'Rotation of a vector (V) around a straight line through the origin, whose direction and orientation are given by the arbitrary unit vector (N)
  'https://www.vcalc.com/wiki/vector-rotation
  Rx = Vx * (Nx ^ 2 * (1 - CosG(Angle)) + CosG(Angle)) + Vy * (Nx * Ny * (1 - CosG(Angle)) - Nz * SinG(Angle)) + Vz * (Nx * Nz * (1 - CosG(Angle)) + Ny * SinG(Angle))
  Ry = Vx * (Ny * Nx * (1 - CosG(Angle)) + Nz * SinG(Angle)) + Vy * (Ny ^ 2 * (1 - CosG(Angle)) + CosG(Angle)) + Vz * (Ny * Nz * (1 - CosG(Angle)) - Nx * SinG(Angle))
  Rz = Vx * (Nz * Nx * (1 - CosG(Angle)) - Ny * SinG(Angle)) + Vy * (Nz * Ny * (1 - CosG(Angle)) + Nx * SinG(Angle)) + Vz * (Nz ^ 2 * (1 - CosG(Angle)) + CosG(Angle))
End Sub

Private Function CosG(ByVal x As Double) As Double
  'Liefert den Cosinus eines Winkels in Grad
  CosG = Cos(x * Atn(1) * 4 / 180)
End Function

Private Function SinG(ByVal x As Double) As Double
  'Liefert den Sinus eines Winkels in Grad
  SinG = Sin(x * Atn(1) * 4 / 180)
End Function
   
Beitrag 13.08.2025, 10:55 Uhr
AMG_C30
Level 3 = Community-Techniker
***
Hallo Andreas,

vorab mal deine ganze Rechnerei ist mir zu hoch.
Aber warum modellierst du dir kein konisches Langloch als Flächenmodell, gibst die Wandflächen an und fährt mit parallel zu Kurve oder zwischen Kurven?
Da wäre der N-Vektor für die 3d-Radiuskorrektur doch richtig.
Wenn du nicht gleich den vollen Winkel kippen willst, musst du halt mehrere Flächenmodelle mit verschiedenen Winkellagen machen und das in verschiedenen Jobs aufteilen.
Gruß Uwe
   
Beitrag 13.08.2025, 12:26 Uhr
Andreas1964
Level 4 = Community-Meister
****
ZITAT(AMG_C30 @ 13.08.2025, 11:55 Uhr) *
Wenn du nicht gleich den vollen Winkel kippen willst, musst du halt mehrere Flächenmodelle mit verschiedenen Winkellagen machen und das in verschiedenen Jobs aufteilen.

Hallo Uwe,

ja, der Vektor müsste dann richtig sein, da wäre ohne Rechnen der Weg. Aber da gibt es mehrere Haken, ist führe das mal etwas aus.

Ich skizziere den Zwischenraum von oben / einen Schnitt durch Dein konisches Langloch, bitte Bild ankucken.
Angehängte Datei  b.PNG ( 32.88KB ) Anzahl der Downloads: 13


Zuerst fräse ich via trochiodalem Fräsverfahren eine Nut in der Breite von 9 und bei einer Stiftlänge von 37 und 12° bis zum nächsten Stift sind dann je Seite noch 3,868 Aufmaß je Seite vorhanden.

Mein Fräser ist Ø8 und das Material ist 1.4404, die Stifte sind 6x6. Ich denke es ist klar das man da nicht besonders viel seitliche Zustellung geben kann, sonst ist der Fräser und/oder das Teil Schrott. Vibrationen sind ein Hauptproblem bei dem Teil.

Frag Dich mal wie viel Du zustellen würdest... nehmen wir mal 0,1 an, dann würde es bedeuten ich müsste 38 Flächenmodelle machen und dann irgendwie mein CAM dazu kriegen die Flächen in der richtigen Reihenfolge, also 76 Profile (Wege) abzufahren und mir das als einzelnen Weg auszugeben. Oder halt 38 Jobs... Dann hätte ich den obersten Zwischenraum fertig. Und wenn ich 0,12 oder doch nur 0,08 Zustellung will... alles noch mal von vorne, nette Idee, aber nee danke.

Dann habe ich aber je Bauteilgröße verschiedene Anzahl an Stiftreihen, beim kleinsten sind es 7, beim größten irgendwas über 20. Also muss ich diesen Weg wiederum vervielfältigen mit Versatz und dann alles rund um das Teil rum. Das ist bei SolidCAM ziemlich bescheiden.

Aber gar nicht sooo weit weg von dem wie wir damit zum ersten Mal angefangen haben. Das Problem: MEGA-Programm!

Das Programm bringt die Steuerung deutlich über Ihre Grenzen, wir haben z.B. Labels zum Freifahren vor dem Werkzeugwechsel drin. Wenn der CALL LBL kommt, dann kannst Du Dir einen Kaffee holen gehen bis die Maschine weiter arbeitet.

Wenn Dir ein Fräser kaputt geht, dann musst Du wieder einsteigen, bei einem MEGA-Programm heißt das Satzvorlauf... bis es losgeht kannst Du bequem auf's Klo gehen. :-)

Dann brauchst Du nicht nur einen Fräser um das Teil fertig zu kriegen sondern viele.

Also haben wir uns eine Lösung überlegt, die a) eine vom Bediener kontrollierbare Anzahl an Schwesterwerkzeugen ermöglicht, b) jedes Werkzeug hat sein eigenes kurzes UP, der CALL LBL geht schnell, c) ein sehr kurzes Hauptprogramm in dem man zu jeder Drehung bei jedem Werkzeug mit einem GOTO direkt ohne Satzvorlauf einsteigen kann.

Wenn ich dem Bediener nun noch die Möglichkeit geben kann das er den Fräser und damit das Aufmaß vor dem Schlichten korrigieren kann, dann kann er sogar eingreifen wenn es den Fräser oder Stift mal etwas mehr wegdrückt. Denn zu viel Aufmaß bedeutet Vibration beim Schlichten => schlechte Oberfläche und das geht in der Lebensmittelindustrie gar nicht, in rauhen Oberflächen können sich Bakterien verstecken.

Soweit wie ich es jetzt habe ist es für alle Seiten ein Vorteil, Win-Win-Situation. Mein CAM-File ist nur 75Mb statt 500Mb, wenige Jobs, einfach zu modifizieren und Zustellungen etc. anzupassen. Wenn der Bediener weiß das der Fräser bei TeilA 30 Minuten hält dann wird er das auch beim größeren TeilB schaffen. Er muss nur einmal auf mein Einrichtblatt kucken wie lange der Fräser läuft und kann selber errechnen wie viele Schwesterwerkzeuge er einbauen muss.

Andreas.
   
Beitrag 13.08.2025, 14:33 Uhr
käse
Level 3 = Community-Techniker
***
ZITAT(Andreas1964 @ 13.08.2025, 06:17 Uhr) *
Und woher bitte weiß ich das? Ein NC-Programm ist eine Textdatei, ich kann die Zahlen da auslesen, damit irgendwas rechnen und wieder reinschreiben.

Und für den Rest: Das hilft mir nicht mal ansatzweise, ich bin kein Mathematiker.

Hand auf's Herz: Hast Du von Mathematik wirklich Ahnung?

Wenn ich das NC-Programm umrechne, könntest Du dann verifizieren ob die N-Vektoren richtig stehen und die Maschine/TNC das Werkzeug in die richtige Richtung (auf die beiden Stifte links und rechts) korrigiert?


Wenn dein Bewegungsrichtungvektor BX BY BZ ist und dein Werkzeugvektor TX TY TZ dann wird der Flächennormalenvektor senkrecht dazu bei Gleichlauf mit dem Kreuzprodukt so berechnet:
NX = TY*BZ - TZ*BY
NY = TZ*BX - TX*BZ
NZ = TX*BY - TY*BX
Wenn deine beide Vektoren bereits die Länge 1 haben, hat auch der berechnete die Länge 1 und du brauchst ihn nicht mehr zu normieren.

Das ist doch recht einfache Mathematik, man muss nur die Formel anwenden. Ich habe schon 5-Achsen Parameterprogramme mit Radiuskorrektur für die Millplus geschrieben und weiß von was ich schreibe.

Die Flächenormalenvekoren zeigen immer von der Fläche weg.
   
Beitrag 14.08.2025, 06:05 Uhr
Andreas1964
Level 4 = Community-Meister
****
ZITAT(käse @ 13.08.2025, 15:33 Uhr) *
Das ist doch recht einfache Mathematik, man muss nur die Formel anwenden.

Also nochmal ich bin kein Mathematiker, ich verstehe was Vektoren sind, was die Maschine damit macht usw. aber wie man irgendwelche Formeln die man auf Wiki und sonstwo findet in ausführbaren Code umsetzt bringt mich an meine Grenzen. Und was da gerechnet wird... ich freue mich wenn es hinterher geht.

Und an dem Punkt muss ich Dir gleich mal was um die Ohren hauen.

Für die meisten Fälle kommt in meinem exemplarischen Beispiel mit Deiner Formel das gleiche raus, ich vermute mal weil der Bewegungsvektor hier zufällig immer 0,0,1 oder 0,0,-1 ist.

LN X-74.166 Y-0.187 Z-19 NX-0.9996129 NY-0.02782 NZ+0 TX-0.9996129 TY-0.02782 TZ+0
LN X-74.113 Y-0.7 Z-26 NX-0.9945717 NY-0.1040533 NZ+0 TX-0.9945717 TY-0.1040533 TZ+0

Der Bewegungsvektor vom ersten zum 2ten Satz ist
BX0.007550963 BY-0.073087618 BZ-0.997296938
ja? Die Länge des Vektors ist 1, das passt, ja?

Mein Krams rechnet für den ersten Satz
NX0.033257408 NY-0.996757464 NZ0.073269394

Dein Krams (siehe unten) kommt auf
NX0.027744801 NY-0.996910885 NZ0.073269394

Und der Rechner hier kommt auf die gleichen Ergebnisse wie ich.

So einfach ist es dann doch nicht... oder?

Andreas.

QUELLTEXT
Public Function RotVectorUDFK(Bx, By, Bz, Tx, Ty, Tz) As Variant
  Dim Nx As Double, Ny As Double, Nz As Double
  Nx = Ty * Bz - Tz * By
  Ny = Tz * Bx - Tx * Bz
  Nz = Tx * By - Ty * Bx
  RotVectorUDFK = Array(Nx, Ny, Nz)
End Function


Der Beitrag wurde von Andreas1964 bearbeitet: 14.08.2025, 06:06 Uhr
   
Beitrag 14.08.2025, 08:16 Uhr
käse
Level 3 = Community-Techniker
***
Die Unterschiede kommen weil dein Bewegungsvektor nicht senkrecht zum Werkzeugvektor ist. Bei meiner Variante mit Kreuzprodukt ist der Flächennormalenvektor senkrecht zu Bewegungsvektor und Werkzeugvektor bei deiner nicht. Da du mit einem Schaftfräser fräst ist dieser Unterschied hier egal. Selbst bei bei massiven Abweichung des Flächennormalenvektor der nicht in der Fräsrichtung ist, hier also der NX und NY, hast du keine Abweichung da die Maschine bei Schaftfräser nur senkrecht zum Werkzeugvektor korrigiert.
   
Beitrag 14.08.2025, 09:16 Uhr
Andreas1964
Level 4 = Community-Meister
****
ZITAT(käse @ 14.08.2025, 09:16 Uhr) *
da die Maschine bei Schaftfräser nur senkrecht zum Werkzeugvektor korrigiert.

Moment mal.

In meinem Programm ist aktuell der N-Vektor = T-Vektor und wenn das so stimmt was Du sagst, dann müsste die Maschine auch ohne Umrechnung das Werkzeug senkrecht zum Werkzeugvektor korrigieren?

In welche senkrechte Richtung vom Fräser aus gesehen soll er sich denn bewegen? Es gibt hier nur eine Bewegung / Linie von XYZ nach XYZ und die Richtung des Werkzeuges, die Steuerung weiß nicht ob sie rechts oder links oder auf der Linie ist und weiß somit auch nicht ob sie auf die Linie zu oder weg korrigieren soll.

Es gibt hier nur eine Angabe wohin und das ist der N-Vektor. Und wenn der N-Vektor falsch ist, dann gibt es eine Abweichung und das Teil ist Schrott.

Entweder erzählst Du mir was vom Pferd oder Du hast Dich didaktisch sehr ungeschickt ausgedrückt.

Und mal zu dem Bewegungsvektor der nicht senkrecht zum Werkzeugvektor ist, ich weiß nicht was Du so fräst, aber das ist ganz normal wenn man mit einem Werkzeug angestellt auf einer Fläche arbeitet! Den Algorithmus den ich hier versuche zu entwickeln muss IMMER und in jeder Himmelsrichtung funktionieren, egal was für ein NC-Programm ich da reinstecke.

Andreas.
   
Beitrag 14.08.2025, 09:44 Uhr
käse
Level 3 = Community-Techniker
***
ZITAT(Andreas1964 @ 14.08.2025, 09:16 Uhr) *
Moment mal.

In meinem Programm ist aktuell der N-Vektor = T-Vektor und wenn das so stimmt was Du sagst, dann müsste die Maschine auch ohne Umrechnung das Werkzeug senkrecht zum Werkzeugvektor korrigieren?

In welche senkrechte Richtung vom Fräser aus gesehen soll er sich denn bewegen? Es gibt hier nur eine Bewegung / Linie von XYZ nach XYZ und die Richtung des Werkzeuges, die Steuerung weiß nicht ob sie rechts oder links oder auf der Linie ist und weiß somit auch nicht ob sie auf die Linie zu oder weg korrigieren soll.

Es gibt hier nur eine Angabe wohin und das ist der N-Vektor. Und wenn der N-Vektor falsch ist, dann gibt es eine Abweichung und das Teil ist Schrott.

Entweder erzählst Du mir was vom Pferd oder Du hast Dich didaktisch sehr ungeschickt ausgedrückt.

Und mal zu dem Bewegungsvektor der nicht senkrecht zum Werkzeugvektor ist, ich weiß nicht was Du so fräst, aber das ist ganz normal wenn man mit einem Werkzeug angestellt auf einer Fläche arbeitet! Den Algorithmus den ich hier versuche zu entwickeln muss IMMER und in jeder Himmelsrichtung funktionieren, egal was für ein NC-Programm ich da reinstecke.

Andreas.


Wenn der Werkzeugvektor gleich dem Flächennormalenvektor ist findet keine Korrektur statt. Das habe ich dir schon im anderen Faden geschrieben.

Beim Schaftfräser kann der Flächennormalenvektor senkrecht zur Bewegungsrichtung um fast 90 Grad abweichen ohne einen unterschied zu machen. Das kannst du an der Maschine testen.

Ich habe dir nur die Unterschiede zwischen den beiden Verfahren erklärt und dass bei deinem Verfahren der Flächennormalenvektor nicht senkrecht zu den anderen beiden Vektoren ist.
   
Beitrag 14.08.2025, 10:21 Uhr
Andreas1964
Level 4 = Community-Meister
****
Andere Frage:

Ich denke ich habe einen Bug in meinem SolidCAM. Das Programm fängt so an:

27 LN X-119.995 Y+1.061 Z-19 NX+0 NY+0 NZ+0 TX-0.9997964 TY+0.0201761 TZ+0 FMAX M128 M107
28 LN X-74.167 Y+0.136 NX+0 NY+0 NZ+0 TX-0.9997964 TY+0.0201761 TZ+0 FMAX
29 LN Z-26 NX0.0201761 NY0.9997964 NZ0 TX-0.9997964 TY+0.0201761 TZ+0 F AUTO

Satz 27 und 28 sind unkorrigiert, Fräser steht mit dem Mittelpunkt auf den Koordinaten.
Der Endpunkt im Satz 29 wird korrigiert angefahren.

Im Satz 29 fährt er von Z-19 auf Z-26, wenn dabei eine Korrektur stattfindet wird die Kontur schräg. Damit die gerade bleibt müsste der N-Vektor im Satz 28 der gleiche sein wie in Satz 29!?

Meine tatsächliche Kontur (der Stift) geht von Z-19.5 bis Z-25.5

Andreas.
   
Beitrag 18.08.2025, 08:51 Uhr
käse
Level 3 = Community-Techniker
***
Eventuell wäre es eine Möglichkeit die Flächennormalenvektoren nur für Bewegungen die hauptsächlich senkrecht zum Werkzeugvektor verlaufen zu erstellen (Eintauchbewegungen herausfiltern) und die von SolidCAM erstellten komplett verwerfen?
   
Beitrag 18.08.2025, 13:22 Uhr
Andreas1964
Level 4 = Community-Meister
****
ZITAT(käse @ 18.08.2025, 09:51 Uhr) *
Eventuell wäre es eine Möglichkeit die Flächennormalenvektoren nur für Bewegungen die hauptsächlich senkrecht zum Werkzeugvektor verlaufen zu erstellen (Eintauchbewegungen herausfiltern) und die von SolidCAM erstellten komplett verwerfen?

Das ist die Idee.

Vielleicht noch mal zur Klarstellung (für Mitleser): Man kann auch mit Schaftfräsern angestellt auf Flächen arbeiten, dafür funktioniert das hier nicht.

In diesem Spezialfall, muss ich mir in SolidCAM sogar 2 Hilfsflächen so basteln das ich quasi auf dem Zylinder fahre, die Flächen, auf die ich korrigieren will, ragen aber aus dem Zylinder heraus. Anders kriegst Du das mit SolidCAM, wenn man im Job seitlich zustellen will, um's verrecken nicht hin. Daher gibt mir mein SolidCAM N-Vektor = T-Vektor aus.

Bei meiner Bearbeitung kann ich jedoch sagen das der Flächenvektor bei einem Schaftfräser immer senkrecht auf dem Werkzeugvektor steht, genauer: Wenn wir uns in Richtung der X-Achse bewegen dann ist YZ immer 90°, nur in XY muss er dann immer senkrecht zum Werkzeugweg stehen. D.h. an den Stellen wo er wirklich fräst steht der Flächenvektor senkrecht zur Fläche.
Angehängte Datei  c.PNG ( 27.56KB ) Anzahl der Downloads: 9


Nun ja, ich denke ich bin fertig mit dem Thema, ich war heute an der Fräse und wir haben ein paar umgerechnete Programme mal simuliert, einmal mit DR0 und einmal mit DR-2, sah in der Simulation perfekt aus.

Den Code den ich oben gepostet habe funktioniert in allen Himmelsrichtungen.

Man ließt einfach das NC-Programm von oben nach unten, wenn ein Satz mit N-Vektor <> 0 auftaucht, dann kuckt man in den nächsten Satz ob dort auch ein N-Vektor <> 0 drin ist.

Wenn ja, dann nimmt man die XYZ-Bewegung von diesem zum nächsten Satz als Vektor und dreht ihn +90 (bei Gegenlauf um -90) um den T-Vektor und überschreibt den N-Vektor in dem Satz.
Wenn nein, dann...
...nimmt man die XYZ-Bewegung vom letzten zu diesem Satz als Vektor und dreht ihn um den T-Vektor und überschreibt den N-Vektor in dem Satz.
... wenn im letzten Satz der N-Vektor 0 ist, dann kriegt dieser den gleichen N-Vektor wie dieser Satz, sonst ist der Fräsweg schräg.

Alle anderen Sätze die einen N-Vektor = 0 haben lässt man einfach wie sie sind, das sind Übergangswege außerhalb meiner Hilfsfläche.
Wer solche Sätze in seinem Programm nicht hat, oder generell allen Sätzen einen N-Vektor<>0 geben will: Kein Problem, das Schema funktioniert IMHO auch mit anderen / von Hand geschriebenen Programmen.

Andreas.
   
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: