Name
CUTFORM

Syntax
CUTFORM n, methode, status,
  richtungX, richtungY, richtungZ, abstand,
  x1, y1, mask1 [, mat1],
...,
xn, yn, maskn [, matn]
CUTEND

Aufklappen Wertebereiche
n > 3, Anzahl der Punkte, Typ real
methode =1/=2/=3, Typ integer
status, Typ integer
abstand, Begrenzung der Schnittform, Typ real
richtungX, richtungY, richtungZ, Koordinaten des Richtungsvektors, Typ real
xi, yi, Koordinaten der Form in der xy-Ebene, Typ real
maski, Maskierung der seitlichen Schnittfläche, Typ integer
mati, Oberfläche der seitlichen Schnittfläche (wenn status j9), Typ integer oder string

Aufklappen Mask-Werte
Die Maskierungswerte geben an, wie sich die Kanten der Schnittröhre auf die geschnittenen Elemente auswirken. Die Definition ist ähnlich dem PRISM_-Befehl, jedoch ist die Sichtbarkeit der Fläche selbst nicht einstellbar.

maski= j1+ j2/7+ j3+ j5 mit
 j1=0/ =1: Untere, horizontale Kante ist unsichtbar/sichtbar.
 j2/7=0/ =2/ =66: Vertikale Kante ist unsichtbar/sichtbar/tangentiale Begrenzungskante.
 j3=0/ =4: Obere, horizontale Kante ist unsichtbar/sichtbar.
 j4=0/ =8: Die untere Kante des Schnittkörpers ist sichtbar
 j5=0/ =16: Die obere Kante des Schnittkörpers ist sichtbar

Dabei ist die untere oder obere Kante nicht räumlich auf die Z-Achse betrachtet, sondern die erste (untere) oder letzte (obere) Schnittfläche, die die gedachte Röhre mit dem geschnittenen Körper erzeugt. Maßgeblich ist der Richtungsvektor. In Richtung von (richtungX/ richtungY/ richtungZ) an der Eintrittschnittfläche ist die untere und an der Austrittsschnittfläche die obere Kante.

Die Bits j1-j3 beziehen sich natürlich nur auf die Kanten auf den Begrenzungsflächen des geschnittenen Körpers und nicht auf die evt. erzeugten Begrenzungspolygone des Schnittkörpers.

Aufklappen Statuswerte
status=j1+j2+j4/5+j6+j7+j8
 j1=0/1: Attribute nach Projekt oder Objekteinstellung/ nach Einstellungen im Skript
 j2=0/2: Polygone werden wie Schnittflächen / wie normale Oberflächen behandelt
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.
j7=0/64: Begrenzungspolygon unten mit unsichtbaren/sichtbaren Kanten
j8=0/128: Begrenzungspolygon oben mit unsichtbaren/sichtbaren Kanten.
j9=0/256: Seitliche Schnittflächen haben ein eigenes Material mat. (nur wenn j1=0)


Mit  j1 wird festgelegt, ob die Schnittflächen die Attribute von den Einstellungen des Objektes erhalten oder die gerade im Schnitt festgelegten erhalten.

Der Typ der Polygone ( j2) wirkt sich weder in 3D aus, noch hat er etwas mit den durch Schnittlinien erzeugten Schnittflächen zu tun, sondern steuert ausschließlich die Darstellung des 3D-Modells bei einer Projektion im 2D-Teil des Objektes. Die richtigen Werte im Parameter methode dort vorausgesetzt.
Ab ArchiCAD® 10 kann man mit dem PROJECT2{3}-Befehl sogar einen oder beide Flächentypen und/oder -kanten ausblenden.

Die Kanten des/der Begrenzungspolygone werden natürlich nur dargestellt, wenn sie sich auch innerhalb eines Körpers befinden und auch tatsächlich eine Schnittfläche erzeugen.

Aufklappen Erläuterung
CUTFORM ist eine Weiterentwicklung des CUTPOLYA-Befehls. Durch Angabe des Parameters methode sind nun noch andere als prismenförmige Schnittkörper möglich. Der Richtungsvektor ist hier obligatorisch. Die Endlichkeit der Schnittform wird nicht über den Parameter abstand, sondern über das Bit 6 im Parameter status festgelegt.
Es werden drei Schnittformen unterschieden:

