| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Datei-download mit Lisp (1728 mal gelesen)
|
Vino Mitglied
Beiträge: 207 Registriert: 24.05.2005 Windows 10 BricsCAD V20-22
|
erstellt am: 03. Mrz. 2015 10:37 <-- editieren / zitieren --> Unities abgeben:
Hallo, kann man mit Lisp Dateien aus dem Internet (via http) auf die Festplatte laden? Was ich machen will: Ein kleines Programm, das nach auswahl eines WMS-Dienstes und der abzudeckenden Fläche die entsprechenden Bild-Kacheln herunter lädt, umbenennt, und in der Zeichnung richtig positioniert. Z.B. kann man über: www.geodaten.bayern.de/ogc/ogc_dop200_oa.cgi?REQUEST=GetMap&SERVICE=WMS&format=image/jpg&layers=adv_dop200c&srs=EPSG:31468&CRS=EPSG:31468&height=2000&width=2000&BBOX=4465500,537850 0,4466000,5379000 ein Orthofoto von der bayerischen Vermessungsverwaltung herunter laden. Die Position und Größe des Bildausschnitts sind durch die Parameter WIDTH, HEIGHT und BBOX definiert. Diese müsste das Lisp-Programm automatisch berechnen und anpassen. Diese Datei soll dann umbenannt auf die Festplatte gespeichert und in die Zeichnung eingefügt werden. Dabei sind die Einfügekoordinaten die, die im Parameter BBOX übergeben wurden. Ich denke, dass ich das alles so hin bekomme... Hapern tuts halt nur beim Zugriff auf das bild über http. Wie kann ich eine Datei über http auf die Festplatte speichern? Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Vino Mitglied
Beiträge: 207 Registriert: 24.05.2005 Windows 10 BricsCAD V20-22
|
erstellt am: 03. Mrz. 2015 11:16 <-- editieren / zitieren --> Unities abgeben:
Nachtrag: Der Link wird vom Forensystem irgendwie abgeschnitten... Zum Anschauen bitte den ganzen Link inklusive "...,4466000,5379000" kopieren und im Browser einfügen. Was ich noch vergessen habe zu erwähnen. Ich arbeite mit BricsCAD. Vielleicht funktionieren hier manche Lösungsansätze nicht, die mit ACAD laufen. Generell habe ich aber sehr gute Erfahrungen mit AutoLisp-Funktionen unter BricsCAD gemacht. Also wenn ihr wisst, wies in AutoCAD klappt, immer her damit ;-) Versucht hab ichs schon mit Code: (vl-file-copy "http://www.geodaten.bayern.de/ogc/ogc_dop200_oa.cgi?REQUEST=GetMap&SERVICE=WMS&height=2000&width=2000&format=image/jpg&layers=adv_dop200c&srs=EPSG:31468&CRS=EPSG:31468&BBOX=446350 0,5374500,4464000,5375000" "F:\\test.jpg")
und Code: (setq x (vlax-create-object "scripting.filesystemobject")) (vlax-invoke x "CopyFile" "http://www.geodaten.bayern.de/ogc/ogc_dop200_oa.cgi?REQUEST=GetMap&SERVICE=WMS&height=2000&width=2000&format=image/jpg&layers=adv_dop200c&srs=EPSG:31468&CRS=EPSG:31468&BBOX=446350 0,5374500,4464000,5375000" "F:\\test.jpg") (vlax-release-object x)
beides klappt aber nicht mit URLs. Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 03. Mrz. 2015 11:53 <-- editieren / zitieren --> Unities abgeben: Nur für Vino
ein bißchen Code zum anpassen : (defun DT:GetFileFromURL(URL DIR / OBJ TEMPFILE FILENAME) (vl-load-com) (if(setq OBJ(vla-get-utility(vla-get-activedocument (vlax-get-acad-object)))) (progn (if(and(=(type URL)'STR) (or(=(type DIR)'STR)(setq DIR "C:\\")) (=(vla-isurl OBJ URL)) (or(not(vl-catch-all-error-p(vl-catch-all-apply 'vla-GetRemoteFile (list OBJ URL 'TEMPFILE :vlax-true)))) (prompt "\n Fehler beim Download") ) ) (progn (setq FILENAME(strcat DIR(vl-filename-base URL)(vl-filename-extension URL))) (vl-file-copy TEMPFILE FILENAME) (vl-file-delete TEMPFILE) ) ) (vl-catch-all-apply 'vlax-release-object (list utilObj)) ) ) (princ) ) ;; Aufruf zum Bsp ... (DT:GetFileFromURL "http://ww3.cad.de/foren/ubb/uploads/CADmium/mail.gif" "d:\\")
------------------ Also ich finde Unities gut ... und andere sicher auch --------------------------------------- - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Vino Mitglied
Beiträge: 207 Registriert: 24.05.2005 Windows 10 BricsCAD V20-22
|
erstellt am: 03. Mrz. 2015 12:50 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 03. Mrz. 2015 13:10 <-- editieren / zitieren --> Unities abgeben: Nur für Vino
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 03. Mrz. 2015 13:14 <-- editieren / zitieren --> Unities abgeben: Nur für Vino
Mit der genannten URL bin ich mir fast sicher das du eigentlich eine Website anzeigen (lassen) möchtest, vermutlich im aktuellen Browser? Suche im Forum mal nach SiCADde, vielleicht hilfts - wenn ich vorher richtig lag (gilt natürlich nur für das Help-Beispiel, nicht für das Eigentliche Problem) ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Vino Mitglied
Beiträge: 207 Registriert: 24.05.2005 Windows 10 BricsCAD V20-22
|
erstellt am: 03. Mrz. 2015 15:17 <-- editieren / zitieren --> Unities abgeben:
Hallo, NEIN, ich will keine Website anzeigen lassen. Es geht hier um WMS (= Web Map Service) Aufrufe... Wenn ich die URL http://www.geodaten.bayern.de/ogc/ogc_dop200_oa.cgi?REQUEST=GetMap&SERVICE=WMS&format=image/jpg&layers=adv_dop200c&srs=EPSG:31468&height=2000&width=2000&BBOX=4465500,5378500,446600 0,5379000 aufrufe, zeigt mir der Browser ein JPG-Bild an (kein HTML, in dem ein Bild liegt) Nehme ich dann die URL http://www.geodaten.bayern.de/ogc/ogc_dop200_oa.cgi?REQUEST=GetMap&SERVICE=WMS&format=image/jpg&layers=adv_dop200c&srs=EPSG:31468&height=2000&width=2000&BBOX=4466000,5378500,446650 0,5379000 (Unterschied zur ersten URL nur im Attribut BBOX!!), bekomme ich genau das Bild, das rechts neben dem ersten liegt... usw. Wenn ich jetzt diese Bilder herunter lade und genau auf die Koordinaten ausrichte, die im Attribut BBOX stehen, habe ich ein exakt auf Gauß-Krüger-Koordinaten ausgerichtetes Orthofoto in meiner DWG Und genau das will ich eben automatisieren... Und weil ich jetzt noch etwas rumgespielt habe, hab ich das Problem glaube ich etwas eingegrenzt... Wenn ich die folgende URL benutze: http://www.geodaten.bayern.de/ogc/ogc_dop200_oa.cgi?REQUEST=GetMap&SERVICE=WMS&format=image/jpg&layers=adv_dop200c&srs=EPSG:31468&height=200&width=200&BBOX=4465500,5378500,4465550, 5378550 (hier wird ein kleinerer Bildausschnitt definiert), dann scheint zunächst alles zu klappen. Wenn ich die Datei dann öffnen will, heißt diese (im Temp-Verzeichnis) aber nur "jpg&layers=adv_dop200c&srs=EPSG" und hat als Dateigröße 0 KB. Es liegt anscheinend NICHT daran, dass in der URL nirgends die Dateiendung .JPG vorkommt. Anscheinend gibt es 2 Probleme:
- Die Dateigröße:
Die obigen URLs erzeugen Bilder mit 2000x2000 Pixeln. Anscheinend dauert es der Funktion zu lange, bis die Daten kommen und löst ein Timeout aus.
- Der Dateiname:
Die Funktion will die Daten im selben Dateinamen abspeichern, wie sie am Server liegen. Da aber in der URL kein Dateiname sondern Attribute übergeben werden, und in diesen als Dateinamen unzulässige Zeichen (/, : ) vorkommen, kann er die Daten vermutlich nicht korrekt speichern.
Fällt vielleicht irgendjemand eine Lösung ein, wie man das umgehen kann? Gruß Stefan P.S.: Wie schon erwähnt, mag das Forensystem meine URLs auch nicht... Bitte immer manuell die ganzen Links kopieren, leerzeichen entfernen und im Browser einfügen...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 03. Mrz. 2015 15:22 <-- editieren / zitieren --> Unities abgeben: Nur für Vino
Du verstehst schon das die URL nicht der Speicherort einer Bilddatei ist, ja ? Wenn der Link auf eine Datei verweisen würde, dann hättest du oben bereits die Antwort. Du mußt also nun den (bisher) händischen Schritt "Grafik speichern unter" (oder wie auch immer du da vorgehst) automatisieren. Da wirde man sich wohl ein wenig einlesen müssen, da so ein Aufbau nicht ungewöhnlich ist, wirst du auch Treffer im WWW haben die zur Lösung führen. Entschuldige, ich müßte ebenso nachschauen und kann die Lösung nicht aus dem Ärmel schütteln ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|