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

ID-Nummer eines Raumes

graber
Advocate
Hallo,

Ich möchte aus dem Skript heraus, die ID-Nummer eines Raumes (room_ID ?) ändern.
Kann ich das, und wenn ja wie?

Danke
9 ANTWORTEN 9
Frank Beister
Advisor
Was ist bitte die ROOM_ID? Es gibt die GLOB_ID, GLOB_INTID und die ROOM_NUMBER? Keine von diesen kannst du einfach aus GDL heraus ändern.

Einzig für die ROOM_NUMBER kannst du probieren, dass der Wert beim nächsten Öffnen des Dialogfeldes zwingend automatisch, ansonsten vom Skript her geändert wird:

!Master Skript
neueID="Hallo"
VALUES "ROOM_NUMBER" neueID
ROOM_NUMBER=neueID

Das ändert aber ALLE Objekte in allen Projekten. Du solltest also einen Filter vorne dran bauen, der das nur für die Raumstempel zuläßt, die es auch betreffen soll. Es gibt da ein paar Tricks, wie man das managen kann, ist aber eine OP am offenen Herzen. 😉

Je nachdem was du vorhast würde ich das wohl eher von Hand machen. Die Gefahren sich alle Raumstempel zu zerschießen ist relativ groß.

[ 03. Juli 2007, 08:21: Beitrag editiert von: Frank Beister ]
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
graber
Advocate
Hallo,

ich wollte die Raumstempel-ID dermaßen ändern können, daß ich diese geschoßabhängig ersetze.
Wozu? - Um die Raumstempel im Regelgeschoß einsetzten zu können. Der Bauherr wünscht aber eine durchgehende Nummerierung. Da Hatte ich mir gedacht ich gebe im Raum vor Wenn Geschoß 0 dann soll die ID-Nummer 01 sein, wenn Geschoß 1 dann eben (z.B) 14 etc.

Aber das geht wohl nicht (?!)
Danke trotzdem.
Holger Kreienbrink
Graphisoft
Graphisoft
ID-Manager?
Holger Kreienbrink
Director Product Intelligence
Munich, Germany
Archicad since Version 5....
If I sound too harsh, please forgive me: I am German.
Frank Beister
Advisor
Kommt drauf an. Für Listenauswertung nicht. Sonst setze in die Raumnummer einen Platzhalter ein, der im Skript ausgewertet wird.

Das funktioniert nur wahrscheinlich nicht in Raumlisten, weil da höchstwahrscheinlich der Wert ohne Skriptdurchlauf ausgegeben wird. Das könnte man allerdings durch einen eigenen Component-Eintrag im Parameterskript umgehen. Dann wirds aber kompliziert.

suche="»platzhalter«"
ersetze="00."
pos=strstr(ROOM_NUMBER,suche)
if pos then
ROOM_NUMBER=strsub(ROOM_NUMBER,1,pos-1)+ersetze+strsub(ROOM_NUMBER,pos+strlen(suche),255)
endif
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
Frank Beister
Advisor
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Zitat:</font><hr /><font size="2" face="Verdana, Helvetica, sans-serif">ID-Manager?Wenn es ein Regelgeschoß ist, das x-fach eingelinkt wird, wohl eher nicht. 😞
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
graber
Advocate
Äh,

bitte was ist der ID-Manager, und wo finde ich den?
graber
Advocate
es geht eben um die listen.
sonst könnt ich ja anstatt der ID-Nummer eine eigene Top-Nummer als Variable einführen, und diese eben stattdessen anzeigen und auswerfen lassen.
Frank Beister
Advisor
Ich habe das alles schon lange nicht mehr und v.a. nicht mit der 11er probiert. Sonst kann vielleicht Jochen nochmal was dazu sagen.

Der Parameter ROOM_NUMBER wird mit der Instanz des Objektes im Plan/Projekt in der Gesamtdatenbank gespeichert. Ich weiß nicht wie die Listenauswertung genau funktioniert. Ich nehme aber mal an, dass AC diesen Wert direkt in die Liste überträgt.

Im Eigenschaftenbereich kann man aber Auswertungen für Listen berechnen und per Skript "an die Liste übertragen". Das geht mit den COMPONENT und Co-Befehlen. Z.B.
</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;"> ref component "010", planKEY, Wsurface !**** WandoberflächenDas sollte sich auch mit einer generierten (s.o.) Raumnummer erledigen lassen und statt der ROOM_NUMBER dann diese in der Liste auswerfen.

Ich habe mir so vor Urzeiten einen Raumstempel modifiziert, der besondere Flächenberechnungen und Einstellungen für die Raumlisten aufbereitet. Dann mußt du natürlich auch die Listen modifizieren.
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
den element-id-manager findest du unter
menü/dokumentation/auswertung-listen/element-id-manager

eventuell klappts ja damit, aber bevor du dir alle raumspempel zerschiesst, solltest du das zuerst in einer kopie deiner datei probieren!
wobei: eigentlich ändert der element-id-manager nur die element-id, und die ist nicht dasselbe wie die raumnummer. also wird's wahrscheinlich doch nix.

in dem fall würde ich es von hand machen. auch wenn der aufwand erheblich ist, weisst du so wenigstens, was dabei rauskommt...

:winken: