Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Mehrfache Dateiauswahl in (Visual-)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:  Mehrfache Dateiauswahl in (Visual-)Lisp. (1701 mal gelesen)
CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 12. Jan. 2004 22: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

Hi,

ja, ich weiß. CADwiesel hat etwas und DOSLib hat dos_getfilem. Außerdem gibt's die eine oder andere ARX oder DLL im Zwischennetz, aber was ist mit purem Visual Lisp?

In VBA kann man direkt auf die Windows APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface) und Common Dialogs zugreifen. Das gleiche müsste aber doch auch mit Visual Lisp funktionieren?!

Windows APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface) geht: (setq vla-ShellObj (vlax-create-object "Shell.Application"))
und dann (vlax-invoke-method vla-ShellObj 'undsoweiter

Leider gibt's hier kein Dialogfeld für Dateiauswahl. Das gäbe es in den Common Dialogs, wenn man denn dran käme:
(setq vla-ComDlg (vlax-create-object "MSComDlg.CommonDialog")) funktioniert leider nicht.

Womit wir schon bei der Zusatzfrage sind: Wie kommt man eigentlich an den passenden Objektnamen? "Shell.Apllication" ist klar, aber woher kommen "MSComDlg.CommonDialog" oder auch "Scripting.FileSystemObject"?

Zurück zum eigentlichen Problem. Wenn sich das Objekt nicht erstellen lässt, lässt sich die Typbibliothek vielleicht importieren:
(vlax-import-type-library
    :tlb-filename "c:/windows/system32/comdlg32.dll"
    :methods-prefix "dlg-"
    roperties-prefix "dlg-"
    :constants-prefix "dlg-"
  )
geht nicht. Wieso nicht?

Aber, Lichtblick:
(vlax-import-type-library
    :tlb-filename "c:/windows/system32/comdlg32.ocx"
    :methods-prefix "dlg-"
    roperties-prefix "dlg-"
    :constants-prefix "dlg-"
  )
ist T, hat also funktioniert.

Nur ist leider nirgends dokumentiert, wie man die importierten Constants, Methods, Properties anwenden kann.
Wie und wo müssen die Flags gesetzt werden, die so wichtig für die Funktionsweise des Dialogs sind, wie startet man den Dialog und wäre die Rückgabe überhaupt verwertbar?

Fragen über Fragen


Gruß
CADchup

------------------
www.cadditions.de

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 12. Jan. 2004 22:49    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 CADchup 10 Unities + Antwort hilfreich

Hallo CADchup,

ich gehe dann meist in den VB-Editor, erstelle dort einen Verweis auf die Anwendung (dll, ocx,...) und dann hat man meist schon mal raus, was es alles so für Eigenschaften und Methoden gibt und welche Parameter diese haben. Wenn man Glück hat, kann man dann sogar mal in der VB-Hilfe etwas zum Thema finden. Ansonsten ... ???

Ich hoffe jemand anders hat eine erschöpfender Antwort als meine!???

Grüße Holger

------------------
Holger Brischke
(defun - Lisp over night!
AutoLISP-Programmierung für AutoCAD
Da weiß man, wann man's hat!

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 14. Jan. 2004 10:00    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 CADchup 10 Unities + Antwort hilfreich

den coomondialog kannst du so ansprechen

(setq x (vlax-create-object  "MSComDlg.CommonDialog"))
(vlax-put-property x "Filename" "*.*")
(vlax-put-property x "MaxFileSize" 10000); in lisp unbedingt notwendig, sonst kommt ne fehlermeldung von wegen zu wenig speicher
(vlax-put-property x "Flags" 524800); mehrer Dateien+explorer-design
(vlax-put-property x "Action" 1) ; showopen-dialog
(setq erg (vlax-get-property x "Filename"))

nur gibt es da ein kleines (eigentlich großes) Problem: das sch.. commondialogcontrol trennt im FileName die einzelnen gewählten dateien mit einem chr(0) - string, bei der übergabe nach lisp heisst das leider "ende des strings"

bei mehrfachauswahl sollte der 1. teilstring, das gewählte verzeichnis sein, und dann darauffolgend mit chr(0) getrennt die einzelnen gewählten dateien. leider bekommt man nach lisp nur das gewählte verzeichniss zurück.

aber vielleicht weiss noch wer anderes da eine lösung
zum wählen von nur einer datei funktioniert es allerdings super

------------------

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 14. Jan. 2004 10: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 CADchup 10 Unities + Antwort hilfreich

ich habs !!!!!!

(vlax-put-property x "Flags" 512) ; bei nicht explorer design ist das trennzeichen ein blank !!!!!!!!

allerdings werden lange dateinamen auf die kurzen ~ reduziert

------------------

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

CADchup
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3329
Registriert: 14.03.2001

Sicher ist, dass nichts sicher ist. Selbst das nicht.
Joachim Ringelnatz

erstellt am: 15. Jan. 2004 10:39    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

Hi,

für alle: Wir haben mittlerweile im Chat weitergemacht.
(vlax-create-object  "MSComDlg.CommonDialog")) funktioniert leider nicht auf Rechnern ohne Visual Studio.

Vielleicht gibt's noch andere Ideen?

Und: Vielen Dank schon mal an Holger und fuchsi!


Gruß
CADchup

------------------
www.cadditions.de

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