CadXP: xRef relatif<->absolu - CadXP

Aller au contenu

  • 2 Pages +
  • 1
  • 2

xRef relatif<->absolu

#21 L'utilisateur est hors-ligne   rem3131 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 13
  • Inscrit(e) : 19-août 19

Posté 28 août 2019 - 17:58

Voir le messagedidier, le 28 août 2019 - 17:25 , dit :

Coucou

Je vois... trois clics c'est trop ?
Je te taquine car je conçois ce que tu demandes.

Amicalement

Ben quand ta 30 fichiers comme celui la à faire par chantier, tu cherche à être efficace.
Bien cordialement

Rem3131
0

#22 L'utilisateur est hors-ligne   rem3131 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 13
  • Inscrit(e) : 19-août 19

Posté 28 août 2019 - 18:01

Voir le messageOlivier Eckmann, le 28 août 2019 - 14:06 , dit :

Bonjour,

pas de Lisp, mais du code .Net pour le faire : ICI

Olivier


Désolé mais je début dans le Lisp et la programmation je ne comprend pas le code.
Bien cordialement

Rem3131
0

#23 L'utilisateur est hors-ligne   eklundh80 

  • ceinture blanche
  • Groupe : Membres
  • Messages : 3
  • Inscrit(e) : 13-mai 20

Posté 19 mai 2020 - 08:06

Salut,

voici un lisp avec une routine de Lee Mac pour remettre les chemins relatifs en absolu:
(defun c:fullxref ( / etat)
  
  (defun *error* (msg)
    (if (or (= msg "Fonction annulée")
	    (= msg "quitter / sortir abandon")
	    )
      (princ)
      (princ (strcat "\nErreur: " msg))
      )
    ) 
  (vl-load-com)  
  (vlax-for b (vla-get-blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
    (if (and (= (vla-get-isxref B) :vlax-true) ;; bloc = xref
	     (wcmatch (vla-get-path B) ".*") ;; chemin commence par . 
	     )
      (progn
	(setq etat (logand 32 (cdr (assoc 70 (tblsearch "block" (vla-get-name B)))))) ;;enregistre l'état de chargement
	(if (findfile (LM:XRef:Relative->Full (vl-filename-directory (getvar 'dwgprefix)) (vla-get-path B))) ;;si chemin existe
	  (progn
	    (vla-put-path  b (LM:XRef:Relative->Full (vl-filename-directory (getvar 'dwgprefix)) (vla-get-path B)));; modifie le chemin de l'xref
	    (vla-reload B) ;;recharge l'xref
	    (if (/= etat 32) ;;si état différent de 32 (chargé)
	      (vla-unload B) ;;décharger l'xref
	      ) ;;fin de if
	    ) ;;fin de progn
	  ) ;;if findfile
	) ;;progn
      ) ;;fin de if
    ) ;;fin de vlax
  
  (princ)
  )

;;-------------=={ Relative Path to Full Path }==-------------;;
;;                                                            ;;
;;  Converts a Relative XRef path to a Full Path.             ;;
;;------------------------------------------------------------;;
;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
;;------------------------------------------------------------;;
;;  Arguments:                                                ;;
;;  dir  - Directory of the Drawing in which the Xref resides ;;
;;  path - Relative Xref Path                                 ;;
;;------------------------------------------------------------;;
;;  Returns:  Full XRef Path                                  ;;
;;------------------------------------------------------------;;

(defun LM:XRef:Relative->Full ( dir path )
    (setq dir (vl-string-right-trim "\\" dir))
    (cond
        (   (eq ".." (substr path 1 2))
            (LM:XRef:Relative->Full
                (substr dir 1 (vl-string-position 92 dir nil t))
                (substr path 4)
            )
        )
        (   (eq "." (substr path 1 1))
            (strcat dir (substr path 2))
        )
        (   (strcat dir "\\" path))
    )
)

0

Partager ce sujet :


  • 2 Pages +
  • 1
  • 2


Réponse rapide

  

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)