Hallo zusammen,
ich habe einen Monitor programmiert, auf den man ein eigenes Bild als 3D Textur legen kann. Dazu hab ich mir den Code für das 3D Script aus dem ArchiCAD Monitor geklaut. Das sieht bei mir dann so aus:
!!!!!! Materialdefinition Auswahl eigenes Bild
DEFINE empty_fill "emptyFill"
screenSizeX = A - 2*R1
screenSizeY = ZZYZX -2*R1
IF gs_picture_custom and gs_picture_name <> "" THEN
DEFINE TEXTURE "custPict" gs_picture_name, screenSizeX, screenSizeY, 0, 0
DEFINE MATERIAL "custPict" 20,
0.8, 0.8, 0.8,
0.58, 0.85, 0.2, 0,
50,
0,
0.878401, 0.513481, 0.412253,
0, 0, 0,
0,
IND(fill, "emptyFill"), 1,
IND(texture, "custPict")
ELSE
DEFINE TEXTURE "defPict" 1, screenSizeX, screenSizeY, 0, 0
DEFINE MATERIAL "defPict" 20,
0.8, 0.8, 0.8,
0.58, 0.85, 0.2, 0,
50,
0,
0.878401, 0.513481, 0.412253,
0, 0, 0,
0,
IND(fill, "emptyFill"), 1,
IND(texture, "defPict")
ENDIF
! Ende Materialdefinition
! Bildschirm
ADD R1,0,R1
IF bPictureOnScreen THEN
IF gs_picture_custom AND gs_picture_name <> "" THEN
MATERIAL "custPict"
ELSE
MATERIAL "defPict"
ENDIF
ELSE
MATERIAL mat2
ENDIF
BLOCK A-R1*2,0.04,H-R1*2
VERT 0, 0, 0
VERT 1 - 2 * SYMB_MIRRORED, 0, 0 ! Correcting the Texture mapping for Picture in case of mirrored object
VERT 0, 1, 0
VERT 0, 0, 1
COOR 2+256, -1, -2, -3, -4
BODY 1
DEL 1
RETURN
Nun ist das Problem, dass in der Auswahlliste im Objekt ALLE zu findenden Grafiken enthalten sind. Also auch alle die in der Bibliothek von AC20 zu finden sind.
Gibt es eine Möglichkeit einen Dateipfad einzustellen? Oder es auf eine Bibliothek zu beschränken? Die Grafiken die ich zur Auswahl stellen möchte befinden sich in der gleichen Verknüpften Bibliothek wie der Monitor.
Super wäre es, wenn die Auswahl dynamisch bleibt, so dass ich auch neu dazu gekommene Grafiken nach einer Bibliotheksaktualisierung verwenden kann.
Danke schonmal!