| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Bildreferenzen löschen (3215 mal gelesen)
|
Bernhard GSD Mitglied
Beiträge: 505 Registriert: 29.08.2002 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu)
|
erstellt am: 08. Aug. 2006 16:55 <-- editieren / zitieren --> Unities abgeben:
Ich möchte automatisiert nicht referenzierte Bilder aus Zeichnungen lösen. Hintergrund ist dass sich diese Referenzen beim Einfügen in andere Zeichnungen vererben und picken bleiben bis man sie händisch entfernt. Bei mehrfacher Vererbung können da duzende Bilder unreferenziert in Zeichnungen herumhängen. Daher soll mein Aufräumbefehl (CLEAN, CL) der die Zeichnung prüft, bereinigt, leere Texte löscht usw. auch solche Sachen mitanpacken. Als Zwischenlöung verwende ich folgende Zeile: Code:
(IF (NOT (SSGET "X" '((0 . "IMAGE"))))(COMMAND "_-IMAGE" "_Detach" "*"))
Allerdings funktioniert das nur wenn KEINE Bilder vorkommen, ausserdem werden Bilder die in Blöcken referenziert sind gelöst (da diese nicht erkannt werden) ------------------ Gruß aus Wien Bernhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 08. Aug. 2006 18:47 <-- editieren / zitieren --> Unities abgeben: Nur für Bernhard GSD
|
Bernhard GSD Mitglied
Beiträge: 505 Registriert: 29.08.2002 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu)
|
erstellt am: 09. Aug. 2006 07:51 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von cadffm: reicht dir der Schubs auf die Entwicklerhilfe und das Stichwort "acad_image_dict" (1 Treffer in der Hilfe)
Finde mich damit noch nicht zurecht. ------------------ Gruß aus Wien Bernhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 09. Aug. 2006 08:57 <-- editieren / zitieren --> Unities abgeben: Nur für Bernhard GSD
probier mal das (nicht groß getestete) (defun c:del-images(/ IMAGEDICT OBJS) (if(setq IMAGEDICT(cdr (assoc 350(member '(3 . "ACAD_IMAGE_DICT")(entget (namedobjdict)))))) (progn (setq IMAGEDICT (entget IMAGEDICT)) (entmod(vl-remove-if '(lambda(X)(member(car X)'(3 350)))IMAGEDICT))) ) (princ) ) ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernhard GSD Mitglied
Beiträge: 505 Registriert: 29.08.2002 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu)
|
erstellt am: 09. Aug. 2006 09:13 <-- editieren / zitieren --> Unities abgeben:
|
Bernhard GSD Mitglied
Beiträge: 505 Registriert: 29.08.2002 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu)
|
erstellt am: 09. Aug. 2006 09:21 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 09. Aug. 2006 09:24 <-- editieren / zitieren --> Unities abgeben: Nur für Bernhard GSD
und das? (defun C:CLEARIMAGEDICT() (if(not(vl-catch-all-error-p (setq IMAGEDICT(vl-catch-all-apply 'vla-item (list (vla-get-dictionaries (vla-get-activedocument(vlax-get-acad-object)) ) "acad_image_dict" ) ) ) ) ) (vlax-for ITEM IMAGEDICT (not(vl-catch-all-error-p (vl-catch-all-apply 'vla-delete (list ITEM) ) ) ) ) ) ) ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernhard GSD Mitglied
Beiträge: 505 Registriert: 29.08.2002 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu)
|
erstellt am: 09. Aug. 2006 09:41 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 09. Aug. 2006 13:09 <-- editieren / zitieren --> Unities abgeben: Nur für Bernhard GSD
|
Bernhard GSD Mitglied
Beiträge: 505 Registriert: 29.08.2002 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu)
|
erstellt am: 09. Aug. 2006 13:35 <-- editieren / zitieren --> Unities abgeben:
|
FeR Mitglied
Beiträge: 150 Registriert: 27.10.2003 WinXP latest SP AutoCAD 2008+germanExpressTools SofiCAD, ProVI HP xw4400 CoreDuo 2.4GHz 2GB RAM NVIDIA Quadro NVS 285
|
erstellt am: 19. Jan. 2017 08:29 <-- editieren / zitieren --> Unities abgeben: Nur für Bernhard GSD
Hallo CADmium, ich habe das gleiche Problem wie Bernhard GSD dein ClearImages.VLX funktioniert bei mir jedoch nicht. Ist die Testversion zeitlich begrenzt? Ich habe bis dato immer Deinen veröffentlichten Code verwendet habe nun aber bemerkt, dass ich auch Zeichnungen aufräumen muss wo geladene Bilder nicht gelöscht werden sollen. Für Hinweise wie ich nach nicht gefundenen Images mit Lisp Suchen kann wäre mir auch schon ein Stück weit geholfen. ------------------ mfg FeR "gefundene Rechtschreibfehler dürfen behalten werden." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 19. Jan. 2017 09:36 <-- editieren / zitieren --> Unities abgeben: Nur für Bernhard GSD
Durch CADmium Quellcode oben siehst du ja bereit wo die Bild-Referenz Information steckt. (entget( namedobjdict)) -> ACAD_IMAGE_DICT Nun also alle Bildreferenzen durchgehen, testen ob Datei unter gespeichertem Pfad vorhanden ist, falls nicht, testen ob Bild über Supportpfade/aktuellen Pfad erreichbar ist (also findfile ohne Pfadangabe) und zum Schluss nocht die schöne Möglichkeiten der relativen Pfad berücksichtigen.
Der Teil "wo suche ich nach der Bilddatei" ist die eigentliche Aufgabe für dich, für relative Pfade mußt du also eine "Suchfunktion" entwickeln. Wenn es in keinem Fall gefunden wird, Verweis löschen / siehe CADmium.
------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MKL--CAD Mitglied Technischer Zeichner
Beiträge: 8 Registriert: 03.09.2021
|
erstellt am: 15. Dez. 2022 14:21 <-- editieren / zitieren --> Unities abgeben: Nur für Bernhard GSD
Ich versuche mich auch daran Bilder aus dem Bild-Manager zu löschen die in der Zeichnung nicht mehr verwendet werden. Finde es schon komisch das dass nicht mit dem Befehl bereinigen funktioniert. Arbeite mit Bricscad so man mit VLX Dateien nicht fiel anfangen kann. Besteht vielleicht die Möglichkeit die ursprüngliche lsp Datei in einen der Dateiarten, wie im Anhang zu sehen ist, zu speichern? Arbeite nur gelegentlich mit Lisp und hab schon einen halben Tag gesucht und herumgetestet. Alles was ich gefunden habe führt mich nicht zum Ziel.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |