3D Scripting‎ > ‎

Schnittoperationen


CUTPLANE

Mit CUTPLANE wird eine Schnittebene im Raum erzeugt. Alle 3D Objekte die zwischen CUTPLANE und CUTEND erzeugt werden, werden von dieser Schnittebene geteilt sofern die Schnittebene und das 3D Objekt eine gemeinsame Schnittfläche haben. Die Teile des 3D Objekts die auf der "Schnittseite" liegen werden gelöscht. Schnittebenen können verschachtelt werden.

CUTPLANE [x, y, z [, side]]
[commands ...]
CUTEND

oder

CUTPLANE angle
[commands ...]
CUTEND

x, y, z: Diese drei Werte definieren eine Ebene, maximal ein Wert darf 0 sein.
side: Definiert welcher Teil des geschnittenen Objekts gelöscht wird, side=0 bedeutet, Teile oberhalb der Schnittebene werden gelöscht (Standard), side=1 bedeutet, Teile unterhalb der Schnittebene werden gelöscht.
angle: Rotationswinkel der Schnittebene

Die Anzahl der Parameter definiert das Verhalten der Schnittebene:

  • CUTPLANE : Die Schnittebene entspricht der XY-Ebene, gelöscht werden jene Objektteile, die in +Z Richtung über der Schnittebene liegen.
  • CUTPLANE angle : Schnittebene liegt in der X-Achse, angle ist der Winkle zwischen XY-Ebene und der Schnittebene. Gelöscht werden jene Objektteile die im Bereich von angle bis angle + 180 liegen. (siehe Beispiel 1)
  • CUTPLANE x, y : Die Schnittebene ist parallel zur Z-Achse, und schneidet die X- bzw. Y-Achse an den angegeben Werten. Gelöscht werden jene Objektteile die auf der Seite liegen, die nicht den lokalen Ursprung des aktuellen Koordinatensystems enthält.
  • CUTPLANE x, y, z : Die Schnittebene schneidet die X-, Y- und Z-Achse an den angegeben Werten. Gelöscht werden jene Objektteile die auf der Seite liegen, die nicht den lokalen Ursprung des aktuellen Koordinatensystems enthält.
  • CUTPLANE x, y, z, side : wenn side=0 entspricht das Verhalten genau der mit 3 Parametern, für side=1 gilt: gelöscht werden jene Objektteile die auf der Seite liegen, die den lokalen Ursprung des aktuellen Koordinatensystems enthält.

CUTSHAPE

Erzeugt eine U- (d > 0) oder L-förmige (d < 0) Schnittfigur, die erste Schnittfläche ist immer die XY-Ebene, die zweite Schnittebene ist die YZ-Ebene und bei der U-förmigen Schnittform, gibt d den Abstand der 3. Schnittfläche in +X-Richtung an.

CUTSHAPE d
[commands ...]
CUTEND

d: definiert die Schnittfigur

  • d = 0 : Schnittebene liegt in der XY-Ebene, Teile über der XY-Ebene werden gelöscht, funktioniert mit Allplan 2013 nicht.
  • d < 0 : L-Schnitt
    • 1. Schnittebene liegt in der XY-Ebene
    • 2. Schnittebene liegt in der YZ-Ebene
    Alle Objektteile im +X/+Z Quadranten werden gelöscht.
  • d > 0 : U-Schnitt
    • 1. Schnittebene liegt in der XY-Ebene
    • 2. Schnittebene liegt in der YZ-Ebene
    • 3. Schnittebene parallel zur YZ-Ebene mit Abstand d in X-Richtung
    Objekte über der XY- und zwischen der 2. und 3. Schnittebene werden gelöscht

CUTPOLY

Wie der CUTPLANE-Befehl werden alle nachfolgenden 3D-Elemente bis zum zugehörigen CUTEND-Befehl beschnitten. Schnittfigur ist ein, in der XY-Ebene frei definierbarer konvexer Polygonzug, verschoben entlang des Richtungsvektor rx, ry, rz. (Standard = [0, 0, 1]), alle Objektteile innerhalb dieser "Röhre" werden gelöscht.

Ein Verschiebungsvektor in der XY-Ebene (rz = 0) löscht alle zwischen CUTPOLY und CUTEND definierten Objekte.

CUTPOLY n, x1, y1, ..., xn, yn [, rx, ry, rz]
[commands ...]
CUTEND

