Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Datei-download mit Lisp

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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 (1729 mal gelesen)
Vino
Mitglied



Sehen Sie sich das Profil von Vino an!   Senden Sie eine Private Message an Vino  Schreiben Sie einen Gästebucheintrag für Vino

Beiträge: 207
Registriert: 24.05.2005

Windows 10
BricsCAD V20-22

erstellt am: 03. Mrz. 2015 10:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von Vino an!   Senden Sie eine Private Message an Vino  Schreiben Sie einen Gästebucheintrag für Vino

Beiträge: 207
Registriert: 24.05.2005

Windows 10
BricsCAD V20-22

erstellt am: 03. Mrz. 2015 11:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 03. Mrz. 2015 11:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Vino 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Vino an!   Senden Sie eine Private Message an Vino  Schreiben Sie einen Gästebucheintrag für Vino

Beiträge: 207
Registriert: 24.05.2005

Windows 10
BricsCAD V20-22

erstellt am: 03. Mrz. 2015 12:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

erst mal danke für die schnelle Hilfe :-)

So wie du die Funktion aufrufst, klappt auch alles wunderbar.
Nur mit meiner URL wills nicht so richtig.

Ich vermute mal, das liegt daran, dass in meiner URL keine Dateiendung angegeben ist und das Programm daher nicht weiß, wie ers abspeichern soll...
Mit der URL >> http://help.autodesk.com/view/ACD/2015/ENU/?guid=GUID-912C1C27-9FEA-4CB1-BE50-054603A31547 << klappts z.B. auch nicht.

Gibt es eine Möglichkeit, schon beim Download den gewünschten Dateinamen oder zumindest Dateiendung anzugeben, quasi TEMPFILE vorzubelegen?
Oder liegts an was anderem?

Gruß
Stefan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 03. Mrz. 2015 13:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Vino 10 Unities + Antwort hilfreich

Debugge doch mal den Code im VLIDE ...  ... dann weißt du auch, wo du evtl. "schrauben" musst.

Der Code macht keine Websitenanalyse ... und wenn du eine Helpsite aufrufst ... ist das keine Datei ...

------------------
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

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 03. Mrz. 2015 13:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Vino 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Vino an!   Senden Sie eine Private Message an Vino  Schreiben Sie einen Gästebucheintrag für Vino

Beiträge: 207
Registriert: 24.05.2005

Windows 10
BricsCAD V20-22

erstellt am: 03. Mrz. 2015 15:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 03. Mrz. 2015 15:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Vino 10 Unities + Antwort hilfreich

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz