Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Explorer starten, Pfadname nur teilweise bekannt

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:  Explorer starten, Pfadname nur teilweise bekannt (1135 / mal gelesen)
Orchard
Mitglied



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

Beiträge: 31
Registriert: 02.11.2009

AutoCAD Mechanical 2015

erstellt am: 14. Jul. 2017 09:21    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,

ich möchte per startapp "Explorer" den Windows Explorer starten. Leider ist der Pfadname nur teilweise bekannt. Warum? Wir legen in Windows die Ordner am Anfang mit einer eindeutigen 5-stelligen Projektnummer an. Dahinter kommt dann noch der Projektname. Der ist allerdings nicht so eindeutig. Kann ich in Lisp den Ordnernamen irgenwie auslesen um dann den den Explorer im richtigen Ordner zu starten?

Danke vorab

Gruß Stefan

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: 14. Jul. 2017 09:27    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 Orchard 10 Unities + Antwort hilfreich

Servus,

wenn du deine Anfrage noch mal in Ruhe liest wirst du selbst darauf kommen: Hier fehlt (uns) eine Info!

Angenommen du führst das Programm in einer Datei aus welche sich in dem (Projekt-)Pfad befindet,
so kannst du den Pfad der aktuellen Datei auslesen. Die Systemvariable DWGNAME liefert den Namen, DWGPREFIX den Pfad.

Vorher möglicherweise via DWGTITLED prüfen ob datei überhaupt gespeichert ist
und ob der erste Ordner überhaupt ein Projektordner sein kann vom Namen her (wcmatch vergleich).
File-Handling Functions Reference (AutoLISP)
String-Handling Functions Reference (AutoLISP)

Letzteres bietet auch alles für den Fall das nicht aus diesem Ordner gestartet wird und DWGPREFIX nicht genutzt werden kann.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

Orchard
Mitglied



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

Beiträge: 31
Registriert: 02.11.2009

AutoCAD Mechanical 2015

erstellt am: 14. Jul. 2017 12:12    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,

dass ich mit DWGPrefix den Speicherort der geöffneten DWG auslesen kann ist mir bekannt, nützt mir aber nichts.
Unsere Zeichnungen werden mit dem Programm Autodesk VAULT geöffnet. Die DWG´s liegen auf einem Server, auf den Dateiort
kann man gar nicht zugreifen.
Aber wir haben einen Projektordner im Explorer in dem wir Datenblätter, Empfangene Dateien, Protokolle usw. ablegen. Wo
der Projektordner liegent ist klar: S:\Datenaustausch\.... usw.
Der Unterordner für das Projekt fängt nun definitiv mit der Projektnummer an, z.B. 23 782 (also einer Fünfstellige Nummer die
es auch nur einmal gibt). Der Ordner könnte allerdings heißen:

23 782 Daimler AG Sindelfingen
23 782 Daimler Sindelfingen Cafeteria
23 782 Daimler Cafeteria

Das weiß ich nicht. Da es aber die Nummer nur 1x gibt, muss der Ordner ja mit "23 782" anfangen. Wie der Ordner dann vollständig
heißt will ich auslesen und dann an "Startapp" übergeben.
DOS konnte das ja in dem mann angefangen hat zu schreiben und dann die TAB Taste gedrückt hat. Sowas ähnliches such ich in Lisp....

Danke vorab

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: 14. Jul. 2017 13:07    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 Orchard 10 Unities + Antwort hilfreich

