Hallo zusammen,
Ich habe mal wieder CDC angeschaut und festgestellt, dass man das Programm auch als Server laufen lassen kann. Damit sind ein paar nette Möglichkeiten verbunden. Zum Beispiel kann CDC nicht mehrere Karten auf ein Papier drucken.
Mit ein paar Zeilen Python kann man sich einfach eine Webpage generierien, welche mehrere Charts plus etwas Infos zeigt und diese dann ausdrucken.
Um das Beispiel laufen zu lassen braucht es Python und CDC 3. CDC starten, den Beispielcode in ein File schreiben und mit python starten. Um M 27 zu sehen:
python cdcclient M 27
In CDC werden zwei neue Karten generiert. Diese können beliebig geändert werden (z.B. Rotieren der Darstellung, andere Farben, mher Sterne etc.)
Alle weiteren Aufrufe benutzen die entsprechende Darstellung. Wichtig ist nur dass die Karten verknüpft sind (Fenster > Alle Karten verknüpfen).
Hier ein schnell geschriebenes Beispiel ohne Fehlerhandling etc.
import socket, time, os, sys, re
HOST = "127.0.0.1"
PORT = 3292
class CdcClient:
"""
A class to communicate with Cdc
"""
def __init__(self, host, port):
self.host = host
self.port = port
def connectCDC(self):
self.handle = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.handle.connect((self.host, self.port))
def sendCmd(self, cmd, timeout=0.0):
self.handle.send(cmd+'\r\n')
time.sleep(timeout)
return self.handle.recv(1024)
def close(self):
self.handle.close()
def printHtmlPage(self, search):
searchName = search.replace(' ','_')
htmlFile = open('%s.html' % searchName, 'w')
result = self.sendCmd("selectchart details")
if result.startswith('Not found'):
self.sendCmd('newchart details')
self.sendCmd("selectchart details")
self.sendCmd("setfov 3.0")
self.sendCmd("resize 400 300")
self.sendCmd("setproj EQUAT",1)
self.sendCmd('search "%s"' % search,1)
result = self.sendCmd('getmsgbox')
resultText = re.sub(r' ([a-zA-Z]*:)', '<br/>\\1', result[3:])
self.sendCmd('saveimg png %s' % os.path.join(os.getcwd(),
'%s_1.png' % searchName))
result = self.sendCmd("selectchart overview")
if result.startswith('Not found'):
self.sendCmd('newchart overview')
self.sendCmd("selectchart overview")
self.sendCmd("setfov 70.0")
self.sendCmd("resize 400 300")
self.sendCmd('saveimg png %s' % os.path.join(os.getcwd(),
'%s_2.png' % searchName))
time.sleep(1)
htmlString ='''
<html>
<body>
<table>
<tr><th colspan="2">%s</th></tr>
<tr><td colspan="2">%s</td></tr>
<tr>
<td><img src=%s_1.png></img></td>
<td><img src=%s_2.png></img></td>
</tr>
</table>
</body>
</html>
''' % (search, resultText, searchName, searchName)
htmlFile.write(htmlString)
htmlFile.close()
if __name__ == "__main__":
search = ' '.join(sys.argv[1:])
client = CdcClient(HOST, PORT)
client.connectCDC()
client.printHtmlPage(search)
client.close()
os.system('%s.html' % search.replace(' ','_'))
Alles anzeigen
Die Liste der Befehle sind übrigens hier zu finden: http://www.ap-i.net/skychart/e…mentation/server_commands
Viel Spass
Benny