DenisHen Posté(e) le 31 mars 2018 Posté(e) le 31 mars 2018 Bonjour à tous. Pour les besoins d'un code que je suis en train d'écrire, j'ai besoin d’obtenir la liste des vues enregistrées avec la commande VUE. Si quelqu'un a une astuce, une solution, un conseil... Je suis preneur... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Fraid Posté(e) le 31 mars 2018 Posté(e) le 31 mars 2018 Bonjour, regarde avec TBLNEXT 1 https://github.com/Fraiddd
DenisHen Posté(e) le 31 mars 2018 Auteur Posté(e) le 31 mars 2018 Salut Fraid, et merci pour ton aide, les noms des vues sont dans le code DXF 2... Je n'avais pas pensé à ça... Encore merci à toi... Il ne me reste plus qu'à en faire une liste... Ce n'est pas encore gagné... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
lecrabe Posté(e) le 31 mars 2018 Posté(e) le 31 mars 2018 Hello Merci Gilles ! Bye, lecrabe ;;; Par GC 23/01/2010 ;;; http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=26548#pid116207 ;;; Deux commandes : ;;; ImportViews : pour importer dans le dessin courant toutes les vues enregistrées ;;; du dessin sélectionné (il doit être fermé). ;;; ;;; ExportViews : pour Exporter dans le dessin sélectionné (il doit être fermé) ;;; toutes les vues enregistrées du dessin courant. ;;; ImportViews par GC ;;; Importe dans le dessin courant toutes les vues enregistrées ;;; du dessin sélectionné (defun c:ImportViews (/ filename doc lst) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (if (setq filename (getfiled "Fichier source" "" "dwg" 0)) (if (setq doc (gc:GetAxDbDoc filename)) (progn (vlax-for v (vla-get-Views doc) (setq lst (cons v lst)) ) (if lst (progn (vlax-invoke doc 'CopyObjects lst (vla-get-Views *acdoc*)) (vlax-release-object doc) ) ) ) (alert (strcat "\nLe fichier \"" filename "\" est ouvert.\nFermer le avant de relancer ImportViews" ) ) ) ) (princ) ) ;;; ExportViews par GC ;;; Exporte dans le dessin sélectionné toutes les vues enregistrées ;;; du dessin courant (defun c:ExportViews (/ filename doc lst) (vl-load-com) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (if (setq filename (getfiled "Fichier cible" "" "dwg" 0)) (if (setq doc (gc:GetAxDbDoc filename)) (progn (vlax-for v (vla-get-Views *acdoc*) (setq lst (cons v lst)) ) (if lst (progn (vlax-invoke *acdoc* 'CopyObjects lst (vla-get-Views doc)) (vla-SaveAs doc filename) (vlax-release-object doc) ) ) ) (alert (strcat "\nLe fichier \"" filename "\" est ouvert.\nFermer le avant de relancer ExportViews" ) ) ) ) (princ) ) ;;; gc:GetAxDbDoc ;;; Accéder à un dessin fermé ;;; ;;; Retourne : ;;; un objet IAxDbDocument si le document est trouve ;;; nil si le document n'a pu être trouvé ou s'il est ouvert ;;; ;;; Argument : ;;; Le chemin complet du fichier ;;; ;;; Exemple d'utilisation : ;;; (if (setq doc (gc:GetAxDbDoc filename)) ;;; (progn ;;; ... ;;; (vla-SaveAs doc filename) ;;; (vlax-release-object (car doc)) ;;; ) ;;; ) (defun gc:GetAxDbDoc (filename / axdbdoc release) (setq axdbdoc (vlax-create-object (if (< (setq release (atoi (getvar "ACADVER"))) 16) "ObjectDBX.AxDbDocument" (strcat "ObjectDBX.AxDbDocument." (itoa release)) ) ) ) (if (vl-catch-all-apply 'vla-open (list axdbdoc filename) ) (not (vlax-release-object axdbdoc)) axdbdoc ) ) Autodesk Expert Elite Team
DenisHen Posté(e) le 31 mars 2018 Auteur Posté(e) le 31 mars 2018 Salut LeCrabe, et merci pour ton aide... Comme toujours, les codes de Maître (gile) sont extrêmement bien faits, mais trop compliqués pour un profane comme moi... J'ai donc écris ce petit bout de code (qui me sert de test), car je ne comprend pas bien le code de (gile) :(defun c:CherchView (/ TblView LstView) (while (setq TblView (tblnext "VIEW")) (setq LstView (cons (cdr (assoc 2 TblView)) LstView)) ) ;_ Fin de while (princ LstView) (princ) ) ;_ Fin de defun Mais je n'obtiens qu'un nil en fin de code... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
rebcao Posté(e) le 31 mars 2018 Posté(e) le 31 mars 2018 Bonjour, Avec TBLNEXT, il faut commencer par le 1er élément avec la syntaxe ( TBLNEXT "VIEW" T ) et ensuite (TBLNEXT "VIEW")... Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
lecrabe Posté(e) le 31 mars 2018 Posté(e) le 31 mars 2018 HelloComme il est penible Mr EastMan (Le Bouffeur de Decapode) !Il ne laisse meme pas a DenisHen le temps de reflechir !?Bon WE, Bye, Pat Autodesk Expert Elite Team
didier Posté(e) le 31 mars 2018 Posté(e) le 31 mars 2018 Coucou En réponse au message #3 de DenisHENJe n'avais pas pensé à ça...Il FAUT penser aux codes DXF en AutoLISP TOUT est dans les codes DXF Il faut que j'explique ça sur mon site car si ça se trouve plusieurs personnes pensent comme toi. Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
DenisHen Posté(e) le 31 mars 2018 Auteur Posté(e) le 31 mars 2018 Que dire, merci à vous tous... Maintenant, j'ai donc ce code :(defun c:CherchView (/ TblView LstView) (setq TblView (tblnext "VIEW" T)) (setq LstView (cons (cdr (assoc 2 TblView)) LstView)) (while (setq TblView (tblnext "VIEW")) (setq LstView (cons (cdr (assoc 2 TblView)) LstView))) (setq LstView (vl-sort LstView '<)) (princ LstView) (princ) )Didier : effectivement, je pense encore (à tord je sais) que seules les entités ont des codes DXF... Et je suis sûr de ne pas être le seul. Encore merci à vous... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 31 mars 2018 Posté(e) le 31 mars 2018 Salut, Petite astuce couramment utilisée avec tblnext pour démarrer au début de la collection (l'argument T)Si view est le nom de la variable qui prendra tour à tour chaque enregistrement contenu dans la table et que la variable view a bien été déclarée localement (comme il se doit), au lancement de la boucle (while ...), view vaut nil, donc (not view) renvoie T et après la première itération view ne vaudra plus nil et (not view) retournera nil. On peut donc faire : (defun c:CherchView (/ view LstView) (while (setq view (tblnext "VIEW" (not view))) (setq LstView (cons (cdr (assoc 2 view)) LstView))) (setq LstView (vl-sort LstView '<)) (princ LstView) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 31 mars 2018 Posté(e) le 31 mars 2018 On peut aussi faire une petite routine générique pour lister n'importe quelle table. (defun listTable (tblname / rec lst) (while (setq rec (tblnext tblname (not rec))) (setq lst (cons (cdr (assoc 2 rec)) lst)) ) (reverse lst) ) (listTable "view") retourne la liste des noms des vues enregistrées(listTable "block") la liste des blocs(listTable "appid") celle des application enregistréesetc. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 31 mars 2018 Auteur Posté(e) le 31 mars 2018 Salut (gile).Petite astuce couramment utilisée avec tblnext pour démarrer au début de la collection (l'argument T)Si view est le nom de la variable qui prendra tour à tour chaque enregistrement contenu dans la table et que la variable view a bien été déclarée localement (comme il se doit), au lancement de la boucle (while ...), view vaut nil, donc (not view) renvoie T et après la première itération view ne vaudra plus nil et (not view) retournera nil.Merci (gile) pour cette explication, ça explique pourquoi je n'avais pas compris le code dont je me suis inspirer, il y avait effectivement un (not xxx) à cet emplacement, et je ne savais pas pourquoi... Maintenant, je sais... Encore merci... EDIT : j'aime le "comme il se doit", j'ai fais beaucoup d'effort là-dessus... Suite à vos nombreux conseils... ;) Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Fraid Posté(e) le 31 mars 2018 Posté(e) le 31 mars 2018 yop c'est cool, au debut j'allais t'envoyer du code tout fait, et ta réussi à le faire.c'est plus formateur que du copier coller. le mapcar on s'en fait une montagne, mais ce n'est pas si difficile.c'est juste appliquer une fonction à chaque élément d'une liste.cette fonction prend le nom lambda quand elle est déclarée dans le mapcar. Gile en donne plein d'explications plus ou moins compliquées.(Merci encore.) aaarf, mélangé 2 post... https://github.com/Fraiddd
DenisHen Posté(e) le 31 mars 2018 Auteur Posté(e) le 31 mars 2018 c'est cool, au debut j'allais t'envoyer du code tout fait, et ta réussi à le faire.J'essai de faire de mon mieux, à mon piètre niveau... Mais le principal est que j'arrive à faire ce que je veux, et tous ça grace à CadXP... Et à ces membres bien sur... ;) c'est plus formateur que du copier coller.didier, sort de ce corps... ;) le mapcar on s'en fait une montagne, mais ce n'est pas si difficile.c'est juste appliquer une fonction à chaque élément d'une liste.cette fonction prend le nom lambda quand elle est déclarée dans le mapcar.J'aimerai être à ce niveau... Pour moi, mapcar et lambda sont encore de la magie... :huh: Gille en donne plein d'explications plus ou moins compliquées.Maître (gile) navigue dans les hautes sphères du code (et pas seulement en Lisp)... Descendre à notre niveau pour s'expliquer ne doit pas être une simple affaire... :mellow: aaarf, mélangé 2 post...Ah bon ? Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant