Fernsteuerung
DESITE MD/CUSTOM/SHARE wird über einen TCP Socket angesprochen und ferngesteuert. Die Kommunikation wird über XML Botschaften durchgeführt.
Nachrichten an DESITE senden:
Standardmäßig wird der Port 45456 für eingehende Nachrichten verwendet. Der Port kann beim Programmstart mit dem Schalter -srvPort [Portnummer] verändert werden. Ist der Port bereits belegt, wird die nächst höhere Portnummer versucht.
Nachrichten von DESITE empfangen:
Der Client-Port ist 45455 für Botschaften von DESITE an verbundene Programme. Rückgabewerte von Kommandos an DESITE werden von DESITE über diesen Port verschickt. Der Port kann beim Programmstart mit dem Schalter -cltPort [Portnummer] verändert werden.
Beim Start von DESITE SHARE wird in das Userverzeichnis C:\Users\user]\AppData\Local\ceapoint_aec_technologies\desiteSHARE2 eine Logdatei geschrieben, in der die verwendeten Ports eingetragen sind.
1. Kommandos
Dem Befehlsaufruf kann eine ID übergeben werden. Nach Durchführung des Befehls wird eine Statusinformation und eine textuelle Statusinformation mit dem ID zurückgegeben. Wird beim Aufruf keine ID übergeben, wird auch keine Antwort zurückgegeben.
- cmdID
Beispiel:
<cmdMessage cmdID="123ABC">
<![CDATA[
<font size="+2" color="#ffffff">Hello World!</font>
]]>
</cmdMessage>
Rückgabe:
<cmd cmdID="123ABC" status="1" statusMsg="ok" />
- cmdGetInstance
Gibt die Instanz-ID des Servers (DESITE MD, SHARE) zurück.
Beispiel:
<cmdGetInstance/>
Rückgabe:
<instance ID="123ABC"/>
2. Aufruf eines Skriptes
Dem Programm DESITE MD kann ein Skript zur Ausführung übergeben werden. DESITE MD wird mit JavaScript programmiert.
- cmdRunScript
Beispiel:
<cmdRunScript cmdID="123ABC"><![CDATA[
// Example Script
desiteAPI.zoomToSelected()
]]></cmdRunScript>
Rückgabe:
message [<cmd cmdID="123ABC" status="0" statusMsg="" />]
3. Fenstergeometrie
- cmdSetWinPosSize
Attributes: x, y, w, h
Beispiel:
<cmdSetWinPosSize x="10" y="20" w="900" h="600" />
- cmdGetWinPosSize
Beispiel:
<cmdGetWinPosSize/>
Rückgabe:
<winPosSize x="-4" y="-4" w="1280" h="998"/>
4. Nachricht
- cmdMessage
Die Nachricht kann mit HTML-Elementen formatiert werden. Die Nachricht, die in DESITE angezeigt werden soll wird in eine CDATA-Abschnitt definiert.
Beispiel:
<cmdMessage>
<![CDATA[
<font size="+2" color="#ffffff">Hello World!</font>
]]>
</cmdMessage>
5. Selektion
- cmdGetSelected
Beispiel:
<cmdGetSelected/>
- cmdSelectAll
Selektiert/deselektiert alle Elemente. cmdSelectAll v=„false" --> alle deselektieren
Beispiel:
<cmdSelectAll v="true"/>
<cmdSelectAll v="false"/>
- cmdSelect
Selektiert/deselektiert die Elemente, die in der ID-Liste enthalten sind. Die IDs werden durch ";" getrennt. Ist v="false" werden die Elemente deselektiert.
Beispiel:
<cmdSelect v="true">
Projektname::249d1d41-732b-42b7-b63c-664713800f26-0003b686;
Projektname::249d1d41-732b-42b7-b63c-664713800f26-0003b65a
</cmdSelect>
6. Signal
- selectionChanged
Wenn das Signal <selectionChanged/> aktiviert ist, sendet desite bei jeder Änderung der Selektion dieses Signal. Das Signal wir aktiviert/deaktiviert mit dem Befehl cmdEnableSelectionChanged. Standardmäßig ist das Signal deaktiviert.
Beispiel:
<cmdEnableSignalSelectionChanged v="1" />
7. Sichtbarkeit
- cmdGetVisible
Beispiel:
<cmdGetVisble cmdID="abc"/>
- cmdShowAll
Beispiel:
<!--Show all--> <cmdShowAll v="true"/>
<!--Hide all--> <cmdShowAll v="false"/>
- cmdShowSelectedOnly
- cmdHideSelected
8. Eigenschaften
- cmdGetPropertyValuesOfVisible
- cmdGetPropertyValuesOfSelected
Beispiel:
<cmdGetPropertyValuesOfSelected pName="cpiComponentType" pType="xs:string" />
- cmdGetPropertyValue
Beispiel:
<cmGetPropertyValue ID="ab45sx45a" pName="cpiComponentType" pType="xs:string" />
9. Ansichtspunkte/Kamera
- cmdZoomToSelected
- cmdZoomToVisible
- cmdHasElement
Prüft, ob bereits ein Objekt oder ein Container mit diesem ID vorhanden ist.
Beispiel:
<cmdHasElement ID="abcXYZ123"/>
10. Objekte erzeugen/entfernen
- cmdCreateObject
Neues Objekt aus XML-Beschreibung erzeugen. Wenn der ID bereits vorhanden ist, wird ein neuer ID erzeugt. Die Funktion gibt den ID des neuen Objekts zurück. „parentID“ ist der ID des Containers, dem das neue Objekt hinzugefügt werden soll. Das Material „matID“ muss im selben Modell vorhanden sein wie das neue Objekt.
<cmdCreateObject parentID="{85c92280-3637-493f-99be-509de6876e6c}-1ad" >
<object3D ID="ABCxyz123" name="object-2" matID="mat-abcxyz" >
<p x="21.0" y="1.0" z="41" />
<p x="25.0" y="2.0" z="41" />
<p x="24.0" y="3.0" z="41" />
<p x="22.0" y="2.5" z="41" />
<t p1="0" p2="1" p3="2" />
<t p1="2" p2="3" p3="0" />
</object3D>
</cmdCreateObject>
Im Falle eines Fehler wird der Fehlercode zurückgegeben.
- cmdDeleteObjects
Ein oder mehrere Objekte löschen. Die IDs der Objekte werden durch ein ";" getrennt.
<cmdDeleteObjects>
{85c92280-3637-493f-99be-509de6876e6c}-1ad;Projektname::249d1d41-732b-42b7-b63c-664713800f26-0003b65a
</cmdDeleteObjects>
11. Objekte verschieben
- cmdTransformObject
Objekte verschieben, skalieren und rotieren.
Beispiel:
<cmdTransformObject ID="abcXYZ">
<t>
<scale sx="1.0" sy="1.0" sz="1.0" />
<translate dx="10.0" dy="20.0" dz="30.0" />
<rotate x="2.0" y="1.0" z="2.0" m="0.5 0.5 0.0 0.5 0.0 0.5 0.0 0.0 1.0" />
</t>
</cmdTransformObject>
12. Material erzeugen/setzen
- cmdCreateMaterial
Erzeugen eines neuen Materials. sendet den ID des neuen Materials zurück. Das Material wird im Model "modelID" erzeugt. Wenn das Modell nicht vorhanden ist, wird das Standardmodel im Projekt verwendet.
Beispiel:
<cmdCreateMaterial modelID="abcXYZZ6r">
<material ID="default-mat-11" name="default-mat-11">
<diff r="140" b="40" g="150" a="1"/>
<amb r="140" b="40" g="150" a="1"/>
<spec r="255" b="255" g="255" a="1"/>
<trans v="0"/>
<shin v="0.5"/>
</material>
</cmdCreateMaterial>
- cmdSetMaterial
Setzen eines vorhandenen Materials für eine Liste von Objekten. Die 3D-Ansicht wird nach Setzen des Materials nicht automatisch aktualisiert.
<cmdSetMaterial cmdID="2" matID="2345xsea">
Projektname:249d1d41-732b-42b7-b63c-664713800f26-0003b686;
Projektname:249d1d41-732b-42b7-b63c-664713800f26-0003b65a
</cmdSetMaterial>
Rückgabe im status:
-1 : wenn Material nicht gefunden wurde
>= 0 : Anzahl der Objekte, für die das Material geändert wurde.
<cmd cmdID="2" status="2" statusMsg="2 objects affected" />
- cmdHasMaterial
Prüft, ob ein Material mit einem bestimmten Namen bereits vorhanden ist.
Gibt den ID des Materials zurück, wenn es vorhanden ist.
<cmdHasMaterial name="abc" />
Rückgabe:
<hasMaterial ="1" ID="abcxyz12321" />
Wenn nicht vorhanden:
<hasMaterial ="0" />
13. Projekt
- cmdGetProject
Holt Projektdaten wie ID des Projekts (Projektvariante) und Dateiname.
Beispiel:
<cmdGetProject/>
Rückgabe:
<project ID="zh7&hsbg%4e3" file="A:/TMP/xyz.pfs"/>
- cmdSaveProject
Speichern des aktuellen Projekts. Wenn noch kein Name vergeben wurde, muss der Benutzer im Dateidialog einen Namen festlegen.
- cmdSaveProjectAs
Projekt unter neuem namen oder zum ersten Mal speichern.
Beispiel:
<cmdSaveProjectAs cmdID="1">
D:\02-desiteMD-SupportProjects/abc2/abc.pfs
</cmdSaveProjectAs>
- cmdAddDocument
Dokument hinzufügen.
Attribute:
swap: Vertauschen von Coordinaten
scale: Skalierungsfaktor, mm = 0.001, m = 1.0
Beispiel:
<cmdAddDocument scale="0.001" swap="0 1 2">
C:/tmp/bsp.obj
</cmdAddDocument>
- cmdRemoveDocument
14. Modelle erzeugen
- cmdCreateModel
Neues Modell erzeugen
<cmdCreateModel name="Model-Name" />
Rückgabe: ID des neuen Modells und ID des RootContainers
<newModel ID="mid123" rcID="rfgs213" />
15. Datenbank
- cmdOpenDB
Standarddatenbank öffnen. Das Projekt muss vorhanden sein. Wenn das Projekt nicht vorhanden ist, muss zuerst gespeichert werden.
- cmdCloseDB
Standarddatenbank schliessen.
- cmdSetPropertyValue
Wert einer Eigenschaft schreiben.
Beispiel:
<cmdSetPropertyValue pName="Prop-A" pType="xs:string" pDomain="geometry" pValue="abc" >
Projektname::249d1d41-732b-42b7-b63c-664713800f26-0003b686;
Projektname::249d1d41-732b-42b7-b63c-664713800f26-0003b65a
</cmdSetPropertyValue>