| |
| 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, eine Pressemitteilung
|
Autor
|
Thema: Einsatz (1816 mal gelesen)
|
Petra_Sp Mitglied
Beiträge: 130 Registriert: 28.10.2003 AutoCad 2004 Deutsch AutoCad 2004 Englisch Jetzt auch AutoCad 2006 Deutsch
|
erstellt am: 10. Aug. 2004 14:44 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute vor einer ganzen Weile hab ich mal gefragt um Teile eines Strings und von sehr sehr super Tipps bekommen!! Nun wollte ich etwas Fragen bezüglich einer Antwort von CADmium - Thomas: Folgendes: Diese Funktion schneidet bei einer Anzahl die Verzeichnissen ab. Wie kann ich so eine Funktion einsetzen-benutzen??? Mittels Lisp, Button, Text, oder etwas anderem damit ich mein Ergebnis bekomme???? Der Tag ist schon sehr sehr lange, bitte helft mir! (defun Zchnstr ( VERZEICHNISSE / RETURN) (if (=(type VERZEICHNISSE)'INT) (progn (setq LST (reverse(path->List(getvar "dwgprefix")))) (if (> Verzeichnisse (length LST))(setq Verzeichnisse (length LST))) (setq RETURN (getvar "dwgname")) (setq Index -1) (repeat VERZEICHNISSE (setq RETURN (strcat (nth (setq INDEX(1+ INDEX))LST) "\\" RETURN)) ) ) ) RETURN ) Die Frage mag zwar blöd klingen aber Sorrrrryyyy ich lerne erst dazu!!! Danke für euer Verständnis LG Petra ------------------ LG Petra Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 10. Aug. 2004 14:52 <-- editieren / zitieren --> Unities abgeben: Nur für Petra_Sp
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 10. Aug. 2004 14:52 <-- editieren / zitieren --> Unities abgeben: Nur für Petra_Sp
|
Petra_Sp Mitglied
Beiträge: 130 Registriert: 28.10.2003 AutoCad 2004 Deutsch AutoCad 2004 Englisch Jetzt auch AutoCad 2006 Deutsch
|
erstellt am: 10. Aug. 2004 15:17 <-- editieren / zitieren --> Unities abgeben:
Hallo, Danke für die Antwort Aber ich steh auf der Leitung !!! Ich hab keinen blassen Schimma wie das anstellen soll das ich diesen Pfad kriege-hinschreibt!!!!!? AAHHHH Hoffe ihr habt etwas Geduld mit mir und helft mir dabei Danke Petra ------------------ LG Petra Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 10. Aug. 2004 15:47 <-- editieren / zitieren --> Unities abgeben: Nur für Petra_Sp
Hallo Petra, dann fangen wir mal ganz am Anfang an. Was willst du überhaupt machen? a) Du schreibst gerade ein Lisp-Programm, und willst diesen Code verwenden b) Du willst die Pfadangabe einfach irgendwo in der Zeichnung als Text oder Attributwert, oder oder oder haben Schreib mal ganz genau, was du vorhast! Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Petra_Sp Mitglied
Beiträge: 130 Registriert: 28.10.2003 AutoCad 2004 Deutsch AutoCad 2004 Englisch Jetzt auch AutoCad 2006 Deutsch
|
erstellt am: 11. Aug. 2004 07:23 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger Im vorhinein Danke für deine Mühen und deine Geduld!!! Also gut, wo fang ich an, ach ja genau: 1. Ich hab einen Plankopf mit verschiedenen Attributen der in ungefähr 100 Plänen drinnen ist. 2. Ich hab diese Pfadangabe als ersters mit einem RText und einem String gemacht. Was auch ganz gur geklappt hat mit der Vorraussetzung er hat ACAD 2004 und die Express Tool´s benutzt!! 3. Da das natürlich einige nicht gehabt haben bzw. ich jetzt nicht mehr den ganzen Pfad brauche sondern nur mehr die letzten 2 Ordner und den Namen der Zeichnug muß ich das auf einfachste und schnellste Art in 100 Plänen ändern!! 4. Also dachte ich mir ich verwende diese Funktion so das ich durch Knopfdruck oder z.b. über die Tool Palette nur diesen String in jeden Plankopf reinschreibe-einfüge. So brauch ich nicht jeden einzelnen Plankopf neu einfügen und sämtliche Texte darin neu schreiben. Aufmachen muß ich den Plan so oder so da ich darin Änderungen habe und ich das dann im gleichen aufwasch machen könnte. Ich hoffe ich hab´s halbwegs verständlich erklärt und du kannst mir dabei helfen diese Problem zu lösen!!! Vielen Dank im vorraus Petra b) Du willst die Pfadangabe einfach irgendwo in der Zeichnung als Text oder Attributwert, oder oder oder haben
------------------ LG Petra Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Petra_Sp Mitglied
Beiträge: 130 Registriert: 28.10.2003 AutoCad 2004 Deutsch AutoCad 2004 Englisch Jetzt auch AutoCad 2006 Deutsch
|
erstellt am: 11. Aug. 2004 08:27 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 11. Aug. 2004 09:11 <-- editieren / zitieren --> Unities abgeben: Nur für Petra_Sp
Hallo Petra, ganz so einfach ist dein Problem nicht zu lösen, denn die im Block augenscheinlich als Text enthaltenen RTEXT-Elemente müssen in der Blockdefinition durch Text-Elemente ersetzt werden, damit diese dann im AutoCAD ohne ETools erkannt werden. Das kann man entweder manuell mit Referenz bearbeiten machen, was natürlich relativ aufwendig ist, wenn man das in 100 Zeichnungen machen muß, und zum anderen hast du dann immernoch nicht die Pfadangabe im Text stehen, was dann zusätzlich eingetragen werden muss. Mit einem Lisp-Tool könnte man beides auch als Knopfdrucklösung realisieren. Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Petra_Sp Mitglied
Beiträge: 130 Registriert: 28.10.2003 AutoCad 2004 Deutsch AutoCad 2004 Englisch Jetzt auch AutoCad 2006 Deutsch
|
erstellt am: 13. Aug. 2004 10:44 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe USER Nach ziemlich viel grübeln und Kopfzerbrechen hab ich nichts zustande Gebracht mein Problem zu lösen. 1. Den Dateinamen ganz einfach mit dieser Funktion (siehe 1. Beitrag) nur als Text wiederzugeben, so das er mir das letzte Verzeichnis und den Dateinamen wiedergibt!!! Wie setzte ich so eine Funktion überhaupt ein wenn ich sie nicht mit einem Befehl aufrufen kann?!?! Oder muß ich das in ein Lisp einbauen und irgendwie dann ansprechen. Wenn ja wie funktioniert das?? 2. Für die Zukunft: mittels einem Attribut die Pfadangabe zu bekommen. Aber so das ich es jederzeit falls es gewünscht wird es ganz einfach und schnell ändern kann!! (entweder ganze Pfadangabe oder eben eventuel. nur Dateiname oder letzten 2 Verzeichnis wo es gespeichert ist.) Ich denke da evtl. an ein Lisp Programm oder dergleichen der mir dieses Atribut bei Bedarf einfügt bzw. es mir überschreibt sprich das alte ersetzt. Ich hab keine Ahnung ob das recht aufwendig ist oder nicht aber vielleicht hat ja jemand so etwas in der Art schon. Ich hoffe es kann mir jemand weiterhelfen Danke mfg Petra ------------------ LG Petra Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 13. Aug. 2004 11:00 <-- editieren / zitieren --> Unities abgeben: Nur für Petra_Sp
Schau dir mal den Thread hier an. du brauchst die sub (defun UPDATE-Title-Block... und die sub (defun Zchnstr ... Dann machste dir deinen Plankof mit einem Attribut "VERZEICHNIS" und nutzt das Lisp. Die Befehlsroutine ist dann bloß : (defun c:UPDATE-Title-Block () (UPDATE-Title-Block nil "VERZEICHNIS" (Zchnstr 2)) (command "_.regen") ) ------------------ - Thomas -
[Diese Nachricht wurde von CADmium am 13. Aug. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 13. Aug. 2004 11:17 <-- editieren / zitieren --> Unities abgeben: Nur für Petra_Sp
Hallo Petra, Ergänzend zu CADmiums Posting:
Code:
(defun c:PIA (/ dwgpath dwg2path dwgverz) (setq dwgverz (cdr (reverse (f:str-teilen (setq dwgpath (getvar "DWGPREFIX")) "\\") ) ) dwg2path (apply 'strcat (mapcar '(lambda (S) (strcat S "\\") ) (reverse (if (> (length dwgverz) 2) (list (car dwgverz) (cadr dwgverz)) dwgverz ) ) ) ) ) (alert (strcat "Ganzes Verzeichnis:\n" dwgpath "\nletzen 2 Verzeichnisse:\n" dwg2path "\nDateiname:\t" (getvar "DWGNAME") ) ) ) (defun f:str-teilen (sil_str sil_tr / sil_i sil_str1 sil_trli) (setq sil_i 0) (if (= 'STR (type sil_str)) (progn (while (< sil_i (strlen sil_str)) (setq sil_i (1+ sil_i) sil_str1 (substr sil_str sil_i 1) ) (if (= sil_str1 sil_tr) (setq sil_trli (cons sil_i sil_trli)) ) ) (setq sil_trli (reverse sil_trli) sil_z 0 ) (apply 'append (mapcar '(lambda (P / z) (setq sil_z (1+ sil_z)) (cond ((and (= sil_z (length sil_trli)) (= sil_z 1) ) (list (substr sil_str 1 (1- P)) (substr sil_str (1+ P)) ) ) ((= sil_z 1) (list (substr sil_str 1 (1- P))) ) ((= sil_z (length sil_trli)) (list (substr sil_str (setq z (1+ (nth (- sil_z 2) sil_trli))) (- P z) ) (substr sil_str (1+ P)) ) ) (T (list (substr sil_str (setq z (1+ (nth (- sil_z 2) sil_trli))) (- P z) ) ) ) ) ) sil_trli ) ) ) ) )
Daraus solltest du etwas machen können, was dann zumindest für neue Blöcke mit einem Attribut funktionieren kann. Für die 100 Zeichnungen, in denen noch die RTEXT-Elemente enthalten sind, ist hier jetzt keine Lösung dabei. Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 13. Aug. 2004 11:28 <-- editieren / zitieren --> Unities abgeben: Nur für Petra_Sp
Zitat: Original erstellt von Petra_Sp: ... 1. Den Dateinamen ganz einfach mit dieser Funktion (siehe 1. Beitrag) nur als Text wiederzugeben, so das er mir das letzte Verzeichnis und den Dateinamen wiedergibt!!! Wie setzte ich so eine Funktion überhaupt ein wenn ich sie nicht mit einem Befehl aufrufen kann?!?! Oder muß ich das in ein Lisp einbauen und irgendwie dann ansprechen. Wenn ja wie funktioniert das??
Schau dir bitte noch einmal Link in CADmiums ersten Beitrag an. Zitat: Original erstellt von Petra_Sp: 2. Für die Zukunft: mittels einem Attribut die Pfadangabe zu bekommen. Aber so das ich es jederzeit falls es gewünscht wird es ganz einfach und schnell ändern kann!! (entweder ganze Pfadangabe oder eben eventuel. nur Dateiname oder letzten 2 Verzeichnis wo es gespeichert ist.) Ich denke da evtl. an ein Lisp Programm oder dergleichen der mir dieses Atribut bei Bedarf einfügt bzw. es mir überschreibt sprich das alte ersetzt. Ich hab keine Ahnung ob das recht aufwendig ist oder nicht aber vielleicht hat ja jemand so etwas in der Art schon. ...
Petra, ich denke du solltest dich mit den Grundlagen der AutoLISP-Programmierung beschäftigen. Ich habe die Befürchtung dass dir die Hilfen hier allesamt nicht viel bringen werden. Die Grundlagen, wie man Funktionen in Lisp schreibt, diese untereinander aufruft usw, die wirst du dir selbst aneignen müssen, das ist hier im Forum einfach zu viel verlangt, diese als Lehrstunde zu vermitteln. Helfen können dir dabei die in diesem Thread genannten Seiten. ... und wenn du dann konkrete Fragen hast, wird dir heir sicher auch gerne geholfen. Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Petra_Sp Mitglied
Beiträge: 130 Registriert: 28.10.2003 AutoCad 2004 Deutsch AutoCad 2004 Englisch Jetzt auch AutoCad 2006 Deutsch
|
erstellt am: 14. Aug. 2004 17:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, danke mal an alle für eure Antworten 1. Frage an CADmium: Ich hab versucht genau wie du Beschrieben hast mir so ein Attribut namens "VERZEICHNIS" zu bauen! Nur zu sicherheit, sollte dieses Attribut irgendwelche Einstellungen haben?? Wie z.b.: einen Häckchen beim Modus Unsichbar, Konstant, Prüfen oder Vorwahl haben?? Mal abgesehen davon schreibt er mir wenn ich das Lisp starte immer: Command: UPDATE-Title-Block ; error: no function definition: PATH->LIST und macht sonst eigentlich nichts. Ich hab die Datei mal rangehängt vielleicht hab ich ja einen Fehler darin!?! Vielleicht kannst du sie dir mal anschauen und mir dabei hekfen den Fehler zu finden!! 2. Frage an Brischke Wenn ich das richtig interpretiere schreibt mir dein Lisp File eine Auto Cad Message mit dem ganzen Verzeichnis und noch mit den 2 letzten Verzeichnissen und dem Dateinamen!! Ich danke euch für eure Hilfe mfg Petra p.s. Da ich mich mit LISP nur in meiner Freizeit beschäftigen kann und ein Kurs nicht gerade günstig ist wenn man ihn selber zahlt. Ich bin eher auf selbst lernen dem Internet und dem Forum angewiesen mein Wissen zu erweitern drum sind auch meine Fortschritte eher bescheiden. Leider
------------------ LG Petra Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 15. Aug. 2004 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für Petra_Sp
Ähmmm... darf ich dich auf diesen Thread verweisen?! Da du es warst, der damals gefragt hatte, habe ich Path->List nicht mehr explizit erwähnt, diese Funktion brauchst du natürlich auch noch! P.S. was gefällt dir eigentlich nicht an Fuchsi's Antworten betreffs RTEXT? ------------------ - Thomas - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Petra_Sp Mitglied
Beiträge: 130 Registriert: 28.10.2003 AutoCad 2004 Deutsch AutoCad 2004 Englisch Jetzt auch AutoCad 2006 Deutsch
|
erstellt am: 15. Aug. 2004 14:51 <-- editieren / zitieren --> Unities abgeben:
Hallo CADmium Danke für deine Antwort und das du dir am Sonntag dafür Zeit genommen hast!!! 1. Das mit dem RText ist so eine Sache. Für den ständigen Gebrauch ist es super in einem Plankopf, aber wehe man muß mal so etwas in einigen Planköpfen ändern weil irgend jemand auf einmal nur mehr die letzten beiden Verzeichnisse und den Dateinamen haben!!?? Dann ist so etwas mit einem Attribut und Lisp-File Kombination einfacher zu lösen. 2. Irgendwie funktioniert das Lisp File noch nicht richtig. Er schreibt mir blos immer nur "dwg" in das Attribut anstatt die letzten 2 Verzeichnisse und den dwg Namen der Zeichnung hinein. Hab ich was übersehen?? Hab das Lisp File mal angehängt. Danke lg Petra ------------------ LG Petra Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 16. Aug. 2004 07:57 <-- editieren / zitieren --> Unities abgeben: Nur für Petra_Sp
Hallo Petra, du hast dir zuviel kopiert, denn die SUB-Funktion (Zchnstr...) ist in deiner Datei 2x definiert, wobei die zuletzt geladene genommen wird, bei dir die Falsche. Ich habe auch mal Cadmiums und meinen Ansatz gewürfelt. In dem von mir erstellten Block gibt es nun 2 Attribute VERZEICHNIS und VERZEICHNISKURZ. Im Lisp sind 2 Befehle c:UPDATE-Title-Block_ohneDateiname c:UPDATE-Title-Block_mitDateiname Es werden also die Attribute entweder mit oder ohne Dateinamen ausgefüllt. Ich habe allerdings die verwendete SUB-Funktion noch etwas erweitert, so dass du, je nach dem mit welchem Parameter du diese aufrufst, auch noch andere Varianten des Verzeichnis oder Dateinamen ermitteln kannst.
Code:
MODE: "PFAD" - nur Verzeichnis "FULLNAME" - Verzeichnis + Dateiname "DWGNAME" - nur Dateiname "PFADKURZ" - nur letzten 2 Verzeinisse "SHORTNAME" - nur letzten 2 Verzeinisse + Dateiname
Ich denke mal, das hilft dir weiter. Wenn du Fragen zum Code hast, dann trau dich diese hier zu posten. Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Petra_Sp Mitglied
Beiträge: 130 Registriert: 28.10.2003 AutoCad 2004 Deutsch AutoCad 2004 Englisch Jetzt auch AutoCad 2006 Deutsch
|
erstellt am: 16. Aug. 2004 09:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger Ja genau so was hab ich gesucht!!!! VIELEN VIELEN DANK Betreff CODE, werd ich mir das in den nächsten Tag (wenn weniger zu tun ist) in Ruhe durchgehen, falls ich fragen habe werd ich sicher auf das Angebot zurückkommen!!! DANKE Jetzt brauch ich nur mehr das sich das Lisp File automatisch bei jedem Plotten oder speichern automatisch updatet. Das glaube ich bekomme ich hin mal sehen!! Bin guter Hoffnung. Nochmals vielen vielen Dank ------------------ LG Petra Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |