| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Zeichenkette kürzen per Autolisp (3136 mal gelesen)
|
Spidi Mitglied Konstrukteur
Beiträge: 21 Registriert: 30.09.2009
|
erstellt am: 29. Apr. 2010 11:38 <-- editieren / zitieren --> Unities abgeben:
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 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 29. Apr. 2010 11:47 <-- editieren / zitieren --> Unities abgeben: Nur für Spidi
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 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 / zitieren --> Unities abgeben: Nur für Spidi
|
Spidi Mitglied Konstrukteur
Beiträge: 21 Registriert: 30.09.2009
|
erstellt am: 29. Apr. 2010 12:25 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 13527 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 / zitieren --> Unities abgeben: Nur für Spidi
|
Spidi Mitglied Konstrukteur
Beiträge: 21 Registriert: 30.09.2009
|
erstellt am: 29. Apr. 2010 13:12 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 13527 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 / zitieren --> Unities abgeben: Nur für Spidi
|
Spidi Mitglied Konstrukteur
Beiträge: 21 Registriert: 30.09.2009
|
erstellt am: 29. Apr. 2010 14:20 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 13527 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 / zitieren --> Unities abgeben: Nur für Spidi
|
Spidi Mitglied Konstrukteur
Beiträge: 21 Registriert: 30.09.2009
|
erstellt am: 29. Apr. 2010 15:16 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 8086 Registriert: 09.03.2006 Kinder, kauft Kämme! Es kommen lausige Zeiten.
|
erstellt am: 29. Apr. 2010 15:22 <-- editieren / zitieren --> Unities abgeben: Nur für Spidi
|
Spidi Mitglied Konstrukteur
Beiträge: 21 Registriert: 30.09.2009
|
erstellt am: 29. Apr. 2010 15:56 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 242 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 / zitieren --> Unities abgeben: Nur für Spidi
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 |