Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Zeichenkette kürzen per Autolisp

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:  Zeichenkette kürzen per Autolisp (2969 mal gelesen)
Spidi
Mitglied
Konstrukteur


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

Beiträge: 21
Registriert: 30.09.2009

erstellt am: 29. Apr. 2010 11:38    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 Leute,

gibt es eine Möglichkeit per Autolisp aus folgender zeichenkette

V:\Allgemei\9000_Kunde\9000_900_Randform_Biegen\

Randform_Biegen auszulesen, das ist natürlich eine Variable die durch (getvar "dwgprefix") ersetzt wird.

im Prinzip nach dem 3 Backslash 9 Zeichen entfernen und Rest ausgeben,
es sind immer 9 Zeichen nach dem 3 Backslash

ich danke im Voraus 

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

System: F1
und Google

erstellt am: 29. Apr. 2010 11:47    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 Spidi 10 Unities + Antwort hilfreich

Schau dir mal "KOORD2.lsp" von CADwiesel..de an - dort ist eine Funktion
enthalten zum splitten von Strings anhand eines Trennzeichens (in deinem Fall"\\").
Dann noch mit  SUBST arbeiten und du bist am Ziel.

PS: Wir haben hier auch ein AutoLisp-Forum     KLICK!
------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 29. Apr. 2010 11:47    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 Spidi 10 Unities + Antwort hilfreich

Ja, so eine Möglichkeit gibt es.


z.B:
(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\\")
------------------
      - 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

Spidi
Mitglied
Konstrukteur


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

Beiträge: 21
Registriert: 30.09.2009

erstellt am: 29. Apr. 2010 12:25    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

jetzt habe ich das Problem die Autolisp im Autocad zu finden, wenn ich dieses benutze:

(setq name (getvar "dwgprefix"))
(setq name (substr name 18 (- (strlen name) 18)))

unter Schriftfeld LispVariable finde ich name.

wo ist es in diesem fahl? 

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

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 29. Apr. 2010 12:42    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 Spidi 10 Unities + Antwort hilfreich

Spidi
Mitglied
Konstrukteur


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

Beiträge: 21
Registriert: 30.09.2009

erstellt am: 29. Apr. 2010 13: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

Sehr Gut!
es hat super funktioniert Danke

jetzt noch eine frage wenn ich nur Kunde behalten möchte?

im Prinzip nach dem 2 Backslash 5 Zeichen entfernen und Rest ausgeben!

Dann hätte ich noch zwei Anliegen

Material und Beschreibung per Lisp?

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

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 29. Apr. 2010 13:22    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 Spidi 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Spidi:
Sehr Gut!
es hat super funktioniert Danke

jetzt noch eine frage wenn ich nur Kunde behalten möchte?

im Prinzip nach dem 2 Backslash 5 Zeichen entfernen und Rest ausgeben!


naja .. du hast n Code geschenkt bekommen  .. nun zeig mal Eininitiative ! Tipp :  substr und die car - Varianten

Zitat:
Original erstellt von Spidi:

Dann hätte ich noch zwei Anliegen

Material und Beschreibung per Lisp?


(prompt "\nMaterial")
und
(prompt "\nBeschreibung")


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

Spidi
Mitglied
Konstrukteur


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

Beiträge: 21
Registriert: 30.09.2009

erstellt am: 29. Apr. 2010 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 tut mir Leid aber ich Blick es einfach nicht,

könntest du mir die 2 Zeichen erklären vielleicht verstehe ich es dann?

        (setq path (vl-string-subst "\" \"" "\\" path))
        (setq path (vl-string-subst "\" \"" "/" path))


und zum Material

würde es so gehen?
(setq Material (prompt "\nMaterial"))

 

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

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 29. Apr. 2010 14:29    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 Spidi 10 Unities + Antwort hilfreich

zum ersten :

ersetze
(setq RESULT (cadddr LST))
(setq RESULT (substr RESULT 10))

gegen
(setq RESULT (caddr LST))
(setq RESULT (substr RESULT 6))


zum Erklären von (setq path (vl-string-subst "\" \"" "\\" path))
: gib mal VLIDE ein ... drücke dort F1 und lies selber was unter vl-string-subst steht 


und ja ..
(setq Material (prompt "\nMaterial")) 

ist syntaxmäßig richtig

.... wird aber immer nil enthalten.

ganz im Ernst: .... ich habe dein Anliegen
"...Material und Beschreibung per Lisp.." überhaupt nicht interpretieren können.

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

Spidi
Mitglied
Konstrukteur


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

Beiträge: 21
Registriert: 30.09.2009

erstellt am: 29. Apr. 2010 15:16    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 muss dich um Hilfe bitten bekomme es einfach nicht hin.

habe es so probiert
(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 6))
        )
        RESULT 
      )
    )
  )
)

