| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Hyperlink Attribut (2200 mal gelesen)
|
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 10. Feb. 2011 13:30 <-- editieren / zitieren --> Unities abgeben:
Servus Ich hab mehrere Blöcke mit dem Attribut Hyperlink in dem steht das Layout das angezeigt werden soll. Hab im Netz dieses LISP gefunden, es wandelt den Inhalt von Attribut Hyperlink zu einen Hyperlink um. Blöder weise erkennt er nicht das es sich dabei um eine "Ansicht dieser Zeichnung handelt" (AdZh). Hab das (strcat "#," hinzugefügt, jetzt erkennt er nach aufrufen von Hyperlink bei gewählten Objekt das es ein AdZh ist. Code: (defun c:BLK_Attribut2Hyperlink ( / ss ) (vl-load-com) ;; © JM 2010(if (ssget '((0 . "INSERT") (66 . 1))) (progn (vlax-for obj (setq ss (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)) ) ) (mapcar (function (lambda ( x ) (if (eq "HYPERLINK" (strcase (vla-get-TagString x) )) (vla-Add (vla-get-Hyperlinks obj) (strcat "#," (vla-get-Textstring x))) ) ) ) (vlax-invoke obj 'GetAttributes) ) ) (vla-delete ss) ) ) (princ) )
------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. "Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark Bernd P. Sport ist Mord Rekorde: Scalelist>11727, Fehler>34365, Layerfilter>XXXX Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
domda0 Mitglied
Beiträge: 149 Registriert: 21.04.2004
|
erstellt am: 11. Feb. 2011 10:53 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Hi, hab genau ein solches lsp gesucht, funkt. auch einwandfrei. Bei mir handelt es sich um hyperlinks die auf verschiedene Internetseiten zeigen. Da sich diese Seiten (Attribut Hyperlink) allerdings ändern können (dynamisch), sollte sich der hyperlink auch aktualisieren nicht nur neu setzen lassen, lässt sich das auch realisieren? Danke schon mal vorab, Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
domda0 Mitglied
Beiträge: 149 Registriert: 21.04.2004 ACAD 2014
|
erstellt am: 11. Feb. 2011 21:57 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Hallo zusammen, hab das lisp gefunden welches nicht nur die hyperlinks setzt sondern bei Änderung des Attributtextes auch "updatet" falls es jemand benötigt (allerdings ohne die Funkt. mit den AdZh) Code: (defun c:sethl ( / ss hyp ) (vl-load-com) ;; © Lee Mac 2010 (if (ssget '((0 . "INSERT") (66 . 1))) (progn (vlax-for obj (setq ss (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)) ) ) (mapcar (function (lambda ( x ) (if (eq "HYPERLINK" (strcase (vla-get-TagString x))) (progn (vlax-for h (setq hyp (vla-get-Hyperlinks obj)) (vla-delete h) ) (vla-Add hyp (vla-get-Textstring x)) ) ) ) ) (vlax-invoke obj 'GetAttributes) ) ) (vla-delete ss) ) ) (princ) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 15. Feb. 2011 16:02 <-- editieren / zitieren --> Unities abgeben:
schön für dich aber das hilft mir nicht weiter.... ------------------ <----- Bitte Systeminfo eintragen, warum siehst du hier. "Warum Einfach es geht auch kompliziert". Schöne Grüsse aus der Steiermark Bernd P. Sport ist Mord Rekorde: Scalelist>11727, Fehler>34365, Layerfilter>XXXX Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FBrueck Mitglied Vermessungstechniker
Beiträge: 27 Registriert: 13.04.2010
|
erstellt am: 17. Feb. 2011 08:21 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 17. Feb. 2011 08:23 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
|
FBrueck Mitglied Vermessungstechniker
Beiträge: 27 Registriert: 13.04.2010
|
erstellt am: 17. Feb. 2011 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Danke CADmium! klappt super, aber mein eigentliches Problem ist, daß ich keine Ahnung von AutoLISP habe... Also, der Reihe nach: Ich dokumentiere ein grosses Kabelbau-Projekt, dabei sind Teile der Verlegung als Bohrung ausgeführt, die in Protokollen als PDF dokumentiert sind. Der Kunde wünscht, daß diese PDF's aus der DWG als Hyperlink aufrufbar sind. Die PDF-Namen unterscheiden sich nur in der Bohr-Nummer, die ein Block-Attribut ist, also müsste ich einen Link setzen, der aus 2 Strings und dem Att-Wert besteht, etwa so: Zitat: (vla-Add hyp ".\Bohrprotokolle\Bohrung_" (vla-get-Textstring x) ".pdf")
Obiger Code führ aber dazu, daß als Link nur [.pdf] gesetzt wird. Also: Wie übergebe ich der Funktion vla-Add diese Liste? Im Moment habe ich den Code in der Form:
Code: (defun c:sethl ( / ss hyp ) (vl-load-com) ;; © Lee Mac 2010 (if (ssget '((0 . "INSERT") (66 . 1))) (progn (vlax-for obj (setq ss (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object)) ) ) (mapcar (function (lambda ( x ) (if (eq "NUMMER" (strcase (vla-get-TagString x))) (progn (vlax-for h (setq hyp (vla-get-Hyperlinks obj)) (vla-delete h) ) (vla-Add hyp ".\Bohrprotokolle\Bohrung_" (vla-get-Textstring x) ".pdf") ) ) ) ) (vlax-invoke obj 'GetAttributes) ) ) (vla-delete ss) ) ) (princ) )
LG Frederik [Diese Nachricht wurde von FBrueck am 17. Feb. 2011 editiert.] [Diese Nachricht wurde von FBrueck am 17. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11
|
erstellt am: 17. Feb. 2011 11:36 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Die Zeichenkette muss mit strcat (sting concatenation) zuvor zusammengefasst werden zu einem String (vla-Add hyp (strcat ". \\Bohrprotokolle \\Bohrung_" (vla-get-Textstring x) ".pdf") )[EDIT] und statt Backslash \ muss in Pfadangaben bei LISP ein Doppelbackslasch geschrieben werden \\, alternativ geht auch ein normaler Slash /. ------------------ Mit freundlichem Gruß
Udo Hübner www.CAD-Huebner.de [Diese Nachricht wurde von CAD-Huebner am 17. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FBrueck Mitglied Vermessungstechniker
Beiträge: 27 Registriert: 13.04.2010
|
erstellt am: 17. Feb. 2011 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für Bernd P
Vielen, Vielen Dank!! Jetzt klappt's, und wie! (400 Hyperlinks in einer Zeichnung setzen innerhalb von 3 min , das soll mal einer nachmachen von Hand... Immer wieder schön, wohin einen gesunde Faulheit führen kann. Frederik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |