Letzte Änderung: 2013-02-25

RemoteControl gCAD3D

Was ist RemoteControl PRI(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 aktive Modell speichern (wenn modifiziert), dann löschen CLEAR // das aktive Modell löschen ohne speichern 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 .. WAIT_ESC // stop bis ESC - Taste gedrückt wird SYSTEM // System-Kommando ausführen; warten; zB: "SYSTEM(pluma /tmp/t1)" EXIT // shut down gcad3d __________________________________________________________________________

Was ist RemoteControl RemoteControl hat 3 Betriebsarten: - External-control - cad-operationen von einm Terminal oder Process ausführen (remote) - StartRemote - ein RemoteControlScript bei Programmstart ausführen - Internal-control - ein RemoteControlScript mit Menüpunkt Remote starten External-control: 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 Ein- Ausgabepipes werden im Verzeichnis {tmpdir} angelegt. Das temp-Verzeichnis von gcad wird zu Programmbeginn im Konsolfenster ausgegeben (zB Unix " basdir = |/mnt/serv2/devel/gcad3d/|") bei einer Standardinstallation sind dies: 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 Es kann eine Systemvariable gesetzt werden - Unix "RCTL=/mnt/serv2/devel/gcad3d/CTRLpin" Damit können nun Commands an $RCTL gesendet werden. MS-Win: set RCTL="%APPDATA%\gCAD3D\tmp\CTRLpin" Damit können nun Commands an %RCTL% gesendet werden. Die Eingabe und die Ausgabe erfolgt mit Textcodes, nicht binär. 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 oder echo 'new' > $RCTL MS-Windows: echo new>"%APPDATA%\gCAD3D\tmp\CTRLpin" oder echo new>%RCTL% 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 StartRemote RemoteControlScripts bei Programmstart ausführen mit: gcad3d rcmd {remoteControlFilename}.cmd zB: gcad3d mode_cad rcmd ~/gCAD3D/prg/sample_cmd1.cmd Beispiel: siehe Datei Data/prg/sample_cmd1.cmd (Siehe Pfad für Verzeichnis "Data" mit Menü Standards/edit directory-path-group) Internal-control: Starten eines RemoteControlScript mit Menü Remote/Select .. __________________________________________________________________________

PRI(text) // Text im CAD-Ausgabefenster anzeigen Objekte (Punkte, Vektoren, Variablen) werden dekodiert; die Werte werden angezeigt. Beispiel: echo 'pri("TestPrint 1")' > ~/gCAD3D/tmp/CTRLpin # Anzeige der Koordinaten von Punkt P1 und Vektor D1: echo 'pri("P20 = ",P20," D20 = ",D20)' > ~/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")' > $RCTL echo 'loadsm("Data/sample_mod_screw1.gcad")' > $RCTL echo 'loadsm("Data/sample_mod_nut1.gcad")' > $RCTL echo 'add(M20="Data/sample_mod_blech1.gcad" P(0 10 0))' > $RCTL echo 'add(M21="Data/sample_mod_screw1.gcad" P(30 36.5 67))' > $RCTL echo 'add(M22="Data/sample_mod_nut1.gcad" P(36 36.5 67))' > $RCTL oder eine Datei test.cmd erzeugen mit: new loadsm("Data/sample_mod_blech1.gcad") loadsm("Data/sample_mod_screw1.gcad") loadsm("Data/sample_mod_nut1.gcad") add(M20="Data/sample_mod_blech1.gcad" P(0 10 0)) add(M21="Data/sample_mod_screw1.gcad" P(30 36.5 67)) add(M22="Data/sample_mod_nut1.gcad" P(36 36.5 67)) # eof ausführen mit - Unix: cat test.cmd > $RCTL MS-Win: copy test.cmd %RCTL% __________________________________________________________________________

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() # Ausgabe der geom. Struktur eines Datenbank-objekts 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 Beispiele: echo 'DUMP(C20)' > ~/gCAD3D/tmp/CTRLpin 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_{os}/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 Anwender 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