| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Prüfung, ob XREF vorhanden (1545 mal gelesen)
|
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3701 Registriert: 15.10.2003 Win 10/64 Pro AutoCAD MAP 3D 2018 BricsCAD 22
|
erstellt am: 16. Feb. 2015 19:29 <-- editieren / zitieren --> Unities abgeben:
Ich muss per Lisp prüfen, ob in einer Zeichnung .. a) XRef vorhanden sind und wenn ja, b) ob diese zur Verfügung stehen. Mein Ansatz (Idee): - mit (tblnext "block" ...) alle Blöcke durchgehen - wenn GC 70 Wert 4 enthält: = XRef - suche mit "findfile", ob GC 1 vorhanden ist Kann das klappen oder ist das zu einfach? 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 |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 16. Feb. 2015 20:19 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Kann klappen, aber berücksichtige auch das es Dateien gibt in denen es eine XREF geben kann welche nicht referenziert ist und nehme bei dieser Prüfung den XRef-Namen und nicht den XRef-Dateinamen. Wenn man größere Datenbestände hat sollte man jedoch zu Programmierung in .Net greifen, bei ein paar Hundert oder eben seltenen Abfragen ist aber Lisp ok (Geschwindigkeit). Das bezieht sich natürlich auf den Scan eines Laufwerkes etc, nicht für die aktuelle Datei.
Ansonsten: Auch speziell zu XREF gibt es hier schon den ein oder anderen Code.
------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004 Window 10 ACAD 2021 CIVIL 2021 BricsCAD V14-V22 Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz 16.0GB RAM NVIDIA GeForce GTX 1050<P>
|
erstellt am: 17. Feb. 2015 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Hallo Peter, Deine Variante mit VLA: Code:
(defun c:test ( / ) (vlax-for ITEM (vla-get-blocks(vla-get-activedocument (vlax-get-acad-object))) (if (=(vla-get-isxref ITEM):vlax-true) (setq RetList (cons (vla-get-path ITEM)RetList)))) RetList)
Es wird eine Liste mit den Pfaden zrückgegeben, diese können aber auch relativ sein, oder es steht nur der Name des XREF's. Diese Pfade kannst Du dann mit FINDFILE prüfen. Aber wie Sebastian bereits erwähnt hat, ein XREF im XREF wird damit nicht gefunden. ------------------ viele Grüße Jörn http://www.bosse-engineering.com Bäume stutzen Youtube Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3701 Registriert: 15.10.2003 Win 10/64 Pro AutoCAD MAP 3D 2018 BricsCAD 22
|
erstellt am: 17. Feb. 2015 10:47 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von joern bosse: ...Aber wie Sebastian bereits erwähnt hat, ein XREF im XREF wird damit nicht gefunden.
Ah - jetzt klingelt's. Ich wollte schon nachfragen .. Hier meine Version: Code:
; [XRef-Prüfung] prüfe, ob XRefs der ersten Ebene vorhanden sind (setq blockname (tblnext "block" T)) (while (/= blockname nil) ; prüfe, ob der Block im GC 70 einen Wert 4 (XRef) hat (if (= (logand 4 (cdr (assoc 70 blockname))) 4) (if (not (findfile (cdr (assoc 1 blockname)))) (progn (.....) ) ) ) (setq blockname (tblnext "block")) ); ende while
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 |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004 Window 10 ACAD 2021 CIVIL 2021 BricsCAD V14-V22 Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz 16.0GB RAM NVIDIA GeForce GTX 1050<P>
|
erstellt am: 17. Feb. 2015 11:03 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 17. Feb. 2015 11:11 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
|
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3701 Registriert: 15.10.2003 Win 10/64 Pro AutoCAD MAP 3D 2018 BricsCAD 22
|
erstellt am: 17. Feb. 2015 11:33 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von joern bosse: ...aber im GC 1 kann auch ein relativer Pfad sein: ".\\XREF\\MeinXref.dwg"...
Das habe ich schon getestet - das funktioniert auch ohne Anpassung mit findfile. Zitat: Original erstellt von cadffm: Und ich erwähnte noch XRef-Verweise welche überhaupt nicht referenziert werden ...
Kannst du eine Bsp.-Datei hochladen? 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 |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004 Window 10 ACAD 2021 CIVIL 2021 BricsCAD V14-V22 Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz 16.0GB RAM NVIDIA GeForce GTX 1050<P>
|
erstellt am: 17. Feb. 2015 11:40 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 17. Feb. 2015 11:48 <-- editieren / zitieren --> Unities abgeben: Nur für Peter2
Das habe ich schon getestet - das funktioniert auch ohne Anpassung mit findfile.Auch wenn das Verzeichnis der DWG nicht das (Acad) aktuelle Verzeichnis ist? Cool! <muß ich auch mal irgendwann testen> Zitat:Original erstellt von cadffm: Und ich erwähnte noch XRef-Verweise welche überhaupt nicht referenziert werden ... Kannst du eine Bsp.-Datei hochladen? Du hast nur eine Blockade: Hänge eine XRef an, im Normalfall setzt du ja dann ja eine oder 100e Referenzen der XRef in der Datei ab, nun lösche einfach alle Referenzen der Xref = Xref ohne Referenz (Status=nicht referenziert) ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter2 Ehrenmitglied V.I.P. h.c.
Beiträge: 3701 Registriert: 15.10.2003 Win 10/64 Pro AutoCAD MAP 3D 2018 BricsCAD 22
|
erstellt am: 17. Feb. 2015 12:05 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von cadffm: ..Auch wenn das Verzeichnis der DWG nicht das (Acad) aktuelle Verzeichnis ist?...
Ja. Ich habe irgendeine DWG mit relativer XRef geöffnet - "findfile GC1" - fertig .. Zitat: Original erstellt von cadffm: ...nun lösche einfach alle Referenzen der Xref ...
Ja sag' das doch gleich ... Das hat aber auf den GC keinen Einfluss. Natürlich stimmt dann ev. die Logik "Xref gelöscht - zugehörige DWG vorhanden / nicht vorhanden" nicht zusammen, aber in diesem Fall ist das egal. 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 |