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

Parameterübernahme auch ohne Auswahl des Objekts.

graber
Advocate
Hallo,

Zwecks Listenauswurfs habe ich meinen Raumstempel etwas erweitert, und Parameter für die jeweilige Flächennutzung hinzugefügt (also z.B. Bürofläche, Freifläche, Wohnfläche...) die mir nun im Master Skript zugewiesen werden z.B.
 If kat_code="FrF" then parameters FrF=raumfl else parameters FrF=0


Habe nun jedoch folgende Probleme:
1.) Diese Zuweisung funktioniert nicht, wenn das einzelne Objekt nicht einzeln ausgwählt wird. Also z.B. wenn ich eine Fläche mit der Axt teile.
2:) Zudem bekomme ich falsche Zuweisungen, wenn ich mehr als eine Fläche auswähle und bearbeite (da ist dann plötzlich der Wert der zuletzt ausgewählten auch in den anderen markierten?)

Wie kann ich diese Probleme lösen?
Danke im Voraus
13 ANTWORTEN 13
zzyzx
Newcomer
zum ersten punkt:

das parameterskript muss irgendwie durchlaufen werden. einstellungen des objekts/raumstempels öffnen sollte es anwerfen, aber wenn du nur im info fenster was änderst, kann es sein, dass das skript dann nicht durch läuft.
ein versuch wert wäre es, die zeile vom parameterskript ins master skript zu werfen


zum zweiten punkt:

wenn du mehrere objekte auswählst und dabei einen parameter änderst, dann wird dieser bei allen ausgewählten objekten geändert.
so wie du es beschreibst, sieht es für mich so aus, als würde der effekt auch eintreten, wenn euin parameter vom skript aus geändert wird (if... then parameters...)

müsste man vielleicht mal ein einfaches testobjekt basteln, um das zu verifizieren...
graber
Advocate
zu 1: eigentlich sind die zeilen im master-skript, soll ich's zusätzlich auch ins parameter skript legen ? (müßte meiner meinung nach aber noch weniger auswirkung haben.) Habs auch schon im 2d-Skript probiert, aber leider auch ohne Erfolg. (Eigentlich müßte das Skript ja auch durchlaufen werden, wenn ich die Raumfläche z.B. teile, weil ich ja schlußendlich auch 2 raumstempel gesetzt bekomme, aber leider ...)

zu 2: so sieht es tatsächlich aus (das testobjekt ist wohl bereits mein Raumstempel, oder kanns sonst woran liegen?). Auch eine zusätzliche Beschränkung über den value-Befehl wird dabei ignoriert.

zudem 3. Noch ein Phänomen: Wenn ich die Räume über den Befehl "Raumfläche aktualisieren" aktualisiere, setzt mir ArchiCad die Parameter wieder auf 0!

Irgendwelche Ideen?
zzyzx
Newcomer
die parameterzuweisung per skript ist eine kniffelige sache, ich geb zu, dass ich da auch nicht immer 100% durchsteige, v.a. bei der fehlersuche.
der parameters befehl hat nur auswirkungen im masterskript oder im parameterskript. in den 2d und 3d skripten bewirkt der befehl nix, nichtmal eine fehlermeldung 😉
der ordnung und übersicht halber würde ich solche sachen ins parameterskript tippen, aber bei problemen eben auch mal im masterskriopt testen.

nochmal ein paar ansätze:
A) hat dein parameter FrF Textinhalt oder ist es eine checkbox? das muss auf jeden fall klar definiert sein (hast du wahrscheinlich schon geprüft)
wenns z.B. ein textinhalt ist, und raumfl auch textinhalt hat, sollte deine Zeile so lauten:
If kat_code="FrF" then parameters FrF=raumfl else parameters FrF=""


B) probier mal, ob folgende änderung 'was bringt:
If kat_code="FrF" then 
FrF=raumfl
else
FrF=""
endif
parameters FrF = FrF
graber
Advocate
FrF ist eine natürliche Zahl (muß sie auch sein, denn ich will diese ja in den Listen addieren können) - wie raumfl auch.

ich werde deine Vorschläge mal testen, obwohl:
prinzipiell funktionierts ja: Wenn ich die Fläche öffne/bearbeite, wird mir der Wert ja brav zugewiesen,.
graber
Advocate
Leider haben deine Lösungsvorschläge noch keinen Erfolg gebracht, hab es auch mit dem direkten Weg statt raumfl mit ROOM_AREA probiert.
graber
Advocate
Noch was:
im Master-Skript:
frf=ROOM_AREA
If kat_code="FrF" then parameters frf=ROOM_AREA else parameters frf=0

oder auch
frf=ROOM_AREA
If kat_code="FrF" then parameters frf=frf else parameters frf=0


Führt interessanterweise dazu, daß zwar frf im Grundriß (über 2d-Skript dann korrekt ausgeworfen werden kann
text2 0,0,frf
) aber in der interaktiven Liste dennoch nicht(!) korrekt ist.

Beispiel dazu: Eine Fläche mit 20m² wird per Axt geteilt (5m² und 15m²). Im Grundriß wird frf mit 5 bzw. 15 angezeigt, in den Listen zeigt mir frf beide Räume mit 20m² an.
Es kommt also zu keiner neuen Zuweisung der Parameter, obwohl (!) das Skript ja offenbar durchlaufen wird.
graber
Advocate
Noch irgendeine Lösungsidee?
zzyzx
Newcomer
... leider nein.

der haken ist offenbar, dass das masterskript im 2d-kontext abläuft, wenn du den raumstempel im grundriss in 2 stücke teilst, und damit eben keine änderung der parameterliste auslöst. willst du objekte und raumstempeln in listen auswerten, dann wird nur die parameterliste betrachtet, ohne dass dabei ein skript durchlaufen muss. möglicherweise läuft auch die aktualisierung der raumstempel im 2d-kontext ab; dein problem deutet jedenfalls drauf hin.

vielleicht meldet sich ja frank oder jochen noch?
Anonymous
Nicht anwendbar
Ich hatte neulich das Problem mit AC 14, dass GLOB_ELEVATION beim Ändern der Höhe im Objekt den 2D-Text einer Bestellnummer im Grundriss ändert, aber nicht den Text in der Auswertung.
Ändere ich die Höhe in der Infobox, wirds komischerweise in der Liste aktualisiert.
Ändere ich die Höhe in der Auswertung, wird dort die Bestellnummer wieder nicht aktualisiert.

Ich habe das bei Graphisoft als Bug gemeldet, da das Problem beim Testen In ArchiCAD 12 nicht auftrat.

Probier Dein Script auch mal in AC 12, vielleicht gehts da auch....

Lies Dir mal Franks Beitrag in selfGDL durch:
http://www.selfgdl.de/6_non_geo/paramet ... endium.php
Der ist sehr aufschlussreich.

Ansonsten ist es so, wie zzyzx schreibt, dass der PARAMETERS-Befehl nicht in jedem Kontext zu dem gewünschten Ergebnis führt und dass häufig Globale Variablen in Zusammenhang mit PARAMETERS ihre Macken haben.

Ich habe mir übrigens angewöhnt, bei einem PARAMETERS-Befehl immer gleichzeitig die Variable und den Parameter zu setzen, da im selben Script der PARAMETERS-Befehl alleine nicht immer die Variable ändert, so dass diese dann bei späterer Nutzung noch den alten Wert behält:
Beispiel:
XY = ROOM_AREA (XY ist Variable)
PARAMETERS XY = XY (oder PARAMETERS XY = ROOM_AREA) (XY ist Parameter)