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

Zu viele Paramter...

harryseidl
Newcomer
Hallo!

Ich habe ziemlich viele selber "gebaute" Objekte (Traversen). Jetzt aufeinmal scheint im 3D-Skript plötzlich die Fehlermeldung "zu viele Parameter" auf (bei "call" Befehlen)! Das Lustige daran ist, lösche ich den letzten Parameter weg, passt es wieder! Ein "call" Befehl hat 12 Parameter - hier muß ich 11 daraus machen, ein anderer wiederum hat 15, dann muß ich 14 daraus machen? Was kann hier das Problem sein? Gibt es bei den "call" Befehlen Einschränkungen?

Bitte um Hilfe!

LG, Harry
ArchiCad 15.0, Cinema 4D Studio R12, Windows Vista 64bit
12 ANTWORTEN 12
harryseidl
Newcomer
Hi zzyzx!

Hast du diese Zeilen in ein neues GSM-Objekt eingefügt - dann geht es - ohne Fehler. Speichere dies z. B. als "Musterzylinder" ab. Plaziere ein paar dieser Zylinder und speichere diese dann als eigenes neues Objekt ab und überprüfe dann das 3D-Skript - dann bringt er bei mir die Fehlermeldung (bei dem "Call-Befehl")!

Was bedeutet "Subtype" eigentlich - bzw. was meinst du damit? Kann ich die selber erstellen?

LG, Harry

[ 18. April 2007, 20:26: Beitrag editiert von: HarryS ]
ArchiCad 15.0, Cinema 4D Studio R12, Windows Vista 64bit
Frank Beister
Moderator
Moin Harry,

das mit den Fehlermeldungen solltest du nicht immer so genau nehmen. Manchmal stimmen die Zeilenverweise nicht oder gar die Meldung an sich ist falsch. Ich vermute, dass dein ATN oder die Division darin die Probleme verursachen. Fange mal die möglichen Fehlerquellen ab, denn der Tangens hat Fehlstellen bei 90°+n*180°, was sich auf den ATN auch auswirken kann. In jedem Fall darf A nie 0 werden. Das vielleicht mal abfangen. Auch SQR mag das Argument 0 nicht.

Eine Möglichkeit ist folgende, führt aber etwas weit:

Globale Parameter werden zu Beginn jeden Skriptdurchlaufes auf ihre Übergabewerte gesetzt, lokale Variablen auf 0. Aber nur letzteres gilt für einen Makroaufruf. Die Globalen behalten den Wert, den sie im übergeordneten Skript unmittelbar vor dem CALL haben. Beispiel:

! Makro "linie.gsm" oder "linie.gdl":
PEN SYMB_VIEW_PEN
LINE2 0,0,2,0


!Hauptobjekt "test.gsm"
PEN SYMB_VIEW_PEN
LINE2 0,0,2,0

ADD2 0,1
CALL "linie"

SYMB_VIEW_PEN=2
ADD2 0,1
CALL "linie"

Ich habe gerade keine Lust es zu testen, aber es sollte so funktionieren:

Im Hauptobjekt wird zunächst eine Linie mit dem eingestellten Symbolstift gezeichnet. Die 2., nun bereits im Makro gezeichnet hat ebenfalls diesen Stift. Die 3. aber, ist immer mit Stift 2 gezeichnet, weil der Wert des Symbolstifts vor dem Makroaufruf geändert wird.

Was will ich damit sagen: ZZYZX und A könnten als optionale Parameter wie globale Parameter behandelt sein und werden vor dem CALL auf einen unpassenden Wert gesetzt. -> Das Skript mit den ganzen Makroaufrufen mal prüfen, was da drin steht oder posten. Sonst maile mir die 2 Objekte mal, bei denen es bei dir knallt.

Subtypen legen einen Objekttyp fest. Neben den mitgelieferten Typen wie Fenster, Raumstempel etc. kann man auch eigene erzeugen, indem man ein Objekt mit dem Schalter "Vorlage" sichert. Die Subtype-Zugehörigkeit kann man auch abfragen: ANCESTRY_INFO
Seit AC 8 ersetzt dieses flexible System die alte Zuordnung durch die Dateiendungen (GSM,LBL,WIN,DOR,RSM,ISM,LMP...)

Noch eine letzte Idee: Was sagen denn die Zauberstabeinstellungen? Manchmal kommt es durch zu grobe Einstellungen in den Objekten zu Fehlermeldungen, weil sich dann überschneidende Körperoberflächen ergeben können. Tritt allerdings eher bei komplexeren Körpern auf.
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
harryseidl
Newcomer
Hallo Frank!

Vorerst mal vielen Dank für deinen profesionellen Beitrag - wow!

Das Lustige an dem Ganzen ist ja, das die Zeile alleine im 3D-Skript keine Fehlermeldungen ausweist - nur wenn dieses Objekt mit dem call Befehl aufgerufen wird, kommmt dieser! Naja, wie du schon richtig gesagt hast, vielleicht soll man nicht alles ergründen - solange es funktioniert - und das tut es!

Vielen Dank, Harry
ArchiCad 15.0, Cinema 4D Studio R12, Windows Vista 64bit