Name
APPLICATION_QUERY

Syntax
APPLICATION_QUERY (erweiterung, parameter, variable1, variable2, ...)

Aufklappen Wertebereiche
erweiterung, Typ string; Mit folgenden Werten:
   "DOCUMENT_FEATURE" (1.)
   "PARAMETER_SCRIPT" (7.)
   (2.-6. betrifft MEP - in Arbeit)

parameter, Typ string

Aufklappen Erläuterung
APPLICATION_QUERY bietet diverse Abfragemöglichkeiten um in ArchiCAD bestimmte Umgebungswerte an ein GDL-Objekt zu übergeben:

Ãœber den Wert von erweiterung wird der abzufragende Kontext bestimmt:

"DOCUMENT_FEATURE"

Dieser Befehl ist in der Lage, diverse Eigenschaften des aktiven Dokumentenfensters abzufragen. Derzeit gibt es nur eine Eigenschaft, die zurückgegeben werden kann - die Blickrichtung in Bezug auf das Dokument. Hat parameter den Wert "view_direction" wird also die Blickrichtung des aktuellen Dokumenttyps zurückgegeben, in welchem das Objekt visualisiert wird. Es gibt keine zusätzlichen Parameter.

Verwendung:
n = APPLICATION_QUERY ("document_feature", "view_direction", orientierung)

Mögliche Rückgabewerte in orientierung:
"vertical_only": Grundriss
"horizontal_only": für Schnitte und Ansichten, welche aus 3D erzeugt werden (nicht wenn das Objekt in Schnitt/Ansicht plaziert wird)
"free": für 3D und 3D-Dokument
"none":
"unset":

"PARAMETER_SCRIPT"

Dieser Befehl ist in der Lage, verschiedene Bedingungen des Parameter-Scriptes zu übergeben. Momentan gibt es nur eine Eigenschaft, welche zurückgegeben werden kann - die Unterscheidung des ersten Durchlaufes. Hat parameter den Wert "firstoccasion_in_progress", wird also angezeigt, ob der erste Durchlauf des Parameterscrptes erfolgt.

Verwendung:
n = APPLICATION_QUERY ("parameter_script", "firstoccasion_in_progress", ersterDurchlauf)

Der Rückgabewert in ersterDurchlauf zeigt an, ob der gegenwärtige Scriptdurchlauf der erste ist oder die Folge einer vorhergehenden Ausführung des Parameter-Scriptes, welcher einige Parameter verändert hat.

Diese Unterscheidung kann wichtig sein, wenn ein Teil des Parameter-Scriptes ein bestimmtes Ereignis anstösst - z.B. steuert es das Drücken eines UI_FUNCTION-Schalters.

Aufklappen Beispiel
Ein weiteres Beispiel der inzwischen vielfältigen APPLICATION_QUERY - Varianten ist die Abfrage von Eigenschaften des Bibliotheken-Managers bzw. den Inhalt von bestimmten geladenen Dateien (ab AC 18).

LIBRARY_MANAGER
Dieser Befehl kann zur Zeit 2 unterschiedliche Dateitypen aus dem Bibliotheken-Manager abfragen: IES-Dateien und Bilddateien des Anwenders

n = APPLICATION_QUERY ("LIBRARY_MANAGER", "IES_FILES", ies_files_list)
Dieser Befehl fragt eine Liste der .ies Dateinamen ab, welche in der aktiven Bibliothek geladen sind.

n = APPLICATION_QUERY ("LIBRARY_MANAGER", "USER_IMAGE_FILES", image_files_list)
Dieser Befehl fragt eine Liste der Bilddateien ab, die in der aktiven Bibliothek geladen sind (Bilddateien, welche nicht in den dedizierten Ordnern liegen, welche folgenden Namen enthalten: [TImg]*, [BImg]*, or [UImg]*)

Diese Befehle sind in Zusammenhang mit dem neuen "ArchiCAD_Library_Master" Objekt, welches einen spezieller Subtyp nutzt ("Bibliotheken Master"), interessant.
Dieses Master-Objekt ist quasi der Nachfolger von früherer Master_GDL.gdl-Dateien, welche global geltende Eigenschaften an Objekte einer geladenen Bibliothek vererben konnten.
Das entsprechende neue "ArchiCAD_Library_Master" Objekt aus der Basic Library beitzt nur einziges Script, das Master-Script, in welchem man folgenden Inhalt findet:


! ==============================================================================
! IES file request
! ==============================================================================

dim stIesFiles[]
bIesFileExist = APPLICATION_QUERY ("LIBRARY_MANAGER", "IES_FILES", stIesFiles)
if bIesFileExist then
values "c4dPhoIESFile" stIesFiles
else
values "c4dPhoIESFile" ""
endif

! ==============================================================================
! Custom 3D picture file request
! ==============================================================================

dim stCustomPicFiles[]
bCustomPicFileExist = APPLICATION_QUERY ("LIBRARY_MANAGER", "USER_IMAGE_FILES", stCustomPicFiles)
if bCustomPicFileExist then
values "gs_picture_name" stCustomPicFiles, CUSTOM
endif

! ==============================================================================
! Custom 2D picture file request
! ==============================================================================

dim stCustomPicFiles2D[]
bCustomPicFile2DExist = APPLICATION_QUERY ("LIBRARY_MANAGER", "USER_IMAGE_FILES", stCustomPicFiles2D)
if bCustomPicFile2DExist then
values "gs_picture_name_2D" stCustomPicFiles2D, CUSTOM
endif

Der erste Teil listet alle in der geladenen Bibliothek enthaltenden Lichteigenschafts-Dateien mit der Endung IES.
Der zweite Teil listet alle in der geladenen Bibliothek enthaltenden Bilddateien, welche nicht in ArchiCAD-Systemordnern liegen.
Der dritte Teil ist mit dem zweiten im wesentlichen identisch.
Jedes GDL-Objekt, welches nun z.B. einen Parameter mit dem Namen gs_picture_name als Stringparameter enthält,
besitzt ohne eigenen VALUES-Befehl eine Auswahlliste aller genannten Grafiken (wird z.B. im ArchiCAD Bildobjekt verwendet).
Diese Auswahlliste besitzt die coole Eigenschaft, bei sehr vielen Dateien diejenigen hervorzuheben, deren Anfangsbuchstaben man nach dem klick auf den Popuppfeil eintippt.


! ==============================================================================
! Renovation Status request + Show on Renovation Filter Request
! ==============================================================================

renoStatus = "" ! Renovation Status
n = APPLICATION_QUERY ("OwnCustomParameters", "GetParameter(Renovation.RenovationStatus)", renoStatus)

renoFilter = "" ! Shown on Renovation Filter
n = APPLICATION_QUERY ("OwnCustomParameters", "GetParameter(Renovation.ShowOnRenovationFilter)", renoFilter)


Aufklappen ArchiCAD
ab 12.0