| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Explorer starten, Pfadname nur teilweise bekannt (1164 / mal gelesen)
|
Orchard Mitglied
Beiträge: 31 Registriert: 02.11.2009 AutoCAD Mechanical 2015
|
erstellt am: 14. Jul. 2017 09:21 <-- editieren / zitieren --> Unities abgeben:
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 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 14. Jul. 2017 09:27 <-- editieren / zitieren --> Unities abgeben: Nur für Orchard
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
Beiträge: 31 Registriert: 02.11.2009 AutoCAD Mechanical 2015
|
erstellt am: 14. Jul. 2017 12:12 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 14. Jul. 2017 13:07 <-- editieren / zitieren --> Unities abgeben: Nur für Orchard
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 14. Jul. 2017 13:08 <-- editieren / zitieren --> Unities abgeben: Nur für Orchard
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
Beiträge: 31 Registriert: 02.11.2009 AutoCAD Mechanical 2015
|
erstellt am: 18. Jul. 2017 14:20 <-- editieren / zitieren --> Unities abgeben:
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 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Jul. 2017 15:01 <-- editieren / zitieren --> Unities abgeben: Nur für Orchard
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
Beiträge: 31 Registriert: 02.11.2009 AutoCAD Mechanical 2015
|
erstellt am: 18. Jul. 2017 16:26 <-- editieren / zitieren --> Unities abgeben:
(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
Beiträge: 31 Registriert: 02.11.2009 AutoCAD Mechanical 2015
|
erstellt am: 18. Jul. 2017 16:30 <-- editieren / zitieren --> Unities abgeben:
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 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Jul. 2017 19:11 <-- editieren / zitieren --> Unities abgeben: Nur für Orchard
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 |