| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Trennzeichen einlesen (272 mal gelesen)
|
Dressler Mitglied technischer Angestellter
Beiträge: 301 Registriert: 19.11.2003 Athlon64 3200+ 2 GB DDR2 NVIDIA Geforce 7600 2x21" CRT Acad 2007
|
erstellt am: 27. Feb. 2006 13:36 <-- editieren / zitieren --> Unities abgeben:
Hallo, kann man irgendwie bei Autocad Verzeichnisnamen wie in folgendem beispiel irgendwie auswerten? C:\Projekte\Auftragsnummer_Kunde_Projektbezeichnung\Zeichnungen\ so sehen bei uns alle Verzeichnisse aus. Kann man irgendwie die einzelnen Dten, also Auftragsnumer, Kunde, Projektnummer aus dem Verzeichnis auslesen und in seperaten Feldern auf dem Schriftfeld verteilen? Dann muß man nicht immer alles von hand eintragen. ------------------ Gruß Björn
[Diese Nachricht wurde von Dressler am 27. Feb. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 Sie nannten ihn google.
|
erstellt am: 27. Feb. 2006 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für Dressler
|
Iris2 Mitglied CAD-Admin
Beiträge: 1170 Registriert: 17.02.2004 REVIT TEKLA Structures AutoCAD / Soficad ACA Microstation
|
erstellt am: 27. Feb. 2006 13:42 <-- editieren / zitieren --> Unities abgeben: Nur für Dressler
Hallo Björn, auslesen: woraus willst Du die Daten auslesen? (Spezielle Software/Dokumentenverwaltung?) einlesen: Über Blöcke mit Attributen (evt. via skript) Oder hab ich Dich nicht richtig verstanden? ------------------ Gruß Iris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dressler Mitglied technischer Angestellter
Beiträge: 301 Registriert: 19.11.2003 Athlon64 3200+ 2 GB DDR2 NVIDIA Geforce 7600 2x21" CRT Acad 2007
|
erstellt am: 27. Feb. 2006 13:42 <-- editieren / zitieren --> Unities abgeben:
|
Dressler Mitglied technischer Angestellter
Beiträge: 301 Registriert: 19.11.2003 Athlon64 3200+ 2 GB DDR2 NVIDIA Geforce 7600 2x21" CRT Acad 2007
|
erstellt am: 27. Feb. 2006 13:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Iris, ich möchte die Daten aus dem aktuellen Verzeichnis auslesen, also so wie DIR mit Dos. Ich dachte es gibt da vielleicht einen DIESEL Ausdruck für. Ich hab mal eine Datei angehangen, wo man sehen kann wie ich mir das vorstelle. ------------------ Gruß Björn [Diese Nachricht wurde von Dressler am 27. Feb. 2006 editiert.] [Diese Nachricht wurde von Dressler am 27. Feb. 2006 editiert.] [Diese Nachricht wurde von Dressler am 27. Feb. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 28. Feb. 2006 08:02 <-- editieren / zitieren --> Unities abgeben: Nur für Dressler
Hallo Björn, probier mal folgenden Code. Es wird aus dem Verzeichnispfadstring der Teil rausgeschnitten, der links durch "Projekte\\" und rechts durch "\\Zeichnungen" begrenzt ist. Innerhalb des rausgeschnittenen Teils wird der String in die Einzelteile zerlegt, die durch das Zeichen "_" getrennt sind. Die Einzelteile werden in einer Liste ausgegeben. Wenn Du z.B. die Auftragnummer haben möchstest, dann ist es das erste Listenelement der zurückgegebenen Liste => (car(texte)) Code:
(defun texte (/ str str_such str_grenz_links str_grenz_rechts liste) (setq str (getvar "DWGPREFIX") ;;"C:\\Projekte\\Auftragsnummer_Kunde_Projektbezeichnung\\Zeichnungen\\" str_grenz_links "PROJEKTE\\" str_such "_" str_grenz_rechts "\\ZEICHNUNGEN") (setq str (STR_AB str str_grenz_links) str (STR_BIS str str_grenz_rechts)) (while (vl-string-search str_such str) (setq liste (cons (STR_BIS str str_such) liste) str (STR_AB str str_such))) (if (/= str "") (setq liste (cons str liste))) (reverse liste)) (defun STR_AB (str str_such /) (if (vl-string-search str_such (strcase str)) (substr str (+ (+ (vl-string-search str_such (strcase str)) (strlen str_such)) 1)) str)) (defun STR_BIS (str str_such /) (if (vl-string-search str_such (strcase str)) (substr str 1 (vl-string-search str_such (strcase str))) str))
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dressler Mitglied technischer Angestellter
Beiträge: 301 Registriert: 19.11.2003 Athlon64 3200+ 2 GB DDR2 NVIDIA Geforce 7600 2x21" CRT Acad 2007
|
erstellt am: 28. Feb. 2006 10:54 <-- editieren / zitieren --> Unities abgeben:
Hallo Joern, soweit so gut. Ich hab das Lisp unter dem Namen TEXTE.lsp gespeichert. Nun habe ich in der Befehlszeile (car(texte)) eingegeben und bekomme die projektnummer zurück. Wie bekommt man den Text denn in einen Block (Schriftfeld) hinein. Das schriftfeld wird nachträglich in die zeichnung eingefügt und sollte dann möglichst viele Angaben schon ohne tippen eingefügt haben. Was für eine Art von Text es im Schriftfeld ist, wäre egal, denn die Schriftfeldblöcke kann man vorher ja einmal anpassen. Allerdings müsste sich der Block auch beim kopieren in ein anderes Projekt wieder verändern... geht das? Kann man sen Ausdruck der bei (car(texte)) kommt in einem RTEXT ausgeben lassen? ------------------ Gruß Björn [Diese Nachricht wurde von Dressler am 28. Feb. 2006 editiert.] [Diese Nachricht wurde von Dressler am 28. Feb. 2006 editiert.] [Diese Nachricht wurde von Dressler am 28. Feb. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 28. Feb. 2006 11:23 <-- editieren / zitieren --> Unities abgeben: Nur für Dressler
Hallo Björn, also, wenn Du mit einem Block arbeitest, dann kannst Du folgende Funktion verwenden. Code:
(defun c:texte_in_block ( / obj att_name1 att_name2 att_name3 liste att) (setq liste (texte)) (setq att_name1 "PNR" att_name2 "HOEHE" att_name3 "BEM") (if(and(setq obj (car(entsel "\nBitte den Block wählen:"))) (entnext obj)) (progn (setq att obj) (while (/=(cdr(assoc 0(entget (setq att (entnext att)))))"SEQEND") (cond ((=(cdr(assoc 2(entget att)))att_name1) (entmod(subst (cons 1 (car liste))(assoc 1 (entget att))(entget att)))) ((=(cdr(assoc 2(entget att)))att_name2) (entmod(subst (cons 1 (cadr liste))(assoc 1 (entget att))(entget att)))) ((=(cdr(assoc 2(entget att)))att_name3) (entmod(subst (cons 1 (caddr liste))(assoc 1 (entget att))(entget att)))))) (entupd obj)) (alert "Kein Block oder Block ohne Attribute")))
Du mußt aber die Funktion (texte) bereits geladen haben, da diese Funktion darauf zurückgreift. Weiter mußt Du die Attributsnamen Deinem Block anpassen, ich habe als Beispiel die Attributsnamen PNR, HOEHE und BEM verwendet.
------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dressler Mitglied technischer Angestellter
Beiträge: 301 Registriert: 19.11.2003 Athlon64 3200+ 2 GB DDR2 NVIDIA Geforce 7600 2x21" CRT Acad 2007
|
erstellt am: 28. Feb. 2006 11:34 <-- editieren / zitieren --> Unities abgeben:
|