Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  
  Dateipfad aufspalten

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
Autor Thema:   Dateipfad aufspalten (293 mal gelesen)
xxxmurdockxxx
Mitglied
techn. Zeichner


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

Beiträge: 52
Registriert: 18.12.2007

WIN10, Civil 3D 2017 SP1.1

erstellt am: 05. Okt. 2018 12:09    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 Zusammen,

ich habe folgende Situation:

Dateipfad:

L:\AAAA-BBBBBB_CCCCCC\DDDDDD\04-CAD\EEEEEE

A besteht aus Zahlen und hat immer 4 Stellen
B, C, D und E sind in der Länge variabel.

Nun möchte ich gerne im Plankopf den Pfad + Dateiname automatisch stehen haben.
Bisher habe ich das relativ einfach über ein Schriftfeld mit DIESEL-Ausdruck gelöst.

Zitat:
$(substr,$(getvar,dwgprefix),1,8) ... $(substr,$(getvar,dwgprefix),$(-,$(strlen,$(getvar,dwgprefix)),30),31)$(getvar,dwgname)


Da sich allerdings unsere interne Ablagestruktur geändert hat ist es meist nicht möglich den gesamten Dateipfad im Plankopf darzustellen.

Ist es machbar den Pfad an einem bestimmten Zeichen zu teilen? 

Teil 1: L:\AAAA (kein Problem)
Teil 2: DDDDDD\04-CAD\EEEEEE
Teil 3: Dateiname (kein Problem)

------------------
Viele Grüße
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: 18565
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 05. Okt. 2018 12: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 Nur für xxxmurdockxxx 10 Unities + Antwort hilfreich

Ich würde sagen Nein, aber es wäre doch sicher auch eine Lösung
mit einer variablen Anzeige zu arbeiten:

Wenn Pfad+Dateiname kürzer wie nnnn, dann komplett,
ansonsten
Ersten 6 Zeichen + "..." Letzten n Zeichen des Pfades + Dateiname

Dafür hast du dann auch bereits alle nötige "Technik" in deinem aktuellen Diesel-Beispiel.


L:\AAAA-BBBBBB_CCCCCC\DDDDDD\04-CAD\EEEEEE\MyFile.dwg
L:\AAAA-...CCCCCCCCCC\DDDDDD\04-CAD\EEEEEE\MyFile.dwg
oder so ähnlich

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

xxxmurdockxxx
Mitglied
techn. Zeichner


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

Beiträge: 52
Registriert: 18.12.2007

WIN10, Civil 3D 2017 SP1.1

erstellt am: 05. Okt. 2018 12:24    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

ja, das hab ich schon befürchtet 

dann bleibts bei der aktuellen Lösung.

Danke trotzdem.

------------------
Viele Grüße
Stefan

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

xxxmurdockxxx
Mitglied
techn. Zeichner


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

Beiträge: 52
Registriert: 18.12.2007

WIN10, Civil 3D 2017 SP1.1

erstellt am: 11. Okt. 2018 18: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

So, irgendwie steh ich grad auf dem Schlauch, da ich mit DIESEL nicht so vertraut bin.


Ich hab nun folgenden Ausdruck der funktioniert:

Code:
$(if, $(>,$(strlen,$(getvar,dwgprefix)),80),$(substr,$(getvar,dwgprefix),1,7) ... $(substr,$(getvar,dwgprefix),$(-,$(strlen,$(getvar,dwgprefix)),49),50)$(getvar,dwgname) , $(getvar,dwgprefix)$(getvar,dwgname))


Da leider der Dateiname in der Länge sehr variieren kann möchte ich gerne die Anzahl der Zeichen aus dem Dateinamen mit in die IF Anweisung reinnehmen.

Mit folgendem Ausdruck bekomme ich die Gesamtanzahl der Zeichen aus Pfad und Dateiname (klappt auch soweit):

Code:
$(+,$(strlen,$(getvar,dwgname)),$(strlen,$(getvar,dwgprefix)))

Wenn ich den Ausdruck nun aber in den oberen integriere klappt es nicht: 

Code:
$(if, $(>,$(+,$(strlen,$(getvar,dwgname)),$(strlen,$(getvar,dwgprefix))),80),$(substr,$(getvar,dwgprefix),1,7) ... $(substr,$(getvar,dwgprefix),$(-,$(strlen,$(getvar,dwgprefix)),49),50)$(getvar,dwgname) , $(getvar,dwgprefix)$(getvar,dwgname))

Wo könnte der Fehler liegen?

------------------
Viele Grüße
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: 18565
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 11. Okt. 2018 19: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 xxxmurdockxxx 10 Unities + Antwort hilfreich

Ich sitze hier am 5" Bildschirm, aber funktioniert der Versuch überhaupt in irgendeiner Art und Weise?

₩₩₩₩₩₩

$(if,
BEDINGUNG
$(>,
$(+
,$(strlen,$(getvar,dwgname))
,$(strlen,$(getvar,dwgprefix))
),
80
)
DANN
,$(substr,$(getvar,dwgprefix),1,7) ... $(substr,$(getvar,dwgprefix),
ANSONSTEN
$(-,$(strlen,$(getvar,dwgprefix)),49),50)$(getvar,dwgname) ,
HUCH???
 $(getvar,dwgprefix)$(getvar,dwgname)
)

Aber wie angedeutet, ich kann am Smartphone leicht etwas falsch gemacht/übersehen haben bei so vielen Klammern.

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

xxxmurdockxxx
Mitglied
techn. Zeichner


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

Beiträge: 52
Registriert: 18.12.2007

WIN10, Civil 3D 2017 SP1.1

erstellt am: 12. Okt. 2018 09:48    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

bin dem Fehler etwas Näher gekommen 

Was ja tadellos funktioniert ist der Ausdruck:
IF "Pfad" > "X", DANN "gekürzter Pfad", SONST "Pfad+Dateiname"
$(if, $(>,$(strlen,$(getvar,dwgprefix)),70),$(substr,$(getvar,dwgprefix),1,7) ... $(substr,$(getvar,dwgprefix),$(-,$(strlen,$(getvar,dwgprefix)),49),50)$(getvar,dwgname) , $(getvar,dwgprefix)$(getvar,dwgname))


Der gekürzte Pfad besteht aus einer Kombination:
$(substr,$(getvar,dwgprefix),1,7) ... $(substr,$(getvar,dwgprefix),$(-,$(strlen,$(getvar,dwgprefix)),49),50)$(getvar,dwgname)

Ersten 7 Zeichen des Pfades: $(substr,$(getvar,dwgprefix),1,7)
3 Punkte: ...
Die 50 letzten Zeichen des Pfades: $(substr,$(getvar,dwgprefix),$(-,$(strlen,$(getvar,dwgprefix)),49),50)
Dateiname: $(getvar,dwgname)

Wenn ich nun die Zeichen von Pfad+Dateiname zusammenzähle funktioniert es z.B. mit folgendem Ausdruck:
$(if, $(>,$(+,$(strlen,$(getvar,dwgname)),$(strlen,$(getvar,dwgprefix))),90), $(substr,$(getvar,dwgprefix),1,7) ... $(getvar,dwgname), $(getvar,dwgprefix)$(getvar,dwgname))

Aber sobald ich zusätzlich noch den Ausdruck der letzten 50 Zeichen hinzufüge ignoriert er das völlig..
$(if, $(>,$(+,$(strlen,$(getvar,dwgname)),$(strlen,$(getvar,dwgprefix))),90), $(substr,$(getvar,dwgprefix),1,7) ... $(substr,$(getvar,dwgprefix),$(-,$(strlen,$(getvar,dwgprefix)),49),50)$(getvar,dwgname), $(getvar,dwgprefix)$(getvar,dwgname))

Scheinbar liegt das irgendwie an der Mehrfachverwendung.
Wenn ich z.B. den Ausdruck (ersten 7 Zeichen) rauslösche, dann nimmt er die 50 letzten Zeichen. 

Mein Latein bzw. DIESEL ist am Ende. 

------------------
Viele Grüße
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: 18565
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 12. Okt. 2018 10: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 xxxmurdockxxx 10 Unities + Antwort hilfreich

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: 18565
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 12. Okt. 2018 10: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 xxxmurdockxxx 10 Unities + Antwort hilfreich

So, zurück am Rechner nachgesehen: Du hast die ~240 Zeichengrenze mit dem Makro Diesel-Ausdruck geknackt, daher funktioniert es nicht.
~240 weil es evtl. unterschiedlich ist wenn ich mich recht erinnere. 237 Zeichen funktionieren aber recht sicher "immer".

Das Makro ist also gut und richtig (da habe ich mich wohl verlesen auf dem Smartphone),
aber der Dieselausdruck ist zu lang.
Entfernst du die drei "..." einfach mal dann wirst du sehen: Funktioniert wie gewünscht.

Zum Glück warst du verschwenderisch mit den Leerzeichen und wenn du diese entfernst dann passt es insgesamt wieder.

$(if,$(>,$(+,$(strlen,$(getvar,dwgname)),$(strlen,$(getvar,dwgprefix))),90),$(substr,$(getvar,dwgprefix),1,7)...$(substr,$(getvar,dwgprefix),$(-,$(strlen,$(getvar,dwgprefix)),49),50)$(getvar,dwgname),$(getvar,dwgprefix)$(getvar,dwgname))

(237 Zeichen)

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

xxxmurdockxxx
Mitglied
techn. Zeichner


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

Beiträge: 52
Registriert: 18.12.2007

WIN10, Civil 3D 2017 SP1.1

erstellt am: 12. Okt. 2018 10: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

Zitat:
Original erstellt von cadffm:
 

Warum hast du deinen ersten Text gelöscht?

Da ist keine unnötige Bedingung in der IF...

$(if, expr, dotrue [, dofalse])
expr
$(>,$(+,$(strlen,$(getvar,dwgname)),$(strlen,$(getvar,dwgprefix))),90)
dotrue
$(substr,$(getvar,dwgprefix),1,7) ... $(substr,$(getvar,dwgprefix),$(-,$(strlen,$(getvar,dwgprefix)),49),50)
dofalse
$(getvar,dwgprefix)$(getvar,dwgname)

Das Komma, dass du als dofalse interpretiert ist ja innerhalb der $(substr, string, start [, length]),
sonst würde mein Ausdruck auch nicht funktionieren wenn ich den ersten Teil vor den ... lösche. Aber da klappt es ja.

------------------
Viele Grüße
Stefan

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

xxxmurdockxxx
Mitglied
techn. Zeichner


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

Beiträge: 52
Registriert: 18.12.2007

WIN10, Civil 3D 2017 SP1.1

erstellt am: 12. Okt. 2018 10:54    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

Zitat:
Original erstellt von cadffm:
So, zurück am Rechner nachgesehen: Du hast die ~240 Zeichengrenze mit dem Makro geknackt, daher funktioniert es nicht.
~240 weil es evtl. unterschiedlich ist wenn ich mich recht erinnere. 237 Zeichen funktionieren aber recht sicher "immer".

Das Makro ist also gut und richtig (da habe ich mich wohl verlsen auf dem Smartphone),
aber der Dieselausdruck ist zu lang.
Entfernst du die drei "..." einfach mal dann wirst du sehen: Funktioniert wie gewünscht.

Zum Glück warst du verschwenderisch mit den Leerzeichen und wenn du diese entfernst dann passt es insgesamt wieder.

$(if,$(>,$(+,$(strlen,$(getvar,dwgname)),$(strlen,$(getvar,dwgprefix))),90),$(substr,$(getvar,dwgprefix),1,7)...$(substr,$(getvar,dwgprefix),$(-,$(strlen,$(getvar,dwgprefix)),49),50)$(getvar,dwgname),$(getvar,dwgprefix)$(getvar,dwgname))

(237 Zeichen)


Super... DANKE 
Da hätte ich ja lange rumprobieren können.

------------------
Viele Grüße
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: 18565
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 12. Okt. 2018 11:06    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 xxxmurdockxxx 10 Unities + Antwort hilfreich

(das mit dem Text löschen hat den gleichen Grund wie die gestrige Antwort: Weil du nicht auf meine Vermutung eingegangen warst hat es sich für mich heute morgen auf 5" noch immer so dargestellt als wäre was falsch)

Zurück am Rechner hat es aber gleich gepasst (sorry, ist halt schwierig mit so Klammerausdrücken auf dem dummphone).

Also wer das Leben am Limit nicht so mag: Erstelle zwei Dieselausdrücke, für jeden der beiden Fälle einen.
(if >90 DANN *ansonsten nichts*)(if <91 DANN *ansonsten nichts*)

Code:
$(if, $(>,$(+,$(strlen,$(getvar,dwgname)),$(strlen,$(getvar,dwgprefix))),90), $(substr,$(getvar,dwgprefix),1,7) ... $(substr,$(getvar,dwgprefix),$(-,$(strlen,$(getvar,dwgprefix)),49),50)$(getvar,dwgname),)$(if, $(<,$(+,$(strlen,$(getvar,dwgname)),$(strlen,$(getvar,dwgprefix))),91), $(getvar,dwgprefix)$(getvar,dwgname),)

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)2018 CAD.de | Impressum | Datenschutz