Aller au contenu

[Résolue] Décharger Xref par simple clic


La Lozère

Messages recommandés

Salut,

 

Pas trop testé en profondeur, mais je pense que c'est bon...

 

(defun c:unload_xref ( / js n name_xref)
 (princ "\nSélectionner les XRefs à décharger. ")
 (while (null (setq js (ssget "_+.:E" '((0 . "INSERT")))))
   (princ "\nObjets non valable!")
 )
 (repeat (setq n (sslength js))
   (cond
     ((eq (boole 1 (cdr (assoc 70 (tblsearch "BLOCK" (setq name_xref (cdr (assoc 2 (entget (ssname js (setq n (1- n)))))))))) 4) 4)
       (command "_.-xref" "_Unload" name_xref)
     )
     (T (princ "\nN'est pas une référence externe. "))
   )
 )
 (prin1)
)

Modifié par bonuscad

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Juste une petite modif.

Est-il possible de ne pas sortir de la commande après avoir cliquer sur une Xref pour pouvoir en décharger plusieurs d'un seul coup sans avoir à relancer la commande.

 

A plus.

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Dur AA, lorsqu'on sélectionne des Xref et que l'on fait un clic droite, on peut Décharger, Détacher, Lier, etc les Xref. C'est curieux que les développeurs n'aient pas intégrer cette fonctionnalité dans AutoCAD.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Juste une petite modif.

Est-il possible de ne pas sortir de la commande après avoir cliquer sur une Xref pour pouvoir en décharger plusieurs d'un seul coup sans avoir à relancer la commande.

 

A plus.

Salut

 

Tu as la commande multiple dans autocad

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Juste une petite modif.

Est-il possible de ne pas sortir de la commande après avoir cliquer sur une Xref pour pouvoir en décharger plusieurs d'un seul coup sans avoir à relancer la commande.

 

A plus.

J'ai modifié le code ci-dessus; le déchargement se fait après validation de l'ensemble de la sélection.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

En fait ce que je demande fait un peu suite à ce post. Le truc c'est que je pourrais passer par le gestionnaire, mais si on a une très grosse Xref, rien que le fait de faire un clic droit met l'Xref en surbrillance. Et du fait de la taille de l'Xref, c'est particulièrement lourd.

 

Du coup, le lisp de bonuscad permet de s'affranchir de ce phénomène.

 

Tu as la commande multiple dans autocad

Effectivement, mais comme j'ai couplé cette routine avec un bouton, comment faire pour que cela fonctionne?

 

A plus.

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

Merci Bonuscad, mais du coup, cela sélectionne l'Xref et je me retrouve dans le problème premier. Si l'Xref est très grosse ça prend du temps. La commande "multiple" fonctionne bien dans ce cas.

 

Est-il possible de décharger à la volé?

Sinon, peux-tu reposter l'ancien code? Je ne l'ai plus.

Merci.

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Dans ton CUI, tu te crées une nouvelle commande et tu lui colles ça comme macro

(setq A (cdr (assoc 2 (entget (ssname (cadr (ssgetfirst)) 0)))));(command [/size]"_.-xref" "_Unload"[size=2] A)

 

Bien enlever les ^C^C en début de ligne

 

Puis tu colles cette commande soit dans le menu contextuel "Menu de l'objet XRef", soit directement dans l'action du double-clic associé à l'objet Xref.

 

Dans le lisp de Bonuscad, il suffit d'ajouter la ligne

(setvar "HIGHLIGHT" 0)

en 2ème ligne, puis

(setvar "HIGHLIGHT" 1)

en avant-dernière ligne

 

Olivier

Lien vers le commentaire
Partager sur d’autres sites

Le 1er était celui-ci:

(defun c:unload_xref ( / js name_xref)
 (princ "\nSélectionner l'XRef à décharger. ")
 (while (null (setq js (ssget "_+.:E:S" '((0 . "INSERT")))))
   (princ "\nObjets non valable!")
 )
 (cond
   ((eq (boole 1 (cdr (assoc 70 (tblsearch "BLOCK" (setq name_xref (cdr (assoc 2 (entget (ssname js 0)))))))) 4) 4)
     (command "_.-xref" "_Unload" name_xref)
   )
   (T (princ "\nN'est pas une référence externe. "))
 )
 (prin1)
)

Ça peut fonctionner avec MULTIPLE, mais alors cela boucle sur la sélection (while (null (setq js .......

Il faut simplement faire ESC pour sortir.

Est-il possible de décharger à la volé?

A la volée on pourrait essayer ceci (pas droit à l'erreur de sélection, sinon on sort de la boucle)

(defun c:unload_xref ( / js name_xref)
 (princ "\nSélectionner l'XRef à décharger. ")
 (while
   (and
     (setq js (ssget "_+.:E:S" '((0 . "INSERT"))))
     (eq (boole 1 (cdr (assoc 70 (tblsearch "BLOCK" (setq name_xref (cdr (assoc 2 (entget (ssname js 0)))))))) 4) 4)
   )
   (command "_.-xref" "_Unload" name_xref)
   (princ "\nSélectionner l'XRef à décharger. ")
 )
 (prin1)
)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Lien vers le commentaire
Partager sur d’autres sites

Super, j'ai trouvé mon bonheur. Vous êtes des chef.

 

J'ai utilisé le premier code via un bouton qui lance la commande suivante:

^C^C_multiple;unload_xref

 

Il faut certes sortir de la commande via un Echap, mais ça me va très bien.

 

Le deuxième code est également très bien, mais comme tu l'as dis, pas le droit à l'erreur.

 

A plus et encore merci

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

Bonjour à toutes et tous,

 

Salut La Lozère,

 

Commande:

Commande: _multiple

Entrez le nom de la commande à répéter: unload_xref Commande inconnue "UNLOAD_XREF". Appuyez sur F1 pour obtenir de l'aide.

 

Tiens, le code ne fonctionne pas sur mon Civil 3D 2015

Civil 3D 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

Salut Lili,

Question bête, tu as bien chargé le lisp correspondant?

Dans mon fonctionnement, c'est un lisp qui est chargé au démarrage, du coup pas de problème.

 

A plus

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

  • 2 ans après...

Hello,

Je déterre un vieux sujet car je cherche une fonction un peu similaire.

Je voudrais détacher à la volé des images.

J'ai essayé d'adapter le code suivant, mais je n'y arrive pas. Alors si une bonne âme passe dans le coin....

(defun c:unload_xref ( / js name_xref)
 (princ "\nSélectionner l'XRef à décharger. ")
 (while (null (setq js (ssget "_+.:E:S" '((0 . "INSERT")))))
   (princ "\nObjets non valable!")
 )
 (cond
   ((eq (boole 1 (cdr (assoc 70 (tblsearch "BLOCK" (setq name_xref (cdr (assoc 2 (entget (ssname js 0)))))))) 4) 4)
     (command "_.-xref" "_Unload" name_xref)
   )
   (T (princ "\nN'est pas une référence externe. "))
 )
 (prin1)
)

 

Merci d'avance

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

Hello,

Bon, finalement, j'ai repris depuis le début, et j'ai réussi à pondre un truc qui en tout cas marche et me convient.

(defun c:unload_image ( / *error str2lst sep pos str aa bb cc lst nom)
 (princ "\nSélectionner l'Image à décharger. ")
;;; Gestion d'erreur
 (defun *error* (msg)
   (if	(/= msg "Fonction annulée")
     (princ (strcat "\nErreur: " msg))
   )
   (princ)
 )
;;; Transformation d'une chaine avec séparateur en liste de chaînes
 (defun str2lst (str sep / pos)
   (if	(setq pos (vl-string-search sep str))
     (cons (substr str 1 pos)
    (str2lst (substr str (+ (strlen sep) pos 1)) sep)
     )
     (list str)
   )
 )
;;;
(while
(setq aa (entget (car (entsel))))
(setq bb (entget (cdr (assoc 340 aa))))
(setq cc (cdr (assoc 1 bb)))
(setq lst (last (str2lst cc "\\")))
(setq nom (car (str2lst lst ".")))
(command "_.-image" "D" nom)
)
 (prin1)
)

 

toujours en grand merci à (gile) pour son tuto.

www.cad-is.fr
Autocad Map 2021 - Covadis/Autopiste V18.0c
Pisser sous la douche ne suffira pas
Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité