spidi-25
Goto Top

Pfadausschnitte

Hallo alle zusammen

Ich hätte eine frage.

Sagen jemandem diese Zeichen was:


(setq DWG_ (getvar "dwgname")) ;; returns "filename-rev01.dwg"
(setq DWG_ (substr dwg_ 1 (- (strlen dwg_) 11))) ;;returns "filename"


Diese Zeichen kommen aus unserem Zeichnungsprogramm, damit kann ich aus dem Dateinamen von rechts 11 Zeichen entfernen.


und mit diesen Zeichen:

(setq DWG (getvar "dwgprefix")) ;; returns "filename-rev01.dwg"
(setq DWG (substr dwg 18 (- (strlen dwg) 23))) ;;returns "filename"


kann ich von dem Dateipfad 18 Zeichen von Links und 23 von rechts entfernen.

hier meine Frage

Kann man das ganze so Umstrukturieren damit folgendes gemacht wird, und so sieht der kompletter Dateipfad

V:\Allgemei\9000_Kunde\9000_900_Randform_Biegen
V:\Allgemei\9000_Kunde08\9500_300_Test

momentan wird mit den unteren Zeichen folgendes ausgegeben: z.B. Kunde\9000_900_Randform_Biegen

sollte aber so aussehen:

erster Code: Kunde

zweiter Code: Randform_Biegen

habe noch rum experimentiertnur zum test geändert statt die variable (getvar "dwgprefix") folgendes eingesetzt "V:\Allgemei\9000_Kunde\9000_900_Randform_Biegen" hatte auch funktioniert.

(setq name "V:\Allgemei\9000_Kunde\9000_900_Randform_Biegen")
(setq name (substr name 16 (- (strlen name) 17)))


es wurde folgendes ausgeschpukt: Kunde9000_900_Randform_Bieg
allerdings ohne \ bei variable (getvar "dwgprefix") mit \


Ich bedanke mich im Voraus

Grüße Spidi-25

Content-Key: 141607

Url: https://administrator.de/contentid/141607

Ausgedruckt am: 29.03.2024 um 00:03 Uhr

Mitglied: 77559
77559 27.04.2010 um 23:53:41 Uhr
Goto Top
Hallo Spidi-25,

deine Chancen auf sinnvolle Antworten steigen:
  • wenn du Ross und Reiter nennst, sprich dein "Zeichnungsprogramm" und ggfs verwendete Scriptsprache.
  • deine Code-Schnipsel übersichtlicher präsentierst, dafür gibt es die code-tags in der Formatierungshilfe

Gruß
LotPings
Mitglied: Spidi-25
Spidi-25 28.04.2010 um 07:10:02 Uhr
Goto Top
Hallo LotPings

Das handelt sich um Autocad die Scriptsprache kenne ich leider selbst nicht wirklich

im Prinzip brauche ich 2 Scripts

die mir folgendes herausholen aus: V:\Allgemei\9000_Kunde\9000_900_Randform_Biegen raus ziehen

1.Kunde
2.Randform_Biegen

habe die Scripts noch abgekürzt und zwar so:

(setq test (substr "V:\Allgemei\9000_Kunde\9000_900_Randform_Biegen" 5 (- (strlen "V:\Allgemei\9000_Kunde\9000_900_Randform_Biegen") 6)))  

bzw. mit Variable so:

(setq test (substr  (getvar "dwgprefix") 5 (- (strlen  (getvar "dwgprefix")) 6)))  

es wurde dann folgendes herausgespukt:

lgemei9000_Kunde9000_900_Randform_Bieg

ich glaube das setq test ist nur dafür da damit es im Autocad gefunden wird.

Grüße Spidi-25
Mitglied: Spidi-25
Spidi-25 29.04.2010 um 15:59:52 Uhr
Goto Top
Hier die Antwort
(defun RESTPATH (PATH / LST RESULT)
  (if (=(type PATH)'STR)  
    (progn           
      (while (or(vl-string-search "\\" path)  
                (vl-string-search "/" path)  
            ) 
        (setq path (vl-string-subst "\" \"" "\\" path))  
        (setq path (vl-string-subst "\" \"" "/" path))  
      )     
      (if(and(setq LST (read (strcat "(\"" path "\")")))  
            (setq RESULT (cadddr LST))
            (setq RESULT (substr RESULT 10))
        )
        RESULT   
      )
    )
  ) 
)
Aufruf
(RESTPATH "V:\\Allgemei\\9000_Kunde\\9000_900_Randform_Biegen\\")

Güße
Spidi-25

[Edit Biber] Code-Tags gibts heute auch mal für AutoCad... Thx @Spidi-25 für das Posten der Lösung! [/Edit]