Funktion CALL


Kann man die Funktion CALL mit einer Bedingung ein- bzw. ausschalten und so externe Smartparts ins Script einfügen und wieder ausschalten?

Nehmen wir an es handelt sich um ein Script von einem Tisch, ich möchte da verschiedene Stuhlarten einfügen können.

IF st_r = 1 THEN

CALL "stuhl rietfeld" PARAMETERS ALL

ENDIF

Ich hab sowas probiert,hat aber nicht geklappt.

Hallo,

ein CALL hat bestimmte Randbedingungen:

1. das aufzurufenden SmartPart muß sich in <PRJ>\SmartParts-Ordner befinden, z.B. "stuhl.smt"
2. hinter CALL ist der Dateiname ohne Endung anzuhängen. (Leerzeichen im Dateinamen sind nicht zulässig) , zB: CALL "stuhl" ...
3. PARAMETERS ALL besagt, daß dem aufgerufenen SmartPart ALLE Parameter des aktuellen SmartParts "mitgegeben" werden. Das dürfte bei einem Tisch-SmartPart, das einen Stuhl aufruft nicht ganz passen!

Die Parameter des Callobjekts kann man jedoch einzeln zuweisen, zB:
CALL "stuhl" PARRAMETERS ref_x=0.45,ref_y=0.45
generiert das SmartPArt "Stuhl" mit Breite (ref_x) und Tiefe (ref_y) von 0.45

Gruß Jörg

In der Beilage sind zwei Öffnungen. Die mit dem Rahmen beinhaltet eine Call Funktion. Die andere Öffnung beinhaltet ein Smartpart von einem Fensterrahmen welches sich im Smartpart Ordner befinden sollte. Ich will jetzt den Fensterrahmen mit der CALL Funktion in den Rahmen einfügen. Und das funktioniert auch problemlos. Über eine IF THEN Bedingung will ich den Fensterrahmen ein bzw. ausschalten können. Das will ich über den Parameter feinfl (Fenster Einflüglig) steuern. Das funktioniert so, wie ich das Programmiert habe, nicht.

Kannst du mir sagen an was das liegt?

Anhänge (1)

Typ: application/force-download
1301-mal heruntergeladen
Größe: 1,16 MiB

Hallo,

die Variable f_einfl ist immer 0 !
Du kannst das prüfen, indem Du
PRINT f_einfl
vor der IF-THEN-Abfrage plazierst.
(s. print.png)
Gesetzt wird die Variable im Masterscript Zeile 37!
(s. set_var.png)

Der CALL wird also nie aufgerufen!

Eins noch:

Man muß unterscheiden zwischen Parametern und Variablen:
Parameter "leben" weiter, nach der Ausführung eines Scriptes
Variablen "leben" nur solange, wie das Script läuft.
Vor der Ausführung jedes Scriptes werden alle Parameter in Variablen konvertiert,
und dem Script zur Verfügung gestellt!
Ausnahme: Das Master-Script ist wie ein "Header". Es wird vor alle anderen Scripte kopiert, bevor diese ausgeführt werden.
Das Ändern einer Variablen im Script führt nicht zu einer Änderung des gleichnamigen Parameters!
Auch werden die Variablen nach Ausführung des Scriptes nicht in die Parameter zurückgeschrieben!

Das Ändern eines Parameters während der Ausführung eines Scriptes erfolgt mit

f_einfl = 0 !!!ändert Varable
PARAMETERS f_einfl = 0 !!!ändert Parameter

Der Befehl PARAMETERS sollte nur im Parameter-Script verwendet werden!

Gruß Jörg

Anhänge (2)

Typ: image/png
499-mal heruntergeladen
Größe: 61,73 KiB
Typ: image/png
411-mal heruntergeladen
Größe: 51,05 KiB

der Aufruf von "Call" mit der obeigen Syntax:
CALL "Stuhl" PARRAMETERS ref_x=0.45,ref_y=0.45
ist klar.
Aber wie setzt man den der Parameter "PARAMETERS_RETURN" ein?

In der Beschreibung steht:
Syntax: "CALL ... PARAMETERS_RETURN var1, var2"
Remarks: "usable since script version 1.1 (Allplan 2012-1)"
Jetzt ist die Frage was ist "var1" und wie bzw. wo ist diese definiert?

Hallo,

mit RETURNED_PARAMETERS kann man Werte vom aufgerufenen Sub-SmartPart zurückerhalten:

Haupt-SmartPart
---------------------
CALL "test" PARAMETERS ALL , RETURNED_PARAMETERS ret1,ret2
PRINT ret1,ret2
---------------------

SubSmartPart "Test"
---------------------
!code
...
END 1,"ok"
---------------------

Nach dem CALL enthalten die Variablen des Haup-SmartParts folgende Werte:

ret1=1
ret2="ok"

Gruß Jörg

DANKE !
Es geht.

Ggf. müssen die RGB-Parameter dem Büro angepasst werden (Color2RGB.smt).

Hier Code aus dem 3D-Script(Zuweisung einer Transparenten Farbe für die Animation):

LAYER profil_layer
COLOR profil_color
PEN profil_pen
STROKE 1

SECT_FILL profil_fill_color ! für ASSO-Schnitte

CALL "Color2RGB" PARAMETERS color2rgb = profil_color PARAMETERS_RETURN color_r , color_g , color_b

DEFINE MATERIAL "Mat_Tol" 1 ,
color_r , ! R aus CALL "Color2RGB" ...
color_g , ! G
color_b , ! B
0.0 , ! flare
0.0 , ! diffuse
0.0 , ! reflection
profil_transparenz / 100.0 , ! transparenz
0.0 , ! gloss
0.0 ! derating_trans

MATERIAL "Mat_Tol" ! Material zuweisen
! Hier Körper erzeugen

MATERIAL "" ! zuweisung löschen

Anhänge (1)

Typ: application/octet-stream
1213-mal heruntergeladen
Größe: 27,11 KiB