Applications sind Scriptprogramme (direkt ausführbar).Funktionen Menü Applications:
Applications/Start Auswahl und Start des aktiven Programmes. Auswahl eines Programms: Verzeichnis: {baseDir}/prg Dateityp: .gcap Das zuletzt ausgefuehrte Programm kann mit Ctrl-P direkt gestartt werden. Jedes Programm erhaelt automatisch ein Eingabefenster; jedes Eingabefenster erhaelt automatisch 3 Buttons: einen Update-, einen Cancel- und einen OK-Button. Update-Button: (auch Rechte-Maustaste): das Programm wird abgearbeitet, aber nicht gespeichert. Cancel-Button: Programm abbrechen. OK-Button: (auch Ctrl-Rechte-Maustaste): Programm abarbeiten, alle nicht-internen Objekte an das Hauptprogramm uebergeben. Applications/Edit Startet einen Texteditor fuer das aktive Programm. Weiter siehe "Allgemeine Programmstruktur" Applications/Create Ein neues Programm erzeugen. Verzeichnis/Dateiname der Programmfiles: {baseDir}/prg/{Programmname}.gcap Das Programm-Verzeichnis kann dzt nur in Datei "{baseDir}/tmp/xa.rc" gesetzt / verändert werden. Applications/Create Ein neues Programm erzeugen. Verzeichnis/Dateiname der Programmfiles: {baseDir}/prg/{Programmname}.gcap Das Programm-Verzeichnis kann dzt nur in Datei "{baseDir}/tmp/xa.rc" gesetzt / verändert werden. ____________________________________________________________________________ Vorgangsweise neues Programm erzeugen / testen: Ein leeres Programm erzeugen (Create Application); Programmcode einfuegen (zB Beispielcode); speichern (KEDit: Ctrl-S); Programm starten (mit Ctrl-P); Cancel od OK. ____________________________________________________________________________ Allgemeine Programmstruktur: # Block Declarationen INTERN .. # Siehe INTERN. DLG .. # Mit den DLG-Codes (Dialog) koennen Eingabefelder in das Eingabefenster # gesetzte werden. Siehe Definition Eingabefenster. # Block DLG-Variablen initialisieren # Alle in Eingabefeldern ("DLG ..") verwendete Variablen muessen # hier deklariert werden. # Damit werden auch die Startwerte der Eingabefelder vorgegeben. .. # Block ProgramCode .. ____________________________________________________________________________ Programmcodes: Kommentar Das Zeichen # als erstes Zeichen einer Zeile definiert eine Kommentarzeile. Zeilen mit # am Beginn existieren nur im Programm (.gcap); Zeilen mit ## am Beginn werden in das Hauptprogramm (.gcad) kopiert. # comment with one # exists only in program; # comment with two ## is copied -> Model Testausgaben von Texten / Variableninhalten: # (nur zu Testzwecken im Meldungsfenster) PRI "Text" PRI "Punkt1 =" p1 PRI "Var 1 =" v1 Verzweigen, unbedingter Sprungbefehl. JUMP Labelname .. :Labelname # Das Sprungziel. Achtung: muss auch betreffend # Gross / Kleinschreibung völlig ident sein. Bedingte Verzweigung mit if if Wert Bedingung Wert ; Befehl Es gibt folgende Bedingungen: eq gleich, ne nicht gleich, lt kleiner, gt groesser, l_e kleiner oder gleich, g_e groesser oder gleich. # Beispiel V20=10 :Next PRI "Var 20 =",V20 V20=V20+10 IF V20 LT 55 ; JUMP Next V{#}=NEW({objTyp},{startIndex}) Liefert die naechste freie Objektnummer objTyp: P (Punkt) L (Linie) C (Kreis) D (Vektor) S (Kurve) A (Flaeche) Beispiel: V1=NEW(P,20) # Liefert die erste freie Punktnummer ab Index 20 nach Variable-1. # Anwendung siehe Auswertungsfunktion (Spitze Klammern) Auswertungsfunktion (Spitze Klammern) Ein zwischen spitzen Klammern befindlicher Ausdruck wird durch sein Ergebnis ersetzt. Das Ergebnis muss ein Zahlenwert sein. Beispiele: V1=10 V2=20 P<V1>=P(<V2> 0 0) ergibt: P10=P(20 0 0) P11=P(<X(P10)+1> 0 0) ergibt: P11=P(21 0 0) (Funktion X(P10) extrahiert die X-Koordinate aus Punkt P10). D10=DZ D11=D(0 0 <Z(D10)>) ergibt: D11=P(0 0 1) (Funktion Z(D10) extrahiert die Z-Koordinate aus Vektor D10). DEBUG ON¦OFF ON: Anzeige von Testausgaben; weiter zur naechsten Programmzeile muss mit der Esc-Taste. EXIT Beendet das Programm. INTERN {Bereich ..} Definition von Variablen, die nur fuer programminterne Berechnungen benoetigt werden und bei OK nicht in das Hauptmodell exportiert werden sollen. INTERN muss im ersten Programmteil (Declarations) stehen. Beispiel: INTERN P1-P20 P50 V1-V20 V33 L1-L3 # Alle Punkte von P1 bis P20 sowie Punkt P50 (usw..) # werden nur intern benutzt; keine Ausgabe in das Hauptmodell. ____________________________________________________________________________ Definition Eingabefenster: # Anzeige Zusatzinformationen: DLG TXT "{InfoText}" # Input von Zahlenwerten in numer. Variablen V: DLG V{#} "{InfoText}" {Feldbreite} # Infotext wird neben dem Eingabefenster angezeigt. # Input von Punkten in Punktvariablen P: DLG P{#} "{InfoText}" {Feldbreite} # Input von Vektoren in Vektorvariablen D: DLG D{#} "{InfoText}" {Feldbreite} # Auswahl Checkbox DLG CKB V{#} "{InfoText}" # Checkboxen, die sich gegenseitig ausschliessen, # erhalten die gleiche Ausgabevariable. Beispiele: DLG TXT Test EingabeFenster DLG V1 "Length - " 150 DLG P1 "Position " 150 DLG CKB V7 "Point" DLG CKB V7 "Circ" # V7 enthaelt 1 wenn "Point" aktiv ist # 2 wenn "Circ" aktiv ist. ____________________________________________________________________________ Tastenzuordnung: Ctrl P startet zuletzt ausgefuehrtes Programm; Esc: go into previous Eingabefeld; waehrend Programmablauf: den Ablauf stoppen. im Debugmode: weiter mit naechster Programmzeile. Tab: naechstes Eingabefeld. Rechte-Maustaste: loest Update aus; Ctrl-Rechte-Maustaste: loest OK aus; ____________________________________________________________________________ Beispielprogramme: #------------------ Declarations----------------- # do not export V1,V2 (internal use only) INTERN V1-2 DLG TXT Test CheckBox DLG V1 "X-Coord - " 60 DLG CKB V2 "Point" DLG CKB V2 "Circ" #------------------ Init Variables -------------- V1=10 # preSet 1="Point", 2="Circ" V2=1 #------------------ ProgramCode ----------------- if V2 eq 2; jump L_Circ P1=P(<V1> 0 0) PRI "V2=" V2 EXIT :L_Circ C1=P(<V1> 0 0) 2 # ____________________________________________________________________________ ## create single chain of points #------------------ Declarations----------------- # do not export the following variables with OK: INTERN P1 V1-10 D1 # put textlines into the panel DLG TXT Create linear point-pattern. DLG TXT Select or indicate Startpoint; DLG TXT Give offset (X-offset,y-offset,z-offset) DLG TXT Define nr of points; DLG TXT Update: Button or right mousebutton DLG TXT in the mainWindow; DLG TXT OK: button or Crtl-Right mousebutton. # get Startpoint from user into P1; # inputfieldsize 150 DLG P1 " Startpoint " 150 # get pointoffset from user # Offset must be a Vektor (3 values !) DLG D1 " OffsetVec." 150 # get nr of points from user DLG V1 " nr of points" 150 #-------- init all dialog-variables---------- P1=P(0 0 0) D1=D(10 0 0) V1=3 #----------programCode --------- #DEBUG ON # get a new pointindex for the outputpoints # beginning with index 5 (preserve P1) V2=NEW(P,5) # init pointCounter V3=0 # decode the startpoint V4=X(P1) V5=Y(P1) V6=Z(P1) # decode the offsetVector V7=X(D1) V8=Y(D1) V9=Z(D1) :Next # incr counter V3=V3+1 # add offset V4=V4+V7 V5=V5+V8 V6=V6+V9 # create point with next index v2 P<V2>=P(<V4> <V5> <V6>) # increment pointindex V2=V2+1 if V3 lt V1 ; jump Next # ____________________________________________________________________________ Senden sie Fehlerberichte, Verbesserungsvorschlaege an franz.reiter@cadcam.co.at