Aufruf
(setq Kunde (RESTPATH (getvar "DWGPREFIX")))

ging nicht

und so auch nicht

(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 6))
        )
        RESULT 
      )
    )
  )
)

Aufruf
(setq Kunde (RESTPATH (getvar "DWGPREFIX")))

bitte hilf mir.

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

runkelruebe
Moderator
Straßen- / Tiefbau




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

Beiträge: 8075
Registriert: 09.03.2006

Kinder, kauft Kämme!
Es kommen lausige Zeiten.

erstellt am: 29. Apr. 2010 15:22    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 Spidi 10 Unities + Antwort hilfreich

zähl mal die d bei cadddr 
solltest Du lesen: >> klick <<
und zu Deiner Fehlermeldung: "geht nicht" ist keine Fehlerbeschreibung.

Besser: Was gibt ACAD zurück und warum würdest Du etwas anderes erwarten?
s.a. CADmiums Signatur ;-)

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info | Dateianhänge | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope

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

Spidi
Mitglied
Konstrukteur


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

Beiträge: 21
Registriert: 30.09.2009

erstellt am: 29. Apr. 2010 15:56    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

Vielen Dank jetzt geht es und danke für die Seite, die kenne ich schon seit ein paar tagen. Ich bin auch schon seit tagen am suchen und lesen, habe aber nichts vernünftiges hingekommen. Bin wirklich erst ein Anfänger was Lisp angeht und bin erst beim erlernen.

Noch mal Vielen Vielen Dank 

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

cadking
Mitglied
CAD-Zeichendiensleistung


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

Beiträge: 238
Registriert: 26.10.2004

Intel Quadcore i7,W7-64bit, Quadro FX 3800
MEP/ACA2012; MEP/ACA2015; MEP/ACA2018; Architectural Office 2009

erstellt am: 05. Sep. 2019 17:03    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 Spidi 10 Unities + Antwort hilfreich

ich habe folgendes Problem:
meine Zeichnung liegt auf:
T:\Kunde\Bau_29\Ansichten\Gebaeude_XXX\Architektur\Grundriss\Grundriss_EG.dwg
LST aus (RESTPATH (getvar "dwgprefix"))
LST -> (T: Kunde Bau_29 Ansichten Gebaeude_XXX Architektur Grundriss )

mit (setq newlst LST) und (while (and (or (/= (car newlst) "Ansichten")(/= (car newlst) "Elemente")(/= (car newlst) "Gebäudemodule"))(/= newlst nil))
möchte ich an einen der Ordner Ansichten, Elemente oder Gebäudemodule kommen.
aber (car newlst) gibt Ansichten zurück, und das ist ja nicht gleich "Ansichten".
Wie muss ich das (car newlst) ändern damit es "Ansichten" und nicht Ansichten zurück gibt?


Zitat:
Original erstellt von CADmium:
Ja, so eine Möglichkeit gibt es.


z.B:
(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\\")


------------------
Danke Stefan

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