abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

Wir schätzen Ihren Input!
Bitte nehmen Sie an der Umfrage zu Archicad 28 Startbildschirm und Lerninhalte/Schnell-Tutorials teil

Programmierung
Alles über Programmierung in GDL und Python

UI_Interface

archiflow1
Newcomer
Hallo,
Ich möchte in einem UI_Interface eines Objektes einen Button einfügen, der eine Aktion auslöst.
Beispiel: Ich habe Objekt mit eine "händischen" Raumnummer und eine die via REQUEST aus dem Raum geholt wird, auf dem das Objekt sitzt. Wenn ich nun auf diesen Button (den ich erstellen will) drücke, soll als "händische"Nummer die aus dem REQUEST gesetzt werden. (damit ich nicht alle nummern eintragen muss, sondern nur gucken ob alles richtig ist und dann auf den Button drücken)
Aber ich hänge gerade an dem Button. Es muss doch soetwas sein, wie der "UI_BUTTON UI NEXT..."
AC25_win
11 ANTWORTEN 11
Anonymous
Nicht anwendbar
Es gibt keinen UI-Befehl für Buttons. Du mußt sie quasi selbst programmieren. Verwende eine Checkbox und lege ein Bild darüber. Die Checkbox im UI_INFIELD auf die Größe des Bildes aufziehen.

Im Parameterskript dann:

ich btn=1 then
btn=0
! hier die aktion einfügen
parameters btn=btn
endif
archiflow1
Newcomer
Danke Ove. Daran habe ich auch schon gedacht. Das Problem wird sein, dass ich die Raumnummer NUR beim ersten Setzen in den Grundriss übernehmen will. Wenn später das Objekt auf einen anderen Raumstempel gezogen wird, soll immer noch die "alte" (dann falsche) Nummer drinstehen.

hatte jetzt noch eine andere Idee um das Problem zu lösen:

Ich kann doch im 2D-Skript schreiben:

RAUMNUMMER_MAN = RAUMNUMMER_AUTOM(aus REQEST)

Dann haben alle Objekte schon mal die Raumnummer aus dem Raumstempel. So. Wenn alle Objekte gesetzt sind, dann verändere ich das Skipt so, dass die RAUMNUMMER_MAN nicht mehr automatisch gesetzt wird (sprich ich mach ein ! vor die Zeile)
Hab ich grad probiert. Ergebnis: wenn ich die Zeile inaktiv schalte (!), dann haut er im Grundriss auch wieder die alten Werte in die Objekte. Schade.

Wie kann ein Objekt bestimmte Werte speichern??? Ich habs mit Projektspeichern auch schon probiert: negativ.
AC25_win
Anonymous
Nicht anwendbar
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif"> Wie kann ein Objekt bestimmte Werte speichern??? Ich habs mit Projektspeichern auch schon probiert: negativ. Ein Objekt selber kann nichts speichern. Die grundeingestellten Parameter sind unveränderlich. Man kann aber mit dem TEXT oder DATA Addon bestimmte Werte in einer externen Datei dauerhaft speichern und später wieder auslesen; und noch später wieder überschreiben usw.
Vielleicht führt das zu einer Lösung.
Frank Beister
Moderator
Die Parameter sind nicht unveränderlich. Man kann sie mit dem Befehl PARAMETERS verändern. Allerdings muß man dazu im Einstellungsialog sein.

Schau mal, ob dir das weiterhilft: int. ArchiTalk
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
archiflow1
Newcomer
Jaja, die Begriffe...
Also ich habe Parameter im Objekt. ("RAUMNUMMER_MAN" und "RAUMNUMMER_AUTOM")

Der Wert des Parameters RAUMNUMMER_AUTOM kommt aus dem REQEQUEST

der Wert des Parameters RAUMNUMMER_MAN den muss ich in jedem Objekt im Plan händisch eingeben. Dies will ich allerdings verhindern, da es sich um 1800 Räume/Objekte handelt.
Also will ich den Wert der RAUMNUMMER_MAN einmalig! aus RAUMNUMMER_AUTOM übernehmen.

wenn dann der Wert für RAUMNUMMER_MAM gesetzt ist, soll er so bleiben, bis man ihn tatsächlich wieder im Objekt händisch unstelllt

mit PARAMETERS etc komm ich jetzt von selbst nicht weiter. in welches Skript muss ich den was reinschreiben, damit ich es dann danach auf Inaktiv setzen kann???
AC25_win
Anonymous
Nicht anwendbar
Mache mal folgendes:

1. Sicherungskopie von Stempel+Projekt!

2. Projekt schließen!

3. Objekt öffnen und den Parameter "RAUMNUMMER_MAN" aus der Liste löschen. Absichern. Ungeachtet, daß es ggf. Fehler hagelt.

