coord-transf.2d elements3d elementsnon geo scriptsfunctionscontrol statem.attributesvariousaddons
generallinesfillsmaterialstextextended
FILL DEFINE FILL DEFINE FILLA DEFINE SYMBOL_FILL DEFINE SOLID_FILL DEFINE EMPTY_FILL FILLTYPES_MASK
Name
DEFINE_FILL
Syntax
DEFINE FILLname [[,] FILLTYPES_MASK fill_category,]
bitmap_pattern1, ..., bitmap_pattern8,
scaling, angle, n,
frequency1, direction1, translationX1, translationY1, m1,
length1,1, ..., length1,m,
...
frequencyn, directionn, translationXn, translationYn, mn,
lengthn,1, ..., lengthn,m
[[,] 
ADDITIONAL_DATA [external_name1= external_value1, ... external_namen= external_valuen]
Aufklappen Range
name, Typ Text
fill_category, Typ integer (*)
0 ≤ bitmap_patterni < 256, Typ integer
scaling > 0, Typ real
angle, Typ real
0 < n, Typ integer
frequencyi > 0, Typ real
directioni, Typ real
translationXi, Typ real
translationYi, Typ real
0 ≤ mi, Typ integer
lengthi,j ≥ 0, Typ real

external_namei, in der externen Anwendung verwendeter Parametername
external_valuei, Ausdruck oder Wert, Typ abhängig von der externen Anwendung

(*) since ArchiCAD® 9 mit fill_category=j1+j2+j3
 j1=1: Schraffur ist Bauteilschraffur
 j2=2: Schraffur ist Deckschraffur
 j3=4: Schraffur ist Zeichenschraffur
Aufklappen Description
Definiert einen Schraffurtyp mit dem Namen name.

Zunächst wird das Muster für die Bitmapdarstellung wie im Menü Optionen>Schraffurtypen... definiert. Das Raster von 8x8 Punkten wir in 8 Zeilen (bitmap_pattern1-8) á 8 bit (0-255) von oben nach unten zerlegt. (siehe Abb.1)

Die Vektorschraffur kann wiederum nur lineare Bestandteile enthalten. Im Prinzip entspricht das einer Reihe von n Liniendefinitionen mit zusätzlichen Angaben der Position zueinander.

Mit angle wird zunächst der Neigungswinkel der kompletten Schraffurdefinition gesetzt. In der Folge wird dann mit scaling das (gedrehte) System in X- wie in Y-Richtung gleichförmig skaliert. Wie bei der Liniendefinition gilt:

 scaling=1: absolut, Maßangabe in Metern (auf dem Papier).
 scaling=1/1000 : absolut, Maßangabe in mm (auf dem Papier).
 scaling=1000/GLOB_SCALE  : maßstäblich, Maßangaben in Meter (im Plan).

Für alle n Linien sind jeweils folgende Parameter anzugeben:

Die Koordinate des Startpunktes der Linie (translationXi/translationYi) und die Drehung (directioni) an diesem Punkt bezogen auf das ggf. bereits durch angle gedrehte Bezugssystem. (siehe Abb. 3+4)

frequencyi gibt den Wiederholungsabstand der Linie zur Erzeugung einer Schraffur an. Der Versatz ist immer senkrecht zu der ggf. durch directioni gedrehten Linie. Also in Richtung einer gedachten Y-Achse, wenn sich die Linie entlang einer X-Achse entwickelt. (siehe Abb. 4)

Analog zum DEFINE LINE_TYPE-Befehlbestehen die Linien aus mi Segmenten, die im Wechsel sichtbare Linie/Zwischenraum darstellen. Das erste Segment ist immer sichtbar. Segmentlängen (lengthi,j) von 0 erzeugen Punkte. mi=0 erzeugt eine ununterbrochene Linie. (siehe Abb. 5)

Das since ArchiCAD 9 optionale Syntaxfragment FILLTYPES_MASK wird ebenso wie die Sektion ADDITIONAL_DATA separat erläutert.

Der DEFINE FILL-Befehl wurde in ArchiCAD 6 in einem neuen Befehl (DEFINE FILLA) um einige Parameter erweitert.
Aufklappen Example
a=3
b=3

DEFINE FILL "Quadrat" 32,16+64,8+128,16+64,32,0,0,0,
! skalierung,winkel,n
0.75, 45.00, 4,
! Linie 1 - frequenz,richtung,verschiebungX,verschiebungY,m
1.00, 0.00, 0.00, 0.00, 2,
0.20, 0.80,
! Linie 2 - frequenz,richtung,verschiebungX,verschiebungY,m
1.00, 90.00, 0.00, 0.00, 2,
0.20, 0.80,
! Linie 3 - frequenz,richtung,verschiebungX,verschiebungY,m
1.00, 0.00, 0.00, 0.20, 2,
0.20, 0.80,
! Linie 4 - frequenz,richtung,verschiebungX,verschiebungY,m
1.00, 90.00, 0.20, 0.00, 2,
0.20, 0.80

FILL "Quadrat"

poly2_B 4,2+4,SYMB_VIEW_PEN,0, 0,0,0, a,0,0, a,b,0, 0,b,0
Aufklappen Specialities
Der Schraffurtyp wird nicht nur lokal angelegt, sondern global. Das hat einige Konsequenzen:
Jeder im Skript angelegte Schraffurtyp ist somit auch in allen Schraffurauswahldialogen außerhalb des Objektes verfügbar. Das gilt für alle Projekte, in denen das Objekt Bestandteil der Bibliothek ist.
Wird der Befehl zu großzügig verwendet wird der Auswahldialog für Schraffurtypen leicht unübersichtlich.
Wurde eine Schraffur so erst einmal innerhalb eines Projektes definiert bleibt sie auch nach lösen der betreffenden Bibliothek vom Projekt erhalten. Das kann beim testweise Zuladen von Bibliotheken die Attributemenge ungewollt erhöhen. ArchiCAD gibt da auch keinen Warnhinweis.
Reagiert der DEFINE FILL-Befehl auf spezielle Einstellungen, die von platziertem Objekt zu platziertem Objekt unterschiedlich sind, wird bei jedem erneuten Durchlauf des Skriptes in irgendeiner Instanz des Objektes der Schraffurtyp immer wieder global geändert, was Auswirkungen auf alle Zeichnungselemente hat, die den Typ verwenden. Die Schraffur hat dann die Definition des zuletzt ausgeführten Objektcodes.

Angesichts der Einschränkungen ist der Befehl mit Bedacht zu verwenden und zu prüfen, ob er nicht besser in einer MASTER_GDL der Bibliothek angesiedelt ist.

Das optionale Komma vor FILLTYPES_MASK und ADDITIONAL_DATA ist erst since ArchiCAD 10 zulässig und erlaubt so eine bessere Formatierung des Skriptes durch die Möglichkeit eines Zeilenumbruchs.
Aufklappen Context
2D-Skript, 3D-Skript, MASTER_GDL
Aufklappen ArchiCAD®
since 4.5
Aufklappen References
GDL-Handbuch 4.5 (DE) p. 110
GDL-Handbuch 5.0 (DE) p. 147
GDL-Handbuch 6.0 (DE) p. 158
GDL-Handbuch 6.5 (DE) p. 154
GDL-Handbuch 7.0 (DE) p. 154
GDL-Handbuch 8.0 (DE) p. 104/109
GDL-Handbuch 8.1 (DE) p. 106/111
GDL-Handbuch 9.0 (DE) p. 168/180
GDL-Handbuch 10.0 (DE) p. 166/178
GDL-Handbuch 11.0 (DE) p. 174/184
GDL Reference Guide 9.0 (INT) p. 164/175
GDL Reference Guide 10.0 (INT) p. 166/177
GDL Reference Guide 11.0 (INT) p. 166/177
GDL Cookbook 3.1 (EN/DE) p. 1.44
 





Abb.1 Binäre entsprechung des Bitmapmusters


Abb.2 Neigung der kompletten Schraffur und jeder einzelnen Linie zur X-Achse.


Abb.3 Verschiebung der Linienansatzpunkte:
vxi=skalierung*verschiebungXi
vyi=skalierung*verschiebungYi


Abb.4 Wiederholungsfrequenz der Einzellinien.
fi=skalierung*frequenzi


Abb.5 Definition der Einzellinien aus Segmenten:
Li,j=skalierung*längei,j
z.B. für die erste Linie mit m1=4:
L1,1=skalierung*länge1,1
L1,2=skalierung*länge1,2 (Zwischenraum)
L1,3=0 (Punkt)
L1,4=skalierung*länge1,4 (Zwischenraum)

separates Web Control Fenster Download Objekt

Aufklappen GDL WebControl