methode=1: prismenförmig
methode=2: pyramidenförmig
methode=3: keilförmig

Schnittform Prisma:
Bis auf die zusätzlichen Statuswerte (siehe unten Endlichkeit der Schnittform) entspricht die Verwendung der Parameter der Beschreibung unter CUTPOLYA.

Schnittform Pyramide:
Im Gegensatz zum Prisma gibt der Richtungsvektor nicht nur die Neigung sondern die Koordinate der Pyramidenspitze an. Die Neigung der Pyramidenseitenflächen ergibt sich dadurch aus der Lage der Pyramidenspitze zu dem angegebenen Schnittpolygon der Pyramide in der X/Y-Ebene.

Schnittform Keil:
Analog zur Pyramidenform jedoch mit nicht punktuellem, sondern linearen oberen Ende. Diese Keilkante (First) ist stets parallel zur Y-Achse. Der Richtungsvektor gibt einen beliebigen Punkt auf dieser Geraden an. Der Parameter richtungY wird demnach ignoriert und kann beliebig sein. Andere Orientierungen der Keilkante sind nur durch zuvorige Transformationen des Koordinatensystems zu erreichen. Da nichtparallele, also windschiefe Geraden keine planare Ebene aufspannen können, sind die Keilseitenflächen für nicht zur Y-Achse parallele oder senkrechte Polygonkanten gekrümmt. Siehe auch unter Besonderheiten.

Bei allen Formen können zusätzlich zu der evt. formbedingten Begrenzung (Pyramide/Keil) zwei zusätzliche zur X/Y-Ebene parallele Begrenzungsebenen definiert werden.
Voraussetzung ist in jedem Fall, dass in status mindestens eine endliche Begrenzung zugelassen wird (j4/5).

Einseitig endliche Begrenzung (j4/5=16):
Das zusätzliche Begrenzungspolygon befindet sich in der Entfernung abstand vom Nullpunkt in der Richtung (richtungX/richtungY/richtungZ). Zeigt der Richtungsvektor in den negativen Z-Koordinatenbereich, erzeugt ein Wert mit abstand<0 eine Begrenzungsebene in positiver Z-Richtung. Siehe Abbildungen. Die Schnittform öffnet sich unendlich in die negative Richtung des Richtungsvektors. Eine pyramidenförmige Schnittform erzeugt einen Pyramidenstumpf , eine keilförmige einen Keilstumpf als Schnittform.

Zweiseitig endliche Begrenzung (j4/5=0):
Eine Begrenzung stellt die unter der einseitigen Begrenzung beschriebene Ebene im Abstand abstand von der XY-Ebene dar, die 2. Begrenzungsebene ist die XY-Ebene selbst. Damit wird ein geschlossener Körper als Schnittform definiert. abstand=0 erzeugt natürlich keinen Schnittkörper, da beide Begrenzungsebenen in der XY-Ebene liegen.

In unendlichen (unbegrenzten) Schnittformen (auch Pyramiden und Keile sind in dem Sinne unendlich) hat der Parameter abstand keine Auswirkung und wird ignoriert.

Funktionieren alle anderen Schnittbefehle ausschließlich als Bool'sche Differenz, kann mit CUTFORM durch status (Bit j6) auch eine Schnittmenge mit dem geschnittenen Körper erzeugt werden. Für einfache Körper kann so die etwas komplexe Verwendung von SEO vermieden werden.

Aufklappen Besonderheiten
Die Keilform hat einige Besonderheiten:
1. Wie oben erwähnt sind ggf. die Keilseitenflächen nicht eben, sondern gekrümmt. Offensichtlich ist deren Berechnung leider nicht sehr exakt, wodurch die Austritts- und Eintrittspolygone mitunter eigenartige Versprünge aufweisen.
2. Nach unserer Ansicht vertauscht ein Bug bis ArchiCAD 10 die Wirkung der Bits 1 und 3 ( j1 und  j3) der mask-Werte im Gegensatz zu den anderen Schnittformen.  j3 macht demnach in Richtung des Richtungsvektors betrachtet die unteren,  j1 oberen Kanten sichtbar oder eben nicht.

Aufklappen Attribute
PEN, MATERIAL, FILL ... (?)

Aufklappen Kontext
3D-Skript

Aufklappen ArchiCAD
ab 8.0