n: Anzahl der Polygonpunkte
xi, yi: Koordinaten in der XY-Ebene
rx, ry, rz: Koordinaten des Richtungsvektors

CUTPOLYA

Erzeugt ähnlich wie der CUTPOLY-Befehl eine Schnittröhre, diese wird aber durch zwei Ebene begrenzt. Erstens durch die XY-Ebene und zweitens durch eine zur XY-Ebene parallelen Ebene mit dem Abstand d in Z-Richtung (genauer: Richtung der rz Komponente des Richtungsvektors). Wenn d=0 ist, ist  das Ergebnis identisch mit CUTPOLY, da die Parameter status und mask von Allplan nicht unterstützt werden. Wird eine begrenzte Röhre definiert (d <> 0), so zeigt die Öffnung stets in die Richtung des Richtungsvektors, auch wenn d < 0 ist.

CUTPOLYA n, status, d, x1, y1, mask1, ..., xn, yn, maskn [, rx, ry, rz]
[commands ...]
CUTEND

n: Anzahl der Polygonpunkte
status: wird nicht unterstützt
d: Begrenzung der Schnittform, Abstand von der XY-Ebene in Richtung der rz Komponente des Richtungsvektors
xi, yi: Koordinaten in der XY-Ebene
maski: wird nicht unterstützt
rx, ry, rz: Koordinaten des Richtungsvektors

CUTFORM

CUTFORM ist eine Weiterentwicklung des CUTPOLYA-Befehls, es gibt zwei weitere Schnittformen: Keil und Pyramide.

CUTFORM n, form, status, rx, ry, rz, d, x1, y1, mask1, ..., xn, yn, maskn
[commands ...]
CUTEND

n: Anzahl der Polygonpunkte
form: 1/2/3 = Prisma/Pyramide/Keil
status: siehe unten
rx, ry, rz: Koordinaten des Richtungsvektors
d: Begrenzung der Schnittform, Abstand von der XY-Ebene in Richtung der rz Komponente des Richtungsvektors
xi, yi: Koordinaten in der XY-Ebene
maski: wird nicht unterstützt

status = j4/5 + j6

  • j4/5 = 0: Endlicher Schnitt
  • j4/5 = 16: Einseitig unendlicher Schnitt
  • j4/5 = 24: Unendlicher Schnitt
  • j6 = 0|32: Schnittform bildet Boole’sche Differenz | Schnittmenge mit dem Schnittkörper

Schnittform Prisma

Entspricht, bis auf die Steuerung der Schnittformbegrenzung, CUTPOLYA. Sowohl beim einseitig als auch beim beidseitig unendlichen Schnitt wird der Paramater d ignoriert. Der einseitig unendliche Schnitt beginnt immer in der XY-Ebene.

Schnittform Pyramide

Der Richtungsvektor gibt die Koordinate der Pyramidenspitze an. Die Basisfläche liegt in der XY-Ebene. Der Parameter d begrenzt die Pyramide mit einer zur XY-Ebene parallelen Fläche mit dem Abstand d. Einseitig und beidseitig unendliche Schnitte verlängern die Schnittpyramide von der Spitze weg. Negative Richtungsvektoren in Kombination mit unendlichen Schnitten, führen zu seltsamen (falschen?) Ergebnissen.

Schnittform Keil

Die obere Keilkante wird durch den Richtungsvektor definiert und ist immer parallel zu Y-Achse, ry Komponente wird ignoriert. Als endlicher Schnitt wird der Keil oben mit einer Ebene parallel zur XY-Ebene mit Abstand d abgeschnitten. Einseitig und beidseitig unendliche Schnitte verlängern den Schnittkeil von der Spitze weg. Negative Richtungsvektoren in Kombination mit unendlichen Schnitten, führen zu seltsamen (falschen?) Ergebnissen.

Durch das Setzen des Bit j6 des status Werts, kann auch eine Schnittmenge mit dem geschnittenen Körper erzeugt werden.

CUTPLANE

CUTPLANE 30

CUTPLANE 3, 4

CUTPLANE 3, 4, 5

CUTPLANE 3, 4, 5, 1

CUTSHAPE L-SHAPE

CUTSHAPE U-SHAPE

CUTPOLY

CUTPOLYA

CUTFORM form=1 d=3 status=16

CUTFORM form=2 status=16

CUTFORM form=3 status=0