abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Programmierung
Alles über Programmierung in GDL und Python

intern definierte materialien verwenden oder welche aus

zzyzx
Newcomer
ich bin grad an einem objekt dran, da hätte ich gerne folgendes drin:

eine option zum umschalten, ob interne oder per auswahlmenü definierte materialien verwendet werden sollen.
dabei soll vermieden werden, dass irgendwelche materialien dem normalen menü hinzugefügt werden (was man ja mittels einer master gdl machen kann, aber ich kann das auch nicht leiden und will's deshalb auch sonst niemandem zumuten)

aber wie?
7 ANTWORTEN 7
Holger_Kreienbrink
Graphisoft Alumni
Graphisoft Alumni
Interne Materialien musst du im Masterscript definieren.

Externe werden über den normalen Materialienparameter aufgerufen.

Wahrscheinlich musst du zwei Parameter anlegen für die jeweilige Auswahl und einen der zwischen diesen beiden hin und her schaltet.

Das müsste dann wohl im Masterscript abgefangen werden, welcher der beiden dann jeweils eingesetzt wird.

Sozusagen:

IF parameterauswahl=vonarchicad THEN
farbparameter=archicadfarbparameter
ENDIF

IF parameterauswahl=intern THEN
farbparameter=internerfarbparameter
ENDIF

nicht vergessen dass man im Masterscript die Parameter noch mal neu setzt mit PARAMETERS farbparameter?farbparameter, etc

Und im 3D Script dann
MATERIAL farbparameter


so könnte es klappen, denke ich...

Hasige Grüße
zzyzx
Newcomer
hi hase,

danke für den ansatz, genau so isses!
wobei man auch alles im 3d skript erledigen kann, sofern man auf eine rückmeldung verzichten kann
ich hab's jetzt jedenfalls hinbekommen:


</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">! interne materialien oder solche aus der liste nehmen by zzyzx
! m1 ( material in parameterliste)
! m_int ( checkboxparameter in parameterliste)

DEFINE MATERIAL "RAL-9010" 4, 0.95, 0.96, 0.96
if m_int then
mat1 = "RAL-9010"
else
mat1 = m1
endif

material mat1

block 1,1,1
sphere 0.65
Anonymous
Nicht anwendbar
Hallo zzyzx,

Wenn die Materialien im Master definiert werden tauchen sie auch im normalen Menü auf. Werden sie im Objekt definiert, tauchen sie dort nicht auf, erhalten aber auch keinen internen Index, weswegen sie nur per String, also per Namen, aktiviert werden können (Im Gegensatz dazu werden Schraffuren und Linien IMMER in das Standardmenü aufgenommen.)

Somit kannst du deine eigenen Materialien gar nicht mit dem gleichen Parameter abfragen wie die global verfügbaren. Die Lise der lokal verfügbaren Materialien solltest du dann im Parameterskript selbst anlegen.

Wenn du es kompliziert machen willst fragst du alle globalen Materialien per "NAME_of_Material" ab und machst einen Textparameter als Abfrageliste. Halte ich aber nicht für sehr komfortabel. Besser 2 Parameter.

[ 01. Dezember 2005, 17:04: Beitrag editiert von: Ove Bodj ]
zzyzx
Newcomer
@ ove:

danke auch für deine erläuterungen.
da stecken doch mehr möglichkeiten drin, als erwartet.
ich denke, ich werde in meinem fall diesmal nur eine ganz einfache sache machen: bei internem material gibts keine auswahl sondern es wird einfach nur das vorgesehene material zugewiesen und der materialauswahlparameter im ui ausgeblendet und stattdessern der name des internen materials eingeblendet.

wenn ich es mal etwas komfortabler machen werde, gibts eben eine kleine liste mit vier selbstdfinierten matrerialien und wie du gesagt hast zwei verschiedene parameter

die sache mit der liste aus allen internen +selbstdefinierten materialien ist zwar auch nicht schlecht, aber es tauchen dann auch nur namen auf und die liste dürfte ggf. ziemlich lang werden.

:winken:
zzyzx
Newcomer
das sieht dann so aus:
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">! interne materialien oder solche aus der liste nehmen by zzyzx
! m1 ( material in parameterliste)
! m_int ( checkboxparameter in parameterliste)
! mliste ( Liste mit internen Materialien)

! 3d Skript
DEFINE MATERIAL "RAL-9010" 4, 0.95, 0.96, 0.96
DEFINE MATERIAL "RAL-7016" 4, 0.3, 0.3, 0.3
if m_int then
mat1 = mliste
else
mat1 = m1
endif
material mat1
block 1,1,1
sphere 0.65

! parameter skript

values "mliste" "Ral-9010","Ral-7016"
if m_int then
lock "m1"
else
lock "mliste"
endif danke nochmals für die ideen und anregungen :winken:
Frank Beister
Moderator
Dein Objekt schreit quasi nach dem Befehl DEFINE_MATERIAL_BASED_ON, der bestehende Materialdefinition aufnimmt und nur gezielte Attribute (z.B. RGB 😉 ) ändert. Ums ganz genau zu wissen kannst du auch REQUEST{2} ("Material_info", material, parametername, variable1 [,... variable5]) nehmen und erst mal alle Materialeigenschaften auszulesen. So kannst du ein Material wählen lassen, aber auf deinen RAL-Ton geändert neu definieren. Und nun der unschöne Aspekt: Geht erst ab AC9. 😠
bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
zzyzx
Newcomer
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif">Original erstellt von Frank Beister:
Dein Objekt schreit quasi ... lassen wir's schreien 😉
sooo kompliziert wollte ich es eigentlich nicht machen.
:winken: