Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  entmod und ändern des x-ref-pfades?

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:  entmod und ändern des x-ref-pfades? (3862 mal gelesen)
Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
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: 21. Sep. 2004 15:44    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

hallo lispprofis!
ich versuche gerade mir ein lisp zu schreiben mit dem ich automatisch alle xref-pfade bearbeiten kann. mittels "projectname" und eingetragenen "suchpfaden für projektdateien" kann man die x-refpade ja relativ eintragen. bei einem suchpfad mit "c:\temp\" wird dann aus "c:\temp\zeichnung1.dwg" "\zeichnung1.dwg". bisher hab ich das immer händisch im xref-manager erledigt.

zuerst hab ich versucht das ganze über die befehlszeile von _-xref zu machen - nur leider egal wie ichs drehe und wende wird dort kein relativer pfad ohne c:\temp\ aktzeptiert.
gut - jetzt hab ich mich ein bisschen schlau gemacht und versuch gerade das erste mal mit entmode/entupd und vlax-invoke-method etc. zu arbeiten.

rausgekommen ist dabei bis jetzt mal das:

Code:

(defun c:del_projpath (/ ins path-list a ins-ent)
  (vl-load-com)
  (setq ins (tblnext "BLOCK" T))
  (setq path-list (pa_str-tok (vlax-invoke-method (vla-get-files(vla-get-preferences(vlax-get-acad-object))) 'GetProjectFilePath (getvar "projectname")) ";"))
  (while (/= ins NIL)
    (foreach path path-list
      (if (/= (assoc 1 ins) NIL)
(if (/= (vl-string-search path (cdr (assoc 1 ins))) NIL)
  (progn
    (setq a (vl-string-subst "" path (cdr (assoc 1 ins))))
    (setq ins-ent (subst (cons 1 a) (assoc 1 ins) ins))
    (entmod ins-ent)
    (entupd (tblobjname "block" (cdr (assoc 2 ins))))
    )
  )
)
      )
    (setq ins (tblnext "BLOCK"))
    )
  )

(defun pa_str-tok(str c / tmp)
  (if(/= str "")
    (progn
      (setq tmp(pa_str-div str c))
      (append(list(car tmp))(pa_str-tok(cadr tmp)c))
      )
    )
  )

(defun pa_str-div(str c / i l )
  (setq i 1)
  (setq l(strlen str))
  (while(and(<= i l)(/=(substr str i 1)c))
    (setq i(1+ i))
    )
  (list(substr str 1(1- i))(substr str(1+ i)))
  )



aus:
Code:

((0 . "BLOCK") (2 . "Eindüsung-Vorschlag") (70 . 36) (10 0.0 0.0 0.0) (1 . "C:\\temp\\eindüsung-vorschlag.dwg") (-2 . <Objektname: 40080ec8> ))

sollte dann
Code:

((0 . "BLOCK") (2 . "Eindüsung-Vorschlag") (70 . 36) (10 0.0 0.0 0.0) (1 . "\\eindüsung-vorschlag.dwg") (-2 . <Objektname: 40080ec8> ))

werden.
entmod wirft mir immer NIL zurück - warum? 

das problem dürfte in diesen zeilen liegen:

Code:

(setq a (vl-string-subst "" path (cdr (assoc 1 ins))))
(setq ins-ent (subst (cons 1 a) (assoc 1 ins) ins))
(entmod ins-ent)

kann mir irgendjemand einen tipp geben? wie gesagt das ist das erste mal das ich mit entmod und vla-befehlen arbeite - ich schätz mal daß da wo der hund begraben ist.

übrigends: ich hoffe dieses kleine tool kann dann noch jemand anders auch gebrauchen  mir würde es jedenfalls viel arbeit ersparen.

------------------
mfg Siegfried Schachinger
http://www.tbschatz.at

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: 21. Sep. 2004 16:14    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 Schachinger 10 Unities + Antwort hilfreich

offtopic / Lisp
unabhängig von deinen Problemen:

Projectname und relative Pfadangaben haben nicht miteinander zutun !

Dieser Zusammenhang ist mir gerade "quer" gekommen, sorry.

man definiert damit lediglich zusätzliche SUCHpfade..

------------------
       
Bitte Systemdaten eintragen (siehe links unter dem Namen), wie & warum siehst du HIER

[Diese Nachricht wurde von cadffm am 21. Sep. 2004 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 21. Sep. 2004 16:17    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 Schachinger 10 Unities + Antwort hilfreich

2 Sachen :

gib mal
(vlax-dump-object(vlax-ename->vla-object(car(entsel)))'T)
ein und klick ein Xref an

und dann folgendes eingeben und ein Xref anklicken.

(vlax-dump-object
  (vla-item
    (vla-get-blocks
      (vla-get-activedocument
        (vlax-get-acad-object)
      )
    ) 
    (cdr(assoc 2(entget(car(entsel)))))
  ) 
'T
)

woraus folgt, das der Path nicht am Block, sondern an der Referenz hängt.
Das nur mal auf die schnelle 5 min vor Feierabend 

------------------
- Thomas -

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
Registriert: 08.04.2002

erstellt am: 21. Sep. 2004 20:45    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

@cadffm
war eine schlechte wortwahl hast recht  ich sollte doch lieber die äpfel äpfel sein lassen und die birnen birnen 

hm ok jetzt hab ich zumindest das mal geschnallt - aber ich steh noch immer mächtig auf der leitung  - ich hab allein für die zeile:
(vlax-invoke-method (vla-get-files(vla-get-preferences(vlax-get-acad-object))) 'GetProjectFilePath (getvar "projectname"))
schon ne stunde gebraucht weils meine erste zeile war wo die für mich noch gefürchteteten "vla-get-blabla" etc. drinnnen waren 
wie kann ich den beschi**enen pfad ändern? ich kriegs einfach nicht gebacken....

------------------
mfg Siegfried Schachinger
http://www.tbschatz.at

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 22. Sep. 2004 09:17    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 Schachinger 10 Unities + Antwort hilfreich

so, mal zum auseinanderklamüseren:

(defun xref->relpath (XREF / PATH RELPATH)
  (if(and(setq XREF(cond
                     ((=(type XREF) 'VLA-object) XREF)
                     ((=(type XREF) 'Ename) (vlax-ename->vla-object XREF))
                   ) 
         )            
         (not(vl-catch-all-error-p
               (setq Path(vl-catch-all-apply
                           'vla-get-path
                           (list XREF)
                         )
               )
             ) 
         )
         (setq RELPATH (strcat(cadr(fnsplitl PATH))(caddr(fnsplitl PATH))))
         (or(findfile RELPATH)
            (findfile(strcat(getvar "DWGPREFIX")RELPATH))
         )
     )
    (if(not(vl-catch-all-error-p
               (setq RETURN(vl-catch-all-apply
                             'vla-put-path
                             (list XREF
                                  RELPATH
                             )     
                           )
               )
           ) 
       )
       'T
       RETURN
    )
  )   
)

(defun c:allxrefs->relpath( / AUSWAHL INDEX)
  (if(setq AUSWAHL(ssget "_x" '((0 . "INSERT"))))
    (progn
      (setq INDEX -1)
      (repeat (sslength AUSWAHL) 
        (xref->relpath (ssname AUSWAHL (setq INDEX(1+ INDEX))))   
      )
    )
  )
)

.. läßt sich auch so erweitern, das wenn xref nicht im relativen Pfad gefunden, diese dann in den aktuellen Zeichnungspfad kopiert wird usw ..

------------------
    - Thomas -
Bei 99% aller Problemen ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben.

[Diese Nachricht wurde von CADmium am 22. Sep. 2004 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Schachinger
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2040
Registriert: 08.04.2002

erstellt am: 22. Sep. 2004 18: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

hallo thomas!
danke erstmal!  bis ich den code verstanden habe werden wohl noch einige abendstunden vergehen  aber schlafen kann ich ja später mal 

------------------
mfg Siegfried Schachinger
http://www.tbschatz.at

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

stolti
Mitglied
technischer zeichner


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

Beiträge: 373
Registriert: 05.09.2007

auto_cad 2008
athena 2008
DELL Precision PWS390
Intel Core2 CPU 6600
2gb RAM
2.40 GHz

erstellt am: 08. Jul. 2008 13:43    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 Schachinger 10 Unities + Antwort hilfreich

hallo leute.

die xref->relpath ist genau das was ich suchen würde.

allerdings wenn ich den befehl ausführe macht er eigentlich gar nichts.
also keine fehlermeldung, keine anzeige im textfenster, gar nichts.

auch der xref-pfad ist nicht relativ.

was mach ich denn da falsch?

danke

stolti

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 08. Jul. 2008 14: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 Schachinger 10 Unities + Antwort hilfreich


XREFRELATIV.VLX.txt

 
Den alten Code guck ich mir jetzt nicht mehr genauer an, sorry, ...du kannst aber mal das Teil im Anhang probieren ...

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



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

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 08. Jul. 2008 14:27    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 Schachinger 10 Unities + Antwort hilfreich

Hi Stolti,
Du musst auch den Befehl hinter c: ausführen: allxrefs->relpath
-> x-refs wählen...
- dann läuft's (vielleicht (hab's nicht getestet, sieht aber nicht schlecht aus)).


------------------
Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

      http://www.voxelman.de

[Diese Nachricht wurde von wronzky am 08. Jul. 2008 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

stolti
Mitglied
technischer zeichner


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

Beiträge: 373
Registriert: 05.09.2007

auto_cad 2008
athena 2008
DELL Precision PWS390
Intel Core2 CPU 6600
2gb RAM
2.40 GHz

erstellt am: 08. Jul. 2008 15:21    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 Schachinger 10 Unities + Antwort hilfreich

(defun C:xref->relpath (XREF / PATH RELPATH)
  (if(and(setq XREF(cond
                    ((=(type XREF) 'VLA-object) XREF)
                    ((=(type XREF) 'Ename) (vlax-ename->vla-object XREF))
                  ) 
        )           
        (not(vl-catch-all-error-p
              (setq Path(vl-catch-all-apply
                          'vla-get-path
                          (list XREF)
                        )
              )
            ) 
        )
        (setq RELPATH (strcat(cadr(fnsplitl PATH))(caddr(fnsplitl PATH))))
        (or(findfile RELPATH)
            (findfile(strcat(getvar "DWGPREFIX")RELPATH))
        )
    )
    (if(not(vl-catch-all-error-p
              (setq RETURN(vl-catch-all-apply
                            'vla-put-path
                            (list XREF
                                  RELPATH
                            )     
                          )
              )
          ) 
      )
      'T
      RETURN
    )
  )   
)

(defun c:allxrefs->relpath( / AUSWAHL INDEX)
  (if(setq AUSWAHL(ssget "_x" '((0 . "INSERT"))))
    (progn
      (setq INDEX -1)
      (repeat (sslength AUSWAHL) 
        (xref->relpath (ssname AUSWAHL (setq INDEX(1+ INDEX))))   
      )
    )
  )
)

so sieht der code in der lisp aus...
den befehl erkennt er auch einwandfrei.

komisch.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 08. Jul. 2008 15:24    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 Schachinger 10 Unities + Antwort hilfreich

hier so : (defun C:xref->relpath (....)

und hier so :

(xref->relpath (ssname AUSWAHL (setq INDEX(1+ INDEX))))

wie soll das funktionieren?

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



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

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 08. Jul. 2008 15: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 Nur für Schachinger 10 Unities + Antwort hilfreich

Hi,
nim doch mal den Code von Thomas HIER, ohne "c:" vor xref->relpath und führe allxrefs->relpath aus. (s.o.)

Grüsse, Henning

------------------
Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

  http://www.voxelman.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

stolti
Mitglied
technischer zeichner


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

Beiträge: 373
Registriert: 05.09.2007

auto_cad 2008
athena 2008
DELL Precision PWS390
Intel Core2 CPU 6600
2gb RAM
2.40 GHz

erstellt am: 08. Jul. 2008 17:34    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 Schachinger 10 Unities + Antwort hilfreich

(defun xref->relpath (XREF / PATH RELPATH)
  (if(and(setq XREF(cond
                    ((=(type XREF) 'VLA-object) XREF)
                    ((=(type XREF) 'Ename) (vlax-ename->vla-object XREF))
                  ) 
        )           
        (not(vl-catch-all-error-p
              (setq Path(vl-catch-all-apply
                          'vla-get-path
                          (list XREF)
                        )
              )
            ) 
        )
        (setq RELPATH (strcat(cadr(fnsplitl PATH))(caddr(fnsplitl PATH))))
        (or(findfile RELPATH)
            (findfile(strcat(getvar "DWGPREFIX")RELPATH))
        )
    )
    (if(not(vl-catch-all-error-p
              (setq RETURN(vl-catch-all-apply
                            'vla-put-path
                            (list XREF
                                  RELPATH
                            )     
                          )
              )
          ) 
      )
      'T
      RETURN
    )
  )   
)

(defun c:allxrefs->relpath( / AUSWAHL INDEX)
  (if(setq AUSWAHL(ssget "_x" '((0 . "INSERT"))))
    (progn
      (setq INDEX -1)
      (repeat (sslength AUSWAHL) 
        (xref->relpath (ssname AUSWAHL (setq INDEX(1+ INDEX))))   
      )
    )
  )
)

Die hab ich jetzt reingeladen.
jetzt kommt wenigstens als meldung nil.
allerdings kann ich am x-ref nichts feststellen.
kann das daran liegen, dass ich bei "gefunden in" den pfad angegeben habe?

danke

stolti

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 08. Jul. 2008 18:34    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 Schachinger 10 Unities + Antwort hilfreich

  
Zitat:
Original erstellt von stolti:

kann das daran liegen, dass ich bei "gefunden in" den pfad angegeben habe?

wo hast du was genau eingetragen? ....

Das schon probiert?

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

stolti
Mitglied
technischer zeichner


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

Beiträge: 373
Registriert: 05.09.2007

auto_cad 2008
athena 2008
DELL Precision PWS390
Intel Core2 CPU 6600
2gb RAM
2.40 GHz

erstellt am: 08. Jul. 2008 23:06    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 Schachinger 10 Unities + Antwort hilfreich

werd ich probieren.

ich muss die vlx so runterladen...
und per appload laden?
(es steht nämlich dahinter das txt kürzel)
das wird wohl sehr einfach sein, aber ich kenn mich nicht aus.

was muss ich dann machen?
der befehl heisst dann "xrefrelativ"?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 09. Jul. 2008 07: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 Schachinger 10 Unities + Antwort hilfreich

Ja, Anhang downloaden , in .vlx (z.b. im Explorer) umbenennen (also Endung .txt entfernen) und dann wie in diesem PDF beschrieben laden. Nach dem Laden wird in der Kommandozeile (+Textfenster) eine Meldung augegeben, wo auch der Befehlsaufruf genannt wird.

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

stolti
Mitglied
technischer zeichner


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

Beiträge: 373
Registriert: 05.09.2007

auto_cad 2008
athena 2008
DELL Precision PWS390
Intel Core2 CPU 6600
2gb RAM
2.40 GHz

erstellt am: 09. Jul. 2008 08:51    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 Schachinger 10 Unities + Antwort hilfreich

der nennt mir das automatisch um.
wenn ich die lade (per appload) kennt er den befehl nicht.

nochmal zur lisp:
an was könnte das liegen dass das nicht funktioniert?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 09. Jul. 2008 08:59    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 Schachinger 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von stolti:
der nennt mir das automatisch um.

wohl im Explorer "Dateiendungen ausblenden" angehakt?  


und das Lisp relativiert den Pfad nicht, sondern kürzt ihn ein, wobei das Xref im Zeichnungsverzeichnis gefunden werden muß.
Die Vlx relativiert richtig.
------------------
      - 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

stolti
Mitglied
technischer zeichner


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

Beiträge: 373
Registriert: 05.09.2007

auto_cad 2008
athena 2008
DELL Precision PWS390
Intel Core2 CPU 6600
2gb RAM
2.40 GHz

erstellt am: 09. Jul. 2008 09:07    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 Schachinger 10 Unities + Antwort hilfreich

genau. =)

ist jetzt geladen.
den befehl erkennt er allerdings immer noch nicht.
also es kommt auch keine info im textfenster wenn ich acad starte.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 09. Jul. 2008 09:21    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 Schachinger 10 Unities + Antwort hilfreich

Die Meldung kommt nach dem laden des Tools ..z.b. durch Drag&Drop der vlx-Datei aus dem Explorer in die aktuelle Zeichnung. Nach einen ACAD-Neustart gibts das Tool natürlich nicht automatisch im Namespace der aktuellen Zeichnung.
Aber das alles steht im Grunde in der weiter oben verlinkten anleitung

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

stolti
Mitglied
technischer zeichner


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

Beiträge: 373
Registriert: 05.09.2007

auto_cad 2008
athena 2008
DELL Precision PWS390
Intel Core2 CPU 6600
2gb RAM
2.40 GHz

erstellt am: 09. Jul. 2008 09:36    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 Schachinger 10 Unities + Antwort hilfreich

das tool hab ich geladen - sogar in die startgruppe eingefügt.

es sagt auch "xrefrelativ" erfolgreich geladen.

allerdings steht nichts in der befehlszeile oder im textfenster.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 09. Jul. 2008 09:38    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 Schachinger 10 Unities + Antwort hilfreich

Der Befehlsaufruf ist auf jeden Fall : XREFRELATIV


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

stolti
Mitglied
technischer zeichner


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

Beiträge: 373
Registriert: 05.09.2007

auto_cad 2008
athena 2008
DELL Precision PWS390
Intel Core2 CPU 6600
2gb RAM
2.40 GHz

erstellt am: 09. Jul. 2008 18: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 Nur für Schachinger 10 Unities + Antwort hilfreich

ich hab jetzt die datei nochmal runtergeladen
das txt hinten entfernt
mit appload geladen und in die startgruppe eingefügt.

es kommt dann im apploadfenster die meldung xrefelativ erfolgreich geladen.

wenn ich dann acad neu starte kommt aber keine meldung dass die datei geladen wurde, die kommt auch nicht wenn die die vlx normal über appload lade.
der befehl ist ebenfalls nicth definiert.

komisch.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Ehrenmitglied V.I.P. h.c.
Straßen- / Tiefbau



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

Beiträge: 8075
Registriert: 09.03.2006

sw:
Win7-x64
Office 365 ProPlus
C3D (& LT )
ET; DACH; Extensions
-------------------
hw:
FX3800
i5 CPU 670
8GB RAM

erstellt am: 09. Jul. 2008 18:55    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 Schachinger 10 Unities + Antwort hilfreich

Hallo stolti,
dann machst Du definitiv was falsch.
Zwischenfrage: Warum startest Du ACAD zwischendrin neu?

Ich habe es jetzt auf 2 Rechnern ausprobiert:
- Datei runterladen (7. Beitrag dieses threads)
- Im Win-Explorer aus XREFRELATIV.VLX.txt ein XREFRELATIV.VLX gemacht
- im ACAD ao (appload) getippt
- Datei ausgewählt
- Laden
- Sowohl im Dialogfenster des Appload als auch in der Befehlszeile erscheint "APPLOAD XREFRELATIV.VLX erfolgreich geladen."
- Appload Fenster schließen
- Im Textfenster (Befehlszeile) erscheint 

Zitat:
Befehl:

XREFRELATIV: Setzt - wenn möglich - den Pfad aller in der Zeichnung
            gefundener XREFS realtiv zum Pfad der Zeichnung
(C) Thomas Krüger (tk@cad-od.de) /  www.cad-od.de
!!!! TESTVERSION !!!!

Befehlszeilenaufruf :  XREFRELATIV



- XREFRELATIV eingetippt
- MessageBox erscheint, je nach Situation
a) Zeichnung wurde noch nicht gespeichert
b) keine XRefs in der Zeichnng gefunden
c) is mir jetzt zu lang, halt die programmierte Erfolgsmeldung ;-)

Prüfe bitte, was DU anders machst und probier es mal genau nach dieser Anleitung, also ohne Startgruppe und ohne Neustart.

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

System-Info     Excel -Suche    RuA-Suche     FAQ-ACAD     Hilfe zu CAD.de 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

stolti
Mitglied
technischer zeichner


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

Beiträge: 373
Registriert: 05.09.2007

auto_cad 2008
athena 2008
DELL Precision PWS390
Intel Core2 CPU 6600
2gb RAM
2.40 GHz

erstellt am: 09. Jul. 2008 22: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 Nur für Schachinger 10 Unities + Antwort hilfreich

hier zu haus klappts einwandfrei.

verflucht.

danke an euch alle. =)

stolti 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

macrophon
Mitglied
Architekt


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

Beiträge: 24
Registriert: 10.11.2008

erstellt am: 19. Okt. 2009 18:37    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 Schachinger 10 Unities + Antwort hilfreich

Hallo,

ich habe gerade gleiches Problem und probiere da nun schon den ganzen Tag dranherum.
Die Anleitung von runkelruebe bin ich im detail durchgegangen. an einer neuen Datei mit angehängter xref (vollständiger pfad) kommt folgende Fehlermeldung nach Eingabe von XREFRELATIV:
Zitat:

Befehl: ao
APPLOAD XREFRELATIV.VLX erfolgreich geladen.
Befehl:
Ihr Anforderungscode : $jZbxldfyap++ZLb-MPOb_OXV++o!z-WXHQLc-HV
Geben sie den Lizenz-Schlüssel für das Tool ein <Abbruch>: *Abbruch*
Befehl:
Befehl: XREFRELATIV
*Abbruch*
Befehl:
Befehl:
Befehl: no function definition: C:XREFRELATIV

Weiß jemand, wie man das tool zum Laufen bekommt?

Über jede Hilfe dankbar!!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 19. Okt. 2009 19: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 Nur für Schachinger 10 Unities + Antwort hilfreich

Zitat:
Befehl:

XREFRELATIV: Setzt - wenn möglich - den Pfad aller in der Zeichnung
            gefundener XREFS realtiv zum Pfad der Zeichnung
(C) Thomas Krüger (tk@cad-od.de) /  www.cad-od.de
!!!! TESTVERSION !!!!

Befehlszeilenaufruf :  XREFRELATIV


Kontaktier mal den Autor - ist ne Testversion vom Vorjahr

------------------
Schöne Grüße
Ernst

www.geopaint.at

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bikerholic
Mitglied
Bauzeichner Straßenbau


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

Beiträge: 123
Registriert: 06.02.2009

XP Professional SP2
Intel Pentium x86 2.40GHz
1GB-Ram, Maxtor 60GB
NVIDIA GeForce4 MX 420 mit 64MB
AutoCAD 2005&2008&2010(Civil3D)+SP2+Expresstools
google und ich san beste freunde ;)

erstellt am: 21. Okt. 2009 15:56    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 Schachinger 10 Unities + Antwort hilfreich

hallo macrophon

nur mal sooo in den raumgeworfen vieleicht wäre ja der referenzmanager auch was für die bewältigung dieses problems
zufinden unter: start > programme > autodesk > acad-version > referenzmanager 

gruß björn 

------------------
Wenn Arbeit etwas schoenes und erfreuliches waere,
haetten die Reichen sie nicht den Armen ueberlassen.
[Paul Lafargue]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bikerholic
Mitglied
Bauzeichner Straßenbau


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

Beiträge: 123
Registriert: 06.02.2009

XP Professional SP2
Intel Pentium x86 2.40GHz
1GB-Ram, Maxtor 60GB
NVIDIA GeForce4 MX 420 mit 64MB
AutoCAD 2005&2008&2010(Civil3D)+SP2+Expresstools
google und ich san beste freunde ;)

erstellt am: 21. Okt. 2009 17:12    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 Schachinger 10 Unities + Antwort hilfreich

und hier nochwas für die allgemeinheit bzw. die nachwelt 

hab ich im autodesk forum gefunden --> hier

da es aus dem englisch sprachigen rum kommt muss man drauf achten das in der lisp die befehle auch alle übersetzt werden
daher hab ich aus (command "._xref" "path"  das gemacht (command "._xref" "_path"
die nachfolgende lisp ist darauf hin schon geändert 

Code:

;; RelativeXrefs by Joe Burke

;; Bug reports may be sent to me directly at lowercase@hawaii.rr.com.
;; Program updates will be posted at www.theswamp.org  under
;; "Show your stuff" in a topic named "Relative xref paths".

;; PROGRAM NOTES:

;; The standard disclaimer applies. Use at your own risk...

;; In general it's important to understand how relative paths work
;; before using this program.

;; Please be aware the program is potentially dangerous in the sense
;; relative repathing from one drive to another may cause pointing to
;; unexpected files in cases where duplicate files exist on different
;; drives and similar conditions.

;; The shortcut is REX.

;; Tested with 2002, 2004, 2006 and 2008. Should work with 2000,
;; but not tested.

;; Thanks to Steve Doman and Jason Piercey for their help.

;; The program works with unloaded xrefs, unlike other similar routines
;; I've seen.

;; It does not deal with raster image references. I may add support
;; for those later.

;; Reloading an xref can cause associative dimensions/leaders to do
;; strange things. Something to watch for. If it happens, undo
;; and change such dimensions to non-associative.

;; The program may take a long time depending on the number of xrefs,
;; how many are reloaded and the size of reloaded files.

;; Possible scenarios where RelativeXrefs might be useful.

;; First:
;; A project uses relative paths but all paths are not relative.
;; Convert full paths to relative assuming an xref can be found somewhere
;; along its orignal path. If not the original path remains.
;; Note, nested xrefs are not repathed because the path is determined within
;; the parent file. Run the program on the parent file and save it. Then
;; reload the parent in the active file to update nested paths.
;; There is at least one case where the path of nested xrefs will change
;; in the active file. If the parent xref was "not found" and the program
;; finds it, the parent is repathed. That may update nested paths.

;; Second:
;; A project begins as a group of files in one folder. Eventually the number
;; of files involved requires sub-folder organization and you want to use
;; relative paths. Repath as needed using full paths. Then convert full paths
;; to relative.

;; Third:
;; All project files are kept in a single folder so xrefs are found
;; without a path. Some xrefs may have a full path which isn't used.
;; The program removes such paths leaving just the file name as the path.

;; VERSION HISTORY

;; Version 1.0 - first beta version 12/31/2007.

;; Version 1.1 - revised the XrefsData function 1/3/2008.

;; Version 1.2 - revised 1/5/2008.
;;  Changed the name of the XrefLoaded function to XrefIsLoaded.
;;  Changed its method of testing loaded or not.
;;  Changed the XrefsData function to return the xref block name
;;  at the end of each list so the reload and report calls are
;;  cosmetically correct in terms of the actual xref block name.

;; Version 1.3 - revised 1/8/2008.
;;  Removed the front end question about reload xrefs.
;;  Uses the xref command "path" rather than "reload".
;;  Removed checking for xref is loaded, not need now.
;;  Revised the XrefsData function per above.
;;  This version should be faster.
;;  Also cleaner in terms the report at the end.
;;  Added report regarding number of nested xrefs found.
;;  Added a check near the end regarding an xref which should
;;  have been repathed, but possibly was not.

;; Version 1.4 - revised 1/12/2008.
;;  Added the Spinbar function with message, Searching for xrefs...

;; Version 1.5 - revised 2/22/2008.
;;  Removed the FileName sub-function. Added the SpinWait function so
;;  the spinbar will work with some files where it otherwise does not.
;;  Added error checking in the XrefSearch sub-function.
;;  Fixed a bug which occured with 2004 and earlier versions. In those
;;  versions an xref block definition does not have a Path property.


(defun c:RelativeXrefs ( / *error* doc blocks cnt datalst strlst str
                          xpath xname reportlst nestcnt PathList
                          XrefsData XrefSearch Spinbar SpinWait)

  (defun *error* (msg)
    (cond
      ((not msg))
      ((wcmatch (strcase msg) "*QUIT*,*CANCEL*"))
      (T (princ (strcat "\nError: " msg)))
    )
    (setvar "cmdecho" 1)
    (vla-EndUndoMark doc)
    (princ)
  ) ;end error

;;;; START SUB-FUNCTIONS ;;;;

  ;; Argument: path string
  ;; Returns the path portion as a list of strings in reverse order.
  ;; (setq s "..\\..\\Common ABC\\XRefs ABC\\Plan Unit 3BR KLSC.dwg")
  ;; ("\\XRefs ABC" "\\Common ABC" "\\.." "\\..")
  ;; The file name is not included.
  (defun PathList (str / idx pat pos lst)
    (setq idx 0 pat "\\")
    (while (setq pos (vl-string-search pat str idx))
      (setq lst (cons (strcat pat (substr str (1+ idx) (- pos idx))) lst)
            idx (1+ pos)
      )
    )
    lst
  ) ;end

  ;; Returns a list of lists: (fullname fn blockname expath)
  (defun XrefsData ( / blkname expath fullname fn xlst NestedXref)

    ;; Argument: block definition vla-object.
    ;; Returns a count number if the xref is nested, otherwise nil.
    ;; Based on code by Stephan Koster in a program named XrefTree.
    ;; Function renamed from nested_p.
    ;; The nestcnt variable is local to the primary routine.
    ;; There is a known flaw in the function which Jason pointed out.
    ;; If an xref is both nested and referenced as a parent, the
    ;; function does not flag it as nested. The fallout from that situation,
    ;; if it occurs, is handled near the end of the primary routine.
    (defun NestedXref (blkdef / elst)
      (setq elst (entget (vlax-vla-object->ename blkdef)))
      (if
        (or
          (not (vl-position '(102 . "{BLKREFS") elst))
          (and
            (vl-position '(102 . "{BLKREFS") elst)
            (not (cdr (assoc 331 elst)))
          )
        )
        (setq nestcnt (1+ nestcnt))
        ;; Else return nil to the parent function.
      )
    ) ;end

    (vlax-for x blocks
      (if
        (and
          (= -1 (vlax-get x 'IsXref))
          (setq blkname (vlax-get x 'Name))
          ;; Filter out nested xrefs.
          (not (NestedXref x))
          (setq expath (cdr (assoc 1 (tblsearch "block" blkname))))
          (setq fn (strcat (vl-filename-base expath) ".dwg"))
        )
        (progn
          (SpinWait 0.25)
          (cond
            ;; Xref found at full or relative path.
            ((setq fullname (findfile expath)))
            ;; Xref found in the same folder as the active file
            ;; and it the xref has not been renamed.
            ((setq fullname (findfile fn)))
            ;; Xref not found so far. Substitute the path for full name.
            (T (setq fullname expath))
          )
          (setq xlst (cons (list fullname fn blkname expath) xlst))
        )
      )
    )
    xlst
  ) ;end

  ;; Arguments: strlst - a list of strings returned by PathList.
  ;;            path - a file name returned by FileName.
  ;;            dot - a string either ".\\" to search down the folder structure
  ;;            or "..\\" to search up the folder structure.
  ;; Returns: a relative path if the file is found.
  (defun XrefSearch (strlst path dot / xpath)
    (if (and strlst path dot)
      (progn
        (setq path (strcat "\\" path))
        (while
          (and
            strlst
            (not (findfile (setq xpath (strcat dot
              (substr (setq path (strcat (car strlst) path)) 2))))
            )
          )
          (princ
            (strcat "\rSearching for xrefs... please ignore any messages  "
              (setq *sbar (Spinbar *sbar)) "  \t\t\t")
          )
          (setq strlst (cdr strlst))
          (setq dot (strcat dot dot))
        )
        (if (and xpath (findfile xpath))
          xpath
        )
      )
    )
  ) ;end

  ;; Busy indicator. Author unknown.
  (defun Spinbar (sbar)
    (cond ((= sbar "\\") "|")
          ((= sbar "|") "/")
          ((= sbar "/") "-")
          (t "\\")
    )
  ) ;end

  (defun SpinWait (seconds / stop)
    (setq stop (+ (getvar "DATE") (/ seconds 86400.0)))
    (while (> stop (getvar "DATE"))
      (princ
        (strcat "\rSearching for xrefs... please ignore any messages  "
          (setq *sbar (Spinbar *sbar)) "  \t\t\t")
      )
    )
  )

  ;;;; END SUB-FUNCTIONS ;;;;

  ;;;; START PRIMARY FUNCTION ;;;;

  (vl-load-com)
  (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  (vla-StartUndoMark doc)

  (SpinWait 0.1)

  (setvar "cmdecho" 0)

  (setq blocks (vla-get-blocks doc)
        cnt 0
        nestcnt 0
        datalst (XrefsData)
  )
 
  ;; datalst is a list of lists
  ;; xref (fullname fn blkname expath)
  (foreach x datalst
    (setq strlst (PathList (car x))
          ;; Xref file name.
          str (cadr x)
          ;; The xref block name.
          xname (caddr x)
    )

    (cond
      ;; Xref found in the same folder as the active file.
      ((findfile str) (setq xpath str))
      ;; Search for xref down the folder structure.
      ((setq xpath (XrefSearch strlst str ".\\")))
      ;; Search for xref up the folder structure.
      ((setq xpath (XrefSearch strlst str "..\\")))
    )

    (if
      (and
        xpath
        ;; Check the path found is not the same as the original path.
        (not (eq xpath (cadddr x)))
      )
      (progn
        (command "._xref" "_path" xname xpath)
        (setq reportlst (cons (list xname xpath) reportlst)
              cnt (1+ cnt)
        )
      )
    )
    (SpinWait 0.25)
  ) ;foreach

  ;; Double check each xref which should have been repathed actually was.
  ;; If not try again. In some cases where an xref is both referenced as a
  ;; parent and also nested, this will allow repathing the xref.
  ;; Without it an xref may be reported as repathed when it was not.
  (foreach x reportlst
    (if (not (eq (cadr x) (cdr (assoc 1 (tblsearch "block" xname)))))
      (command "._xref" "_path" (car x) (cadr x))
    )
  )

  ;; Report:
  ;; Doing this separate from the repath operation avoids a message,
  ;; "press enter to continue" from getting tangled up with the report.
  ;; I don't know what that message refers to, but it doesn't cause a problem.
  (foreach x reportlst 
    (princ (strcat "\nXref: " (car x) " repathed: \n"))
    (princ (strcat "  " (cadr x)))
  )

  (print)
  (if (not (zerop nestcnt))
    (princ (strcat "\nNumber of nested xrefs found: " (itoa nestcnt)))
  )
  (princ (strcat "\nNumber of xrefs repathed: " (itoa cnt)))

  (*error* nil)
) ;end

  ;;;; END PRIMARY FUNCTION ;;;;

;------------------------------------
;shortcut
(defun c:REX () (c:RelativeXrefs))
;------------------------------------


tschau björn 

------------------
Wenn Arbeit etwas schoenes und erfreuliches waere,
haetten die Reichen sie nicht den Armen ueberlassen.
[Paul Lafargue]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

macrophon
Mitglied
Architekt


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

Beiträge: 24
Registriert: 10.11.2008

erstellt am: 22. Okt. 2009 18:52    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 Schachinger 10 Unities + Antwort hilfreich

Hallo Björn,

kann ich bestätigen, mit dem xRef- Manager von Autodesk hab ich das Problem gelöst bekommen, die Referenzen funktionieren einwandfrei nach Umschreiben des gespeicherten Pfades.

Die lisp hab ich auch im Autodesk- Forum gefunden, hat bei mir in der "originalverision" nicht funktioniert, jedoch hab ich den "Übersetzungstipp" auf Nachfragen ebenfalls bekommen.
Aber vielen Dank für die Hilfe.

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