4. Projekt öffnen und gleich wieder abspeichern. Nochmal Projekt schließen und wieder öffnen. (Kann sein, daß es nicht nochmal geschlossen und geöffnet werden muß, aber so ist es sicherer)

5. Objekt öffnen und "RAUMNUMMER_MAN" in Parameterliste einfügen. Standardwert=-123 eintragen. Erst DANACH sichern. Wichtig.

6. Nun im Masterskript einfügen:

RAUMNUMMER_AUTOM=REQUEST(...
IF RAUMNUMMER_MAN=-123 THEN
RAUMNUMMER_MAN=RAUMNUMMER_AUTOM
PARAMETERS RAUMNUMMER_MAN=RAUMNUMMER_MAN
ENDIF

Was passiert hier. In deinem Projekt sind bei jedem platzierten Stempel Werte für RAUMNUMMER_MAN hinterlegt. In den Schritten 1-4 entfernen wir zunächst den Parameter RAUMNUMMER_MAN aus dem Objekt und ArchiCAD (sollte) das beim Öffnen/Speichern des Projektes bemerken und alle diese Einträge löschen, weil sie nun nicht mehr gebraucht werden. Danach fügen wir den Parameter wieder ein, was beim absichern zur Folge hat, das AC bei allen platzierten Stempeln diesen Parameter wieder ergänzt. Und zwar mit den Standardwerten. Da du nun weißt, daß, immer wenn RAUMNUMMER_MAN=-123 kein Wert händisch geändert wurde, nimmst du den automatischen. Sobald du den Einstellungsdialog öffnest und das Parameterskript abgearbeitet wird, wird sofort mit PARAMETERS ... der Wert -123 mit dem REQUEST-Wert (so er da verfügbar ist) ersetzt.

Probier mal, ob das so geht. Vergesse Schritt 1 nicht und bedenke, daß das prinzipiell bei allen alten Projekten, die evt. RAUMNUMMER_MAN enthalten so wiederholt werden muß. AC ändert nur an offenen, nicht an geschlossen Projekten etwas. Logisch.

[ 26. Januar 2006, 12:29: Beitrag editiert von: Ove Bodj ]
archiflow1
Newcomer
Hallo Ove,
hab alles ganau so gemacht wie Du geschrieben hast. Nur im Masterskript musste ich die "-123" in Anführungsstriche setzen.

Leider hat es nicht geklappt wie ich das wollte.

Das Problem ist, dass wenn das Objekt auf einen anderen Raum ziehe (oder einen anderen Raum unter das Objekt lege) die Fehlermeldung kommen soll, dass hier etwas nicht stimmt (rote Raute im Grundriss).

Hat jemand kurz Zeit? Ich schicke gene mal ne PLA(600kB) durch. Ich denke es ist nicht so schwierig; die Problematik zu beschreiben ist glaub ich das aufwendigste...
AC25_win
Anonymous
Nicht anwendbar
Du wirst nicht drumrumkommen alle Räume einzeln zu öffnen und zu schließen. Du kannst in die Parameterlistentabelle im Projekt außerhab des Einstellungsdialoges AFAIK (und das ist einigermaßen "far") nichts setzen. Das ginge vielleicht von außerhalb mit AddOn oder SQL oder interaktiver Auswertung.

Was du aber machen kannst ist den Räumen z.B. einen roten Rand zu geben, wenn sie ihren Namen noch automatisch beziehen. Ist RAUMNUMMER_MAN nicht mehr "-123", dann ist er schwarz. Und blau, wenn der Raumname bereits festgesetzt wurde, aber nun in einem anderen Raum liegt. Deine gewünschte Warnung. Aer semiautomatisch.

Komme nicht in Versuchung alle zu aktivieren und in den Einstellungsdialog zu gehen. Dann bekommen wieder ALLE (!) den Namen des zuletzt aktivierten. Das Parameterskript wird nicht für alle aktivierten separat abgearbeitet, aber PARAMETERS wird auf alle angewandt.

Ich habe leider nicht die Zeit mir das noch intensiver anzusehen. Habe hier noch 2 andere Betatests auf Halde. 😉
archiflow1
Newcomer
Danke Ove.

ein Bild sagt vielleicht mehr als 1000 Worte:

<img src="http://www.krug-architekten.net/Forum/Zwischenablage02.gif" alt=" - " />

Übrigens: Wenn die Raumnummer händisch richtig eingetragen wurde, geht die Rote Raute weg. Das funktioniert schon.
AC25_win

Keine Antwort gefunden?

Andere Beiträge
im Board ansehen

Zurück zum Board

Neueste Lösungen durchsuchen

Akzeptierte Lösungen zeigen

Eine neue Diskussion starten!

Neues Thema erstellen