Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Prüfung, ob XREF vorhanden

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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 (1540 mal gelesen)
Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 16. Feb. 2015 20:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

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.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Hallo Peter,
aber im GC 1 kann auch ein relativer Pfad sein: ".\\XREF\\MeinXref.dwg". Dann kannst Du für FINDFILE noch die Varialbe (getvar "DWGPREFIX")voranstellen, vorher natürlich den Punkt entfernen.

------------------
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

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 17. Feb. 2015 11:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Und ich erwähnte noch XRef-Verweise welche überhaupt nicht referenziert werden  
Damit meinte ich jetzt nicht ENTFERNTE, die es ja auch noch geben würde - falls das extra interessiert.


------------------
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.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von joern bosse an!   Senden Sie eine Private Message an joern bosse  Schreiben Sie einen Gästebucheintrag für joern bosse

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

Zitat:

Das habe ich schon getestet - das funktioniert auch ohne Anpassung mit findfile.

Ist ja cool, hatte ich vorher nie ausprobiert, aber man lernt ja nie aus

------------------
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

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 17. Feb. 2015 11:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Peter2 10 Unities + Antwort hilfreich

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.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz