| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Daten für IMAGE über DXF auswerten (906 mal gelesen)
|
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 07. Sep. 2004 11:29 <-- editieren / zitieren --> Unities abgeben:
In einer (Beispiel)Zeichnung zeigt mir der "Bildmanager" 6 Bilder; 4 haben den Status "nicht referenziert" 1 ist "geladen" 1 ist nicht gefunden Die beiden letzten bekomme ich mit (ssget "_X" '((0 . "IMAGE"))) raus, aber ich hätte gerne über Autolisp aus 100ten Zeichnungen die Information, die auch im Bildmanager steht: - Name des Bildes - Pafdangabe des Bildes - Status (siehe oben) Wo sind diese Infos gespeichert, gibt es eventuell ein Tool? Danke Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 07. Sep. 2004 11:40 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Guck mal auch hier. Zu beachten ist, das (ssget "_x"..) nur das aktuelle Layout absucht. Schöner ist vielleicht: (vlax-for LAYOUT (vla-get-layouts(vla-get-activedocument(vlax-get-acad-object))) (vlax-for ITEM (setq BLOCK (vla-get-Block LAYOUT)) (if(=(strcase(vla-get-objectname ITEM)) (strcase "AcDbRasterImage")) (progn ;; oder hier , welche informationen du willst (vlax-dump-object ITEM) (princ "\n\n") ) ) ) ) ------------------ - Thomas - 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: 07. Sep. 2004 12:03 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Zitat: Original erstellt von Peter2: ...aber ich hätte gerne über Autolisp aus 100ten Zeichnungen ...
Einfachste Lösung, du schreibst ein Script, welches dir die Zeichnungen öffnet und dann die Lispdatei lädt und dann auch startet. Somit brauchst du nicht über Lisp die ganzen Zeichnungen durchhecheln. Brauchst also nur ein Tool, welches dir die Infos aus einer Zeichnung in z.B. eine ASCII-Datei schreibt. Eine Erleichterung wäre noch, dass du ein Programm schreibst, welches dir das Script schreibt. Im Kern brauchst du dazu die Befehle: open close write-line vl-directory-files ... und natürlich die Code-Zeilen der Tools, die in Cadmiums Beitrag bzw in dem Beitrag, auf den CADmium hingewiesen hat, zu finden sind. 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 |
Schachinger Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2041 Registriert: 08.04.2002
|
erstellt am: 07. Sep. 2004 12:09 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Zitat: Original erstellt von CADmium: [B... Zu beachten ist, das (ssget "_x"..) nur das aktuelle Layout absucht...[/B]
also bei mir bekomm ich einen auswahlsatz der unabhängig von layout/modellbereich ist... oder wär das eine besonerheit bei images?? *grübel* hab diverse lisproutinen die mit ssget linien/texte in mehreren layouts behandeln.... funkt auch. ------------------ mfg Siegfried Schachinger http://www.tbschatz.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Schachinger Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2041 Registriert: 08.04.2002 AIS2009, PDSU 2012-2015, Plant 3D 2011-2015, NavisWorks 2010-2015, Win7 64bit SP1, Intel Core i7 870, 16 GB RAM, Quadro 2000D
|
erstellt am: 07. Sep. 2004 12:12 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
|
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 07. Sep. 2004 12:18 <-- editieren / zitieren --> Unities abgeben:
Herzlichen Dank an beide für die rasche Antwort: @Holger: Das Script habe ich passabel im Griff. Zu deinem Programm eine Frage: Bei Zeichnungen, die in die DWG hybrid geladen sind, wird der IMGFILE_PATH zu "", und (vl-filename-extension IMGFILE_PATH) wird zu NIL. Damit bleibt er bei Strcat hängen. Aber das nur als Anmerkung - für mich reicht der Code bis dorthin. @Thomas: wie immer blitzschnell, leistungsstark und kompakt. Mein Problem sind meine Lücken in den vlax-Funktionen und die Frage, wie ich die aus dem DUMP die Info IMAGEFILE und NAME als String herauskriege. @beide: Die Bilder mit Status "nicht referenziert" (also gar nicht da ..) werden hier nicht gefunden. Kann man die irgendwie auflisten (für Ausgabe in eine Datei)? Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 07. Sep. 2004 12:21 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Zitat: Original erstellt von Schachinger: also bei mir bekomm ich einen auswahlsatz der unabhängig von layout/modellbereich ist... oder wär das eine besonerheit bei images?? *grübel*hab diverse lisproutinen die mit ssget linien/texte in mehreren layouts behandeln.... funkt auch.
.. na dann streich das, hab da was verwechselt..
------------------ - Thomas - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 07. Sep. 2004 12:36 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Zitat: Original erstellt von Peter2: .. wie ich die aus dem DUMP die Info IMAGEFILE und NAME als String herauskriege...
z.B. (auch wenn die Variablenzuordnung in der Schleife keinen Sinn macht) (vlax-for LAYOUT (vla-get-layouts(vla-get-activedocument(vlax-get-acad-object))) (vlax-for ITEM (setq BLOCK (vla-get-Block LAYOUT)) (if(=(strcase(vla-get-objectname ITEM)) (strcase "AcDbRasterImage")) (progn (setq NAME (vla-get-name ITEM)) (setq FILE (vla-get-ImageFile ITEM)) ) ) ) )
------------------ - Thomas - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3849 Registriert: 15.10.2003
|
erstellt am: 07. Sep. 2004 13:16 <-- editieren / zitieren --> Unities abgeben:
Moin, lass dir drücän ... - optimal. Mit der Schleife schreibe ich dann Name und Pfad in eine Protokolldatei - supääääär Peter ------------------ Für jedes Problem gibt es eine einfache Lösung. Die ist aber meistens falsch. ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |