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.