| |
![](https://ww3.cad.de/php/image.php?resolution=width:20050) | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Hyperlink vom Text (360 / mal gelesen)
|
xem Mitglied Zeichner
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für xem](/foren/ubb/pmimages/gbu.gif) Beiträge: 854 Registriert: 07.08.2008 Software: AutoCAD 2022 - 64bit Windows 10 Pro - 64bit PDFCreator 1.0.2 - 32bit Ghostscript 9.0 - 64bit PDF-XChange Viewer - 64bit GIMP 2.6.8 - 64bit MS Office 2013 - 32bit Opera 12 - 32bit MacroX - 32bit 7-zip - 64bit ----------------------- Hardware: Intel i5 680 3,6GHz @ 4GHz 8GB RAM 1333MHz nVidia GTX 460 1024MB Intel SSD 2.5 80GB X25-M Samsung SyncMaster 245B+ Iiyama ProLite E1900s Logitech mx518 Logitech G11 Roccat Sense Glacier Blue
|
erstellt am: 27. Okt. 2023 15:42 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif)
Hallo, auf der Suche nach einer Möglichkeit den Textinhalt von einem Text in einen Hyperlink zu bekommen, bin ich >hier< fündig geworden. Ich habe den Code auch so geladen, es funktioniert aber nicht. Ich gebe den Befehl "updatefield" ein und wähle den Text aus. Dann kommt als Rückmeldung "1 Schriftfeld(er) gefunden. 1 Schriftfeld(er) aktualisiert." Der Hyperlink wurde aber nicht verändert. Der Befehl "updatefield" ist doch ein AutoCAD Befehl und ist dann der Code eine Ergänzung dazu oder wie soll das funktionieren?
Code: (defun updatefield (/ s str) ;; RJP » 2019-08-07 (cond ((setq s (ssget "_X" '((0 . "mtext,text") (1 . "@:\*.dwg*")))) (regapp "PE_URL") (setq str (strcat (getvar 'dwgprefix) (getvar 'dwgname))) (foreach x (vl-remove-if 'listp (mapcar 'cadr (ssnamex s))) (entmod (append (entget x) (list (list -3 (list "PE_URL" (cons 1000 str) '(1002 . "{") (cons 1000 str) '(1002 . "{") '(1071 . 1) '(1002 . "}") '(1002 . "}") ) ) ) ) ) ) (vla-regen (vla-get-activedocument (vlax-get-acad-object)) acAllViewports) ) ) (princ) ) ;; Update on drawing open (updatefield) ;; COMMAND REACTOR (or *fieldpathreactor* (setq *fieldpathreactor* (vlr-command-reactor nil '((:vlr-commandwillstart . strtcmd)))) ) ;; Update on publish or print (defun strtcmd (calling-reactor strtcmdinfo) (and (wcmatch (car strtcmdinfo) "*PLOT*,*PUBLISH*") (updatefield)) (princ) )
------------------ Error in Layer 8 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif) ![](/foren/ubb/Admin4.gif) ![](/foren/ubb/Admin5.gif) ![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif)
![](/foren/avatars/cadffm.gif)
![Schreiben Sie einen Gästebucheintrag für cadffm](/foren/ubb/pmimages/gbu.gif) Beiträge: 22171 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 27. Okt. 2023 18:06 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für xem
Hi, ich habe deinen Post samt Code überflogen, hoffentlich nicht zu fix:
>>"auf der Suche nach einer Möglichkeit den Textinhalt von einem Text in einen Hyperlink zu bekommen, bin ich >hier< fündig geworden." Das Thema passt. >>"Ich habe den Code auch so geladen, es funktioniert aber nicht." Ich bin sicher er funktioniert, halte es daher für wahrscheinlich das du etwas anderes suchst/erwartest. >>"Ich gebe den Befehl "updatefield" ein und wähle den Text aus." >>"Dann kommt als Rückmeldung "1 Schriftfeld(er) gefunden. 1 Schriftfeld(er) aktualisiert." >>"Der Hyperlink wurde aber nicht verändert" 1. Beim Laden der Datei wird die Funktion bereits einmal ausgeführt, da du darüber nicht verwundert bis, erwartest du vermutlich etwas anderes von der Funktion. 2. Zweitens, das hast du bereits selbst beantwortet: >>"Der Befehl "updatefield" ist doch ein AutoCAD Befehl" Genau, du hast einen Standard AutoCAD-Befehl gestartet, welcher rein gar-nichts mit dem Code zutun hat! Aber wie gesagt, beim laden der Datei wird die Funktion bereits 1x ausgeführt. Lispfunktionen (defun c:IRGENDWAS - So wird mit Lisp eine Funktion definiert, welche auch als AutoCAD-Befehl zur Verfügung stehen soll. Man kann also wie den Befehl LINIE oder KREIS, dann auch IRGENDWAS eingeben zum starten. (defun IRGENDWAS - So, ohne das "c:", definiert man Lispfunktion welche nicht als AutoCAD-Befehl zur Verfügung gestellt werden. Möchte man eine Lispfunktion ausführen, so gehören die Klammern dazu. (IRGENDWAS) oder (C:IRGENDWAS)
Der Code macht folgendes: 1. Suche alle Texte und MTexte welche einen Textwert nach dem Muster "@:\*.dwg*" haben (Achtung, GROSSkleinSchreibung beachten / das ist auch noch ein Bug in dem Code m.M.n.) 2. Erstelle/Ändere an jedem dieser Objekte einen Hyperlink mit dem Ziel=Die Datei in welcher du und die (M)Texte gerade sind.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xem Mitglied Zeichner
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für xem](/foren/ubb/pmimages/gbu.gif) Beiträge: 854 Registriert: 07.08.2008 Software: AutoCAD 2022 - 64bit Windows 10 Pro - 64bit PDFCreator 1.0.2 - 32bit Ghostscript 9.0 - 64bit PDF-XChange Viewer - 64bit GIMP 2.6.8 - 64bit MS Office 2013 - 32bit Opera 12 - 32bit MacroX - 32bit 7-zip - 64bit ----------------------- Hardware: Intel i5 680 3,6GHz @ 4GHz 8GB RAM 1333MHz nVidia GTX 460 1024MB Intel SSD 2.5 80GB X25-M Samsung SyncMaster 245B+ Iiyama ProLite E1900s Logitech mx518 Logitech G11 Roccat Sense Glacier Blue
|
erstellt am: 30. Okt. 2023 08:45 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif)
Guten Morgen, so macht der Start in die Woche doch Spaß. Danke für die Erklärung. Ja wenn man weiß wie der Code funktioniert, funktioniert er auch. Was meinst du mit Zitat: Achtung, GROSSkleinSchreibung beachten / das ist auch noch ein Bug in dem Code m.M.n
? Der Text soll doch 1:1 übernommen werden und da ist die GROSSkleinSchreibung doch egal. ? Dann habe ich noch einen Text in einem Block "Planrahmen", wo der Code nicht funktioniert. Damit er da auch funktioniert muss doch sicher bei setq s mit definiert werden, dass auch Blöcke gesucht werden. Reicht das dann schon? Irgendwie muss ja in den Block noch reingegangen werden und nicht nur ausgewählt werden. Danke ------------------ Error in Layer 8 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif) ![](/foren/ubb/Admin4.gif) ![](/foren/ubb/Admin5.gif) ![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif)
![](/foren/avatars/cadffm.gif)
![Schreiben Sie einen Gästebucheintrag für cadffm](/foren/ubb/pmimages/gbu.gif) Beiträge: 22171 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 30. Okt. 2023 09:34 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für xem
Moin, >>"Der Text soll doch 1:1 übernommen werden und da ist die GROSSkleinSchreibung doch egal. ?" Was das Übernehmen angeht, JA. Aber wohin soll er es denn übernehmen? Du hast 100 Texte, zwei sollen den Hyperlink zur aktuellen Datei bekommen. Frage: Woher soll das Programm wissen das es zwei sind und woher soll es wissen welche zwei von den hundert? In dem Programm ist das aktuell so geregelt: 1. Suche alle Texte und MTexte welche einen Textwert nach dem Muster "@:\*.dwg*" haben
Wenn also genau die beiden Texte einen Textwert enthalten welcher "@:\*.dwg*" entspricht, dann wird dort der Hyperlink ergänzt/geändert. Ein Text "123" oder "abc" würde das also nicht betreffen, einen Text "C:\abc123.DWG" AUCH NICHT, "C:\abc123.dwg" hingegen schon - dort würde ein Hyperlink gesetzt werden. >>"Dann habe ich noch einen Text in einem Block "Planrahmen", wo der Code nicht funktioniert." Die AutoCAD Objektwahl und auch SSGET können nur nach Toplevel Objekten suchen, bei Änderungen in Blöcken muß man ganz anders vorgehen und die Blocktabelle durchlaufen. Beispielcode, überall wo es um 'in allen Blöcken'(Blockdefinitionen) geht, egal ob man da löscht, Farbe ändert oder sonstiges.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xem Mitglied Zeichner
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für xem](/foren/ubb/pmimages/gbu.gif) Beiträge: 854 Registriert: 07.08.2008 Software: AutoCAD 2022 - 64bit Windows 10 Pro - 64bit PDFCreator 1.0.2 - 32bit Ghostscript 9.0 - 64bit PDF-XChange Viewer - 64bit GIMP 2.6.8 - 64bit MS Office 2013 - 32bit Opera 12 - 32bit MacroX - 32bit 7-zip - 64bit ----------------------- Hardware: Intel i5 680 3,6GHz @ 4GHz 8GB RAM 1333MHz nVidia GTX 460 1024MB Intel SSD 2.5 80GB X25-M Samsung SyncMaster 245B+ Iiyama ProLite E1900s Logitech mx518 Logitech G11 Roccat Sense Glacier Blue
|
erstellt am: 30. Okt. 2023 10:28 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif)
Die GROSSkleinSchreibung habe ich jetzt verstanden. Die bezieht sich auf die Suche und nicht wie ich dachte auf den Text. Zum Text in Block ändern. Wie funktioniert da im allgemeinen so ein Code? Kann man sagen "Suche Block Planrahmen" und dann lasse den Code ablaufen? Ich habe da kein Plan wie man da rangeht. Die Codes im Forum verstehe ich auch nicht wirklich. Was ich vermuten würde ist erst mal den Block suchen mit if und dann mit progn den Code ablaufen lassen? ------------------ Error in Layer 8 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif) ![](/foren/ubb/Admin4.gif) ![](/foren/ubb/Admin5.gif) ![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif)
![](/foren/avatars/cadffm.gif)
![Schreiben Sie einen Gästebucheintrag für cadffm](/foren/ubb/pmimages/gbu.gif) Beiträge: 22171 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 30. Okt. 2023 11:25 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für xem
>>"Kann man sagen "Suche Block Planrahmen"Blockdefinitionen braucht man nicht suchen, man kann direkt darauf zugreifen (bei dynamischen Blöcken ist das Thema aber wieder aufwändiger)(entget(tblobjname "BLOCK" "Planrahmen")) Außer man weiß nicht um welche Blöcke es geht, dann untersucht man einfach jeden Block ob es ein Kandidat ist oder nicht. AutoLisp-Funktion TBLNEXT passt da ganz gut. Falls ja, durchsucht man jedes darin enthaltene Objekt und wenn das den Kriterien entspricht (hier also vielleicht ein Text mit dem Wert "@:/*.dwg"), DANN kann man *wasauchimmer* damit machen. In deinem Fall: Einen Hyperlink anhängen/ändern. >>"und dann lasse den Code ablaufen?" Was den Kern des Codes angeht - Ja, aber nicht die Objektwahl und somit: Nein, das geht so nicht. Quick&Dirty würde das gehen, denn man kann ja auch Blöcke im BEDIT öffnen und dort ist der Text ja "Toplevel", aber das ist Murks.
>>"Ich habe da kein Plan wie man da rangeht. Die Codes im Forum verstehe ich auch nicht wirklich." Ich würde auch eher empfehlen mit den Basics zu beginnen statt an so einer Stelle quer einzusteigen, ist zwar toll wenn man da schnell etwas erreicht hat, aber Ahnung hat man dann noch immer nicht :-/
>>"und dann mit progn den Code ablaufen lassen?" Progn ist nur eine Hilfsfunktion für den Fall das man mehrere Ausdrucke zusammenfassen möchte, weil zum Beispiel einige Funktionen nur einen Ausdruck akzeptieren oder man auch nur die letzte Rückgabe erhalten möchte.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xem Mitglied Zeichner
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für xem](/foren/ubb/pmimages/gbu.gif) Beiträge: 854 Registriert: 07.08.2008 Software: AutoCAD 2022 - 64bit Windows 10 Pro - 64bit PDFCreator 1.0.2 - 32bit Ghostscript 9.0 - 64bit PDF-XChange Viewer - 64bit GIMP 2.6.8 - 64bit MS Office 2013 - 32bit Opera 12 - 32bit MacroX - 32bit 7-zip - 64bit ----------------------- Hardware: Intel i5 680 3,6GHz @ 4GHz 8GB RAM 1333MHz nVidia GTX 460 1024MB Intel SSD 2.5 80GB X25-M Samsung SyncMaster 245B+ Iiyama ProLite E1900s Logitech mx518 Logitech G11 Roccat Sense Glacier Blue
|
erstellt am: 30. Okt. 2023 13:20 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif)
Ich habe es jetzt mal den Code mit einem Schriftfeld getestet und da funktioniert es nicht. Es ist jetzt auch nicht wichtig, sondern nur ein nice to have. Damit sollte der Pfad der DWG Datei im PDF als Hyperlink enthalten sein und mit einem Klick könnte man die DWG dann öffnen. Wenn mal mehr Zeit ist werde ich mich weiter dran versuchen, aber vielen lieben Dank schon mal für die Hilfe und Erklärungen. ------------------ Error in Layer 8 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif) ![](/foren/ubb/Admin4.gif) ![](/foren/ubb/Admin5.gif) ![](/foren/ubb/Admin1.gif) ![](/foren/ubb/Admin2.gif) ![](/foren/ubb/Admin3.gif)
![](/foren/avatars/cadffm.gif)
![Schreiben Sie einen Gästebucheintrag für cadffm](/foren/ubb/pmimages/gbu.gif) Beiträge: 22171 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 30. Okt. 2023 14:00 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif) Nur für xem
>>"Ich habe es jetzt mal den Code mit einem Schriftfeld getestet und da funktioniert es nicht."Eigentlich sollte es auch funktionieren wenn der Inhalt durch ein Schriftfeld dargestellt wird, aber es gibt da wohl imo einen Bug in ACAD! Du hast mit einem TEXT getestet, richtig? Mit einem MText hätte es funktioniert! Die AutoCAD-Objektwahlmöglichkeiten, inkl. ssget, schlagen alle* fehl im Falle von Schriftfeldanzeigen im TEXTobjekt (*ausser die Schnellauswahl). Teste es noch einmal, nur damit du es gesehen hast, mit einem MTEXT. Ich sehe da noch einen kleinen Schönheitsfehler neben dem GROSSkleinSchreibung, wenn auch in der praxis sicher recht irrelevant: (1 . "@:\*.dwg") würde auch "a:\\\123#dwg" oder "o:!dwg" als gültig erkennen, besser wäre da zumindest (1 . "@:\\*`.dwg*,@:\\*`.DWG") Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
xem Mitglied Zeichner
![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif) ![](/foren/ubb/star3.gif)
![Schreiben Sie einen Gästebucheintrag für xem](/foren/ubb/pmimages/gbu.gif) Beiträge: 854 Registriert: 07.08.2008 Software: AutoCAD 2022 - 64bit Windows 10 Pro - 64bit PDFCreator 1.0.2 - 32bit Ghostscript 9.0 - 64bit PDF-XChange Viewer - 64bit GIMP 2.6.8 - 64bit MS Office 2013 - 32bit Opera 12 - 32bit MacroX - 32bit 7-zip - 64bit ----------------------- Hardware: Intel i5 680 3,6GHz @ 4GHz 8GB RAM 1333MHz nVidia GTX 460 1024MB Intel SSD 2.5 80GB X25-M Samsung SyncMaster 245B+ Iiyama ProLite E1900s Logitech mx518 Logitech G11 Roccat Sense Glacier Blue
|
erstellt am: 30. Okt. 2023 16:12 <-- editieren / zitieren --> Unities abgeben: ![1 Unity (wenig hilfreich, aber dennoch)](/foren/ubb/z1.gif) ![2 Unities](/foren/ubb/z2.gif) ![3 Unities](/foren/ubb/z3.gif) ![4 Unities](/foren/ubb/z4.gif) ![5 Unities](/foren/ubb/z5.gif) ![6 Unities](/foren/ubb/z6.gif) ![7 Unities](/foren/ubb/z7.gif) ![8 Unities](/foren/ubb/z8.gif) ![9 Unities](/foren/ubb/z9.gif)
Zitat: Du hast mit einem TEXT getestet, richtig?
Ja Zitat: Mit einem MText hätte es funktioniert!
Ja Oh Mann, wahrscheinlich weißt du auch schon meine nächsten Fragen warum wieder etwas nicht funktioniert ... ------------------ Error in Layer 8 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |