Letzte Änderung: 2013-02-25

RemoteControl gCAD3D

Was ist RemoteControl PRINT(text) // Text im CAD-Ausgabefenster anzeigen ADD(code) // CAD-Objekte speichern und anzeigen ADDFILE(filNam) // CAD-Objekte aus Datei speichern und anzeigen MOD(code) // CAD-Objekte modifizieren, anzeigen NEW // das gesamte Modell löschen MODSIZ(newsize) // Modellgrößen ändern END // gesamtes Modell neu anzeigen GETSYMDIR(sym) // liefert den absoluten Pfad des Verzeichnisses SETSYMDIR(sym,path) // speichert neues symbolisches Verzeichnis DELSYMDIR(sym) // löscht symbolisches Verzeichnis LOAD(modelname) // löschen und neues Modell laden (native,step,iges,dxf ..) LOADSM(submodel) // Submodell laden (muss natives Modell (.gcad) sein) SAVE // Modell mit aktuellem Modellnamen speichern SAVE(new_modelname) // Modell mit anderem Modellnamen speichern ZOOMALL // Zoomfaktor automatisch VIEW(center, scale, rotAng, tiltAng) // Ansicht ändern SHOW(obj,off) // Object unsichtbar machen SHOW(obj) // Object sichtbar machen ATTL(linetypNr,objects) // Linientype ändern ATTS("code",objects) // Flächenattribute ändern (Farbe, Texture, Symbolisch) LOADTEX(texFilNam) // Texturdatei (Bild) laden ERRCLR // Fehlercode abfragen / löschen; 0=OK GETMODSIZ // aktuelle Modellgröße abfragen GETOBJINDNXT(P) // nächsten freien Objektindex abfragen GETLNR // aktuelle Zeilennummer abfragen DELFOLL(lnr) // alle Objekte ab Zeile löschen USER // Objekt von Anweder abfragen; Selektion / Abbruch (Esc.) DUMP(list) // Ausgabe einer List in das Konsolfenster MODE(widget,off|on) // Ein/Ausblenden von CAD-Fenstern; Browser, Menü, Toolbars .. __________________________________________________________________________

Was ist RemoteControl Mit RemoteControl kann gCAD3D programmgesteuert bedient werden. Es können alle Programmiersprachen benutzt werden; auch skript-shells. Es werden 2 Pipes (Linux; MS-Windows: Files) zur Ein- und Ausgabe benutzt. Die Eingabe und die Ausgabe erfolgt mit Textcodes, nicht binär. Linux: Die Eingabepipe ist ${HOME}/gCAD3D/tmp/CTRLpin die Ausgabepipe ist ${HOME}/gCAD3D/tmp/CTRLpout Windows: Eingabe über %APPDATA%\gCAD3D\tmp\CTRLpin Ausgabe nach %APPDATA%\gCAD3D\tmp\CTRLpout Mit einem normalen Terminalprogramm (Linux: xterm oder gnome-terminal; MS-Windows: cmd) können Kommandos an gcad geschickt werden (zB. aktives Modell löschen): Linux: echo 'new' > ~/gCAD3D/tmp/CTRLpin MS-Windows: echo new>"%APPDATA%\gCAD3D\tmp\CTRLpin" Eine Befehlsdatei (mehrere Befehle) schicken: - put the following 6 lines into file t1.dat: new add(P1=P(100 0 0)) add(C1=P1 50) #eof Datei schicken: Linux: cat t1.dat > ~/gCAD3D/tmp/CTRLpin MS_Windows: copy t1.dat "%APPDATA%\gCAD3D\tmp\CTRLpin" Empfang der Ausgaben von gcad (zB Anzeige der Ausgabe in einem Terminalfenster): Linux (Verbindung bleibt bestehen): cat ~/gCAD3D/tmp/CTRLpout MS-Windows (Datei wird nach jedem RemoteCommand neu erstellt): type %APPDATA%\gCAD3D\tmp\CTRLpout Gcad sendet nach jedem Kommando zumindest ein Neue-Zeile-Zeichen (newline, Ascii 10). Wenn das Programm über "Remote/ Select-Start" aktivierbar sein soll: Kopieren Sie das Start-script in Verzeichnis /remote/. Kopieren Sie das Executable in Verzeichnis . Programmierbeispiele: VB.Net (MS-Windows): Demo1gCadRemoteControl.zip Java (Linux): DemoRC1.java Alle folgenden angeführten Beispiele sind Linux-Beispiele. Bitte senden Sie verbesserte Programme oder Programme für andere Programmiersprachen an support at gcad3d.org __________________________________________________________________________

PRINT(text) // Text im CAD-Ausgabefenster anzeigen Objekte (Punkte, Vektoren, Variablen) werden dekodiert; die Werte werden angezeigt. Beispiel: echo 'print("TestPrint 1")' > ~/gCAD3D/tmp/CTRLpin # Anzeige der Koordinaten von Punkt P1 und Vektor D1: echo 'print("P1 = ",P1," D1 = ",D1)' > ~/gCAD3D/tmp/CTRLpin __________________________________________________________________________

GETLNR // aktuelle Zeilennummer abfragen DELFOLL(lnr) // alle Objekte ab Zeile löschen # die Zeilennummer von GETLNR kann später mit DELFOLL zum Löschen der # danach erzeugten Objekte benutzt werden. __________________________________________________________________________

GETOBJINDNXT(typ) // nächsten freien Objektindex abfragen # Beispiel: nächsten freien DB-index für Punkte abfragen: echo 'GETOBJINDNXT(P)' > ~/gCAD3D/tmp/CTRLpin # Siehe Liste Objekttypen __________________________________________________________________________ __________________________________________________________________________

ADD(code) // CAD-Objekte speichern und anzeigen # Code: ein gcad-ObjektText; siehe Codes # zB Punkt erzeugen mit: echo 'add(P1=P(100 0 20))' > ~/gCAD3D/tmp/CTRLpin __________________________________________________________________________

ADDFILE(filNam) // CAD-Objekte aus Datei speichern und anzeigen echo 'addfile("t1")' > ~/gCAD3D/tmp/CTRLpin Beispiel für Datei t1: MODE(MEN,off) MODE(BRW,off) MODE(BAR1,off) MODE(BAR2,off) new add(P1=P(100 0 0)) add(C1=P1 50) zoomall #eof __________________________________________________________________________

MOD(code) // CAD-Objekte modifizieren, anzeigen Beispiel: echo 'MOD(V1=70)' > ~/gCAD3D/tmp/CTRLpin # Ändern der Zeile "V1=50" im Code (siehe unten) und Update der Variablen V1 # und des Kreises C1. P1=P(100 100 0) V1=50 C1=P1 V1 __________________________________________________________________________

GETSYMDIR(sym) // liefert den absoluten Pfad des Verzeichnisses SETSYMDIR(sym,path) // speichert neues symbolisches Verzeichnis DELSYMDIR(sym) // löscht symbolisches Verzeichnis # Abfrage des (absoluten) Pfades des Symbols "Data" echo 'GETSYMDIR("Data")' > ~/gCAD3D/tmp/CTRLpin # Neues Symbol "myPath" auf Verzeichnis "/tmp/gcad/" setzen. echo 'SETSYMDIR("myPath","/tmp/gcad/")' > ~/gCAD3D/tmp/CTRLpin # Symbol "myPath" löschen: echo 'DELSYMDIR("myPath")' > ~/gCAD3D/tmp/CTRLpin # Fehler löschen: echo 'ERRCLR' > ~/gCAD3D/tmp/CTRLpin __________________________________________________________________________

LOAD(modelname) // löschen und neues Modell laden (native,step,iges,dxf ..) Modell laden; Dateiname kann symbolisch, relativ oder absolut sein. # Beispiel symbolischer Dateiname: echo 'load("Data/sample_area1.gcad")' > ~/gCAD3D/tmp/CTRLpin # Beispiel relativer Dateiname: (verwendet das aktuelle symbolische Verzeichnis): echo 'load("../dat/sample_area2.gcad")' > ~/gCAD3D/tmp/CTRLpin # Beispiel absoluter Dateiname: echo 'load("/tmp/test1.gcad")' > ~/gCAD3D/tmp/CTRLpin echo 'MODSIZ(10000)' > ~/gCAD3D/tmp/CTRLpin echo 'END' > ~/gCAD3D/tmp/CTRLpin

LOADSM(submodel) // Submodell laden (muss natives Modell (.gcad) sein) # Submodelle müssen in einem Verzeichnis mit Symbol liegen. # Siehe SETSYMDIR. # Beispiel Submodelle laden, positionieren: echo 'new' > ~/gCAD3D/tmp/CTRLpin echo 'loadsm("Data/sample_mod_blech1.gcad")' > ~/gCAD3D/tmp/CTRLpin echo 'loadsm("Data/sample_mod_screw1.gcad")' > ~/gCAD3D/tmp/CTRLpin echo 'loadsm("Data/sample_mod_nut1.gcad")' > ~/gCAD3D/tmp/CTRLpin echo 'add(M20="sample_mod_blech1" P(0 10 0))' > ~/gCAD3D/tmp/CTRLpin echo 'add(M21="sample_mod_screw1" P(30 36.5 67))' > ~/gCAD3D/tmp/CTRLpin echo 'add(M22="sample_mod_nut1" P(36 36.5 67))' > ~/gCAD3D/tmp/CTRLpin __________________________________________________________________________

SAVE // Modell mit aktuellem Modellnamen speichern SAVE(new_modelname) // Modell mit anderem Modellnamen speichern # Aktives Modell als "test1.gcad" im symbolischen Verzeichnis "Data" speichern. # Siehe SETSYMDIR. echo 'save("Data/test1.gcad")' > ~/gCAD3D/tmp/CTRLpin # speichern. echo 'save' > ~/gCAD3D/tmp/CTRLpin __________________________________________________________________________

VIEW(center, scale, rotAng, tiltAng) // Ansicht ändern # Ansichts-maßstab ändern: echo 'view(0.25)' > ~/gCAD3D/tmp/CTRLpin # Ansicht über Verdrehwinkel und Kippwinkel ändern (in Grad) echo 'view(ang(45) ang(30))' > ~/gCAD3D/tmp/CTRLpin # Ansicht verschieben (Bildschirmittelpunkt ändern): echo 'view(P(38 49 7))' > ~/gCAD3D/tmp/CTRLpin __________________________________________________________________________

SHOW(obj,off) // Object unsichtbar machen SHOW(obj) // Object sichtbar machen # Linie L21 unsichtbar machen echo 'show(L21,off)' > ~/gCAD3D/tmp/CTRLpin # Linie L21 sichtbar machen echo 'show(L21)' > ~/gCAD3D/tmp/CTRLpin __________________________________________________________________________

DUMP(list) // Ausgabe einer List in das Konsolfenster DUMP("GA") // Ausgabe der Liste der graf. Attribute DUMP("DL") // Ausgabe Display-Liste DUMP("AT") // Ausgabe Linietypentabelle DUMP("TX") // Ausgabe Texturen DUMP("SD") // Ausgabe aller symbolischen Verzeichnisse # Ausgabe der Liste der graf. Attribute echo 'DUMP("GA")' > ~/gCAD3D/tmp/CTRLpin __________________________________________________________________________

MODE(widget,off|on) // Ein/Ausblenden von CAD-Fenstern; Browser, Menü, Toolbars .. # Menü aus echo 'MODE(MEN,off)' > ~/gCAD3D/tmp/CTRLpin # Brwowser aus echo 'MODE(BRW,off)' > ~/gCAD3D/tmp/CTRLpin # Balken oben aus echo 'MODE(BAR1,off)' > ~/gCAD3D/tmp/CTRLpin # Nachrichtenfenster unten aus echo 'MODE(BAR2,off)' > ~/gCAD3D/tmp/CTRLpin # Nachrichtenfenster unten wieder Ein. echo 'MODE(BAR2,on)' > ~/gCAD3D/tmp/CTRLpin __________________________________________________________________________

ATTL(linetypNr,objects) // Linientype ändern # Linientypen 0 - 12 sind vordefiniert in Datei ~/gCAD3D/cfg/ltyp.rc # See Defaultsettings # Linientyp = 8 setzen für L21 und L22 echo 'ATTL(8,L21,L22)' > ~/gCAD3D/tmp/CTRLpin # Linientyp ändern/erzeugen (G = Farbe,Linientyp,Dicke) # Linientyp G13 erzeugen: grün, Volllinie, Dicke = 4 mit: echo 'add(G13=3,0,4))' > ~/gCAD3D/tmp/CTRLpin # Linientyp = 13 setzen für L21 and L22 echo 'ATTL(13,L21,L22)' > ~/gCAD3D/tmp/CTRLpin __________________________________________________________________________

ATTS("code",objects) // Flächenattribute ändern (Farbe, Textur, Symbolisch) Beispiel: # Typ der Fläche A21 auf Symbolisch ändern (nicht schattiert) echo 'ATTS("S" A21)' > ~/gCAD3D/tmp/CTRLpin # auf Standardfarbe zurücksetzen echo 'ATTS("C" A21)' > ~/gCAD3D/tmp/CTRLpin # Farbe grün setzen (Rot-Anteil-0, Grün-Anteil-255, Blau-Anteil-0) echo 'ATTS("C00ff00" A21)' > ~/gCAD3D/tmp/CTRLpin # Transparent setzen (T0=normal, T1=halb transparent, T2=voll transparent) echo 'ATTS("T2" A21)' > ~/gCAD3D/tmp/CTRLpin

# Textur laden und aktiv setzen. # Texturen müssen in einem Verzeichnis mit Symbol liegen. echo 'LOADTEX("DIR_BMP/Ziegel1.bmp")' > ~/gCAD3D/tmp/CTRLpin # Texture auf Fläche A21 aufbringen; hor./vert. Maßstab auf "0.5,0.5". # ATTS("X,,",Objekte) // aktive Textur aufbringen echo 'ATTS("X0.5,0.5" A21)' > ~/gCAD3D/tmp/CTRLpin __________________________________________________________________________

USER // Objekt von Anweder abfragen; Selektion / Abbruch (Esc.) # vom Anwender ein Objekt auswählen lassen echo 'USER' > ~/gCAD3D/tmp/CTRLpin # liefert "SEL(P(-3.244327 -10.077265 0.000000))" bei Positionsanzeige # liefert "SEL(C16)" bei Auswahl von Objekt C16 # liefert "SEL()" bei Escape-Taste gedrückt