(defun GETPRJFOLDER( PATH PJNR / SUBFOLDERS FOLDER SUBLISTE PJNRSTR)
  (if(and(=(type PATH)'STR)
        (vl-file-directory-p PATH)
        (setq SUBFOLDERS (vl-directory-files PATH "*.*" -1))
      )
    (progn     
      (foreach FOLDER SUBFOLDERS
        (if (not(member FOLDER '("." "..")))(setq SUBLISTE (cons FOLDER SUBLISTE)))         
      )
      (setq PJNRSTR(strcase(vl-princ-to-string PJNR)))
      (setq SUBLISTE(vl-remove-if-not'(lambda(X)(wcmatch (strcase X) (strcat PJNRSTR "*")))SUBLISTE))
      (if (=(length SUBLISTE)1)(car SUBLISTE)"")
    ) 
  )
)

Aufruf dann
(GETPRJFOLDER "S:\\Datenaustausch\\VAULT" "23782")

------------------
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: 14. Jul. 2017 13:08    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 Orchard 10 Unities + Antwort hilfreich

Die richtigen Hilfeseiten/funktionen hast du ja nun bekommen,
hier nun noch ein einfacher Gedanke dazu:

Lese alle Verzeichnisse/Namen aus dem Laufwerk oder Unterordner aus,
durchlaufe die Liste und prüfe mit wcmatch welche Ordner mit der Projektnummer anfangen.

Gibt es nur einen Treffer, so hast den den gewünschten Ordner gefunden?

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

Orchard
Mitglied



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

Beiträge: 31
Registriert: 02.11.2009

AutoCAD Mechanical 2015

erstellt am: 18. Jul. 2017 14:20    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,

vielen Dank CADmium, funktioniert perfekt. Verstehen will ich dass mal lieber nicht.
Folgendes folgenschweres Problem habe ich noch: Ist in meinem Ordnernamen ein Komma vorhanden,
dann öffnet sich der Explorer NICHT im übergebenen Projektordner sondern in c:\Users\Name\Documents.....
Benenne ich den Ordner um ohne Komma, dann funktioniert mein Lisp. Gibts dafür noch ne Lösung?

Danke vorab

Gruß Stefan

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: 18. Jul. 2017 15:01    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 Orchard 10 Unities + Antwort hilfreich

Diese Problematik muß in deinem uns unbekannten Code liegen,
CADmiums Funktion hat damit kein Problem.
Wie schaut denn deine Zeile aus mit der du den Pfad zusammensetzt und den Explorer startest?

(Problematisch wäre hier nur die Übergabe der "Projektnummer" wenn diese Sonderzeichen wie ein Komma beinhalten würde.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

Orchard
Mitglied



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

Beiträge: 31
Registriert: 02.11.2009

AutoCAD Mechanical 2015

erstellt am: 18. Jul. 2017 16:26    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

(defun c o ()

(setq text (cdr(assoc 1 (entget(car(nentsel "\nAttribut wählen:"))))))


(setq pfad (strcat "S:\\Datenaustausch\\00 Projekte\\" (substr text 1 2) " xxx\\"(GETPRJFOLDER (strcat "S:\\Datenaustausch\\00 Projekte\\" (substr text 1 2) " xxx") (substr text 1 6))))

(progn(startapp "explorer" (strcat "/n,/e," pfad))(princ))
)


(defun GETPRJFOLDER( PATH PJNR / SUBFOLDERS FOLDER SUBLISTE PJNRSTR)
  (if(and(=(type PATH)'STR)
        (vl-file-directory-p PATH)
        (setq SUBFOLDERS (vl-directory-files PATH "*.*" -1))
      )
    (progn   
      (foreach FOLDER SUBFOLDERS
        (if (not(member FOLDER '("." "..")))(setq SUBLISTE (cons FOLDER SUBLISTE)))       
      )
      (setq PJNRSTR(strcase(vl-princ-to-string PJNR)))
      (setq SUBLISTE(vl-remove-if-not'(lambda(X)(wcmatch (strcase X) (strcat PJNRSTR "*")))SUBLISTE))
      (if (=(length SUBLISTE)1)(car SUBLISTE)"")
    )
  )
)

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

Orchard
Mitglied



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

Beiträge: 31
Registriert: 02.11.2009

AutoCAD Mechanical 2015

erstellt am: 18. Jul. 2017 16:30    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

Das schaut evtl. etwas wild aus aber das liegt daran, dass alle Projekte die mit 23... anfangen im Ordner "23 xxx" liegen usw.
Ich kann ja in AutoCad die Variable "Pfad" abfragen und die stimmt aber wenn ein Komma drin ist dann öffnet der Explorer nicht im
richtigen Ordner. Ändere ich einfach nur den Pfadnamen auf "ohne Komma" und ändere nichts an meinem Lisp, dann funktioniert es. Komisch oder?

Danke vorab

Gruß Stefan

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: 18. Jul. 2017 19:11    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 Orchard 10 Unities + Antwort hilfreich

Wie gesagt, dies liegt nicht an CADmiums Lispzeilen,
du kannst ja selbst den Wert von PFAD prüfen, dieser ist korrekt.

Das Problem ist deine Übergabezeile an Explorer,
dort wird das Komma derzeit als Trenner verstanden und der Explorer sucht nach einem Ordner
mit dem Namen "1.Zeichen bis letztens Zeichen vor deinem Komma" (aus" ..\\0815,ABCD" wird "..\\0815"

(teste es mal, erstelle in gleicher Ebene einen Ordner mit diesem verkürzten Namen, da dieser aktuell nicht existiert wird der allgemeine Doc Ordner aufgerufen)

Mögliche Lösung: Setze deinen Pfad in Anführungszeichen.

(startapp "explorer" (strcat "/n,/e,\"" pfad "\""))
-
(setq PFAD "D:\\TEST,12345") ; Beispiel
(strcat "/n,/e," pfad) => Übergabe an Explorer:  /n,/e,D:\\TEST,12345
(strcat "/n,/e,\"" pfad "\"") => Übergabe an Explorer:  /n,/e,"D:\\TEST,12345"

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