DenisHen Posté(e) le 16 mai 2018 Posté(e) le 16 mai 2018 Bonjour à tous. Aujourd'hui, dans une routine, j'utilise Steal de Lee Mac, avec ça, j'importe une présentation. Dans cette présentation (du dessin source), j'ai deux fenêtres avec un (vlax-ldata chacune. Après l'importation (dans le dessin courant), ces (vlax-ldata ont disparus... Par contre, avec le DesignCenter, ces mêmes (vlax-ldata sont conservés après importation... Quelqu'un as-t-il une solution ? 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)
Patrick_35 Posté(e) le 16 mai 2018 Posté(e) le 16 mai 2018 Salut Essaye de cette manière ;;;--------------------------------------------------------------- ;;; ;;; Accéder a un fichier dessin ;;; ;;;--------------------------------------------------------------- (defun Ouvrir_dessin_dbx(dwg / dbx) (if (< (atoi (substr (getvar "ACADVER") 1 2)) 16) (setq dbx (vlax-create-object "ObjectDBX.AxDbDocument")) (setq dbx (vlax-create-object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2)))) ) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-open (list dbx dwg))) nil dbx ) ) (setq dbx (Ouvrir_dessin_dbx "C:\\Test\\Mon_Dessin.dwg")) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (setq new (vla-CopyObjects Dbx (vlax-safearray-fill (vlax-make-safearray vlax-vbObject '(0 . 0)) (list (vla-item (vla-get-layouts dbx) "Mon_Onglet")) ) (vla-get-layouts doc) ) ) (vla-put-activelayout doc (car (vlax-safearray->list (vlax-variant-value new)))) (vlax-release-object dbx) @+ ps : Ne pas oublier de remplacer "C:\\Test\\Mon_Dessin.dwg" et "Mon_Onglet" dans le lisp Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
DenisHen Posté(e) le 16 mai 2018 Auteur Posté(e) le 16 mai 2018 Salut Patrick_35, et merci pour ton aide. Ton code est beaucoup trop compliqué pour que je le comprenne, mais ça ne va pas m’empêcher de l'utiliser... ;) Par contre, il vient de tomber sur mon bureau un gros boulo d'une semaine à faire pour la semaine dernière... :angry: La routine reprend... ;) Mais je te tiens au courant... Encore merci... 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)
Patrick_35 Posté(e) le 16 mai 2018 Posté(e) le 16 mai 2018 Ton code est beaucoup trop compliqué pour que je le comprenne, mais ça ne va pas m’empêcher de l'utiliser... ;) Sans vouloir te vexer, je m'en doutais et je l'ai écrit de manière à ce que tu puisses l'utiliser sans difficulté. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
DenisHen Posté(e) le 17 mai 2018 Auteur Posté(e) le 17 mai 2018 Salut Patrick_35. Sans vouloir te vexer, je m'en doutais ... Rassures-toi, je ne le prend pas mal du tout... ;) ...je l'ai écrit de manière à ce que tu puisses l'utiliser sans difficulté.Et je t'en remercie... ;) 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)
DenisHen Posté(e) le 17 mai 2018 Auteur Posté(e) le 17 mai 2018 Re. Voilà, je pense qu'il y avait une petite erreur de parenthèses dans ton code. Je l'ai "corrigé" et adapté à mes besoins, le voici :;;; ******************************** ;;; Importation d'une présentation ;;; Patrick_35 (CadXP.com) ;;; ******************************** (defun TC_ImportPresent (Dessin Present / dbx) (princ "\nÉcrit par Patrick_35 de CadXP.com\n") (if (< (atoi (substr (getvar "ACADVER") 1 2)) 16) (setq dbx (vlax-create-object "ObjectDBX.AxDbDocument")) (setq dbx (vlax-create-object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2)))) ) ;_ Fin de if (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-open (list dbx Dessin))) nil dbx ) ;_ Fin de if (setq dbx (TC_ImportPresent Dessin)) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (setq new (vla-CopyObjects Dbx (vlax-safearray-fill (vlax-make-safearray vlax-vbObject '(0 . 0)) (list (vla-item (vla-get-layouts dbx) Present)) ) ;_ Fin de vlax-safearray-fill (vla-get-layouts doc) ) ;_ Fin de vla-CopyObjects ) ;_ Fin de setq (vla-put-activelayout doc (car (vlax-safearray->list (vlax-variant-value new)))) (vlax-release-object dbx) ) ;_ Fin de defun Que j'appelle ainsi :(TC_ImportPresent "TC_Lotissement.dwg" "PdV")Bien sur, le fichier est dans un répertoire connu d'AutoCAD. Mais AutoCAD me répond :Écrit par Patrick_35 de CadXP.comnombre d'arguments insuffisantsUne idée, un conseil ? 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 17 mai 2018 Posté(e) le 17 mai 2018 Je pense que tu as fait une erreur en pensant "corriger" "une petite erreur de parenthèses". Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 17 mai 2018 Auteur Posté(e) le 17 mai 2018 Salut (gile), et merci de m'aider. Tu veux dire que ça, c'est une routine à part entière :;;; ******************************** ;;; Importation d'une présentation ;;; Patrick_35 (CadXP.com) ;;; ******************************** (defun TC_ImportPresent (Dessin Present / dbx) (princ "\nÉcrit par Patrick_35 de CadXP.com\n") (if (< (atoi (substr (getvar "ACADVER") 1 2)) 16) (setq dbx (vlax-create-object "ObjectDBX.AxDbDocument")) (setq dbx (vlax-create-object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2)))) ) ;_ Fin de if (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-open (list dbx Dessin))) nil dbx ) ;_ Fin de if ) ;_ Fin de defun Et que je dois placer ça dans mon code principal :... (setq dbx (TC_ImportPresent (findfile "TC_Lotissement.dwg") "PdV")) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (setq new (vla-CopyObjects Dbx (vlax-safearray-fill (vlax-make-safearray vlax-vbObject '(0 . 0)) (list (vla-item (vla-get-layouts dbx) Present)) ) ;_ Fin de vlax-safearray-fill (vla-get-layouts doc) ) ;_ Fin de vla-CopyObjects ) ;_ Fin de setq (vla-put-activelayout doc (car (vlax-safearray->list (vlax-variant-value new)))) (vlax-release-object dbx) ... Si c'est ça, AutoCAD me répond :Écrit par Patrick_35 de CadXP.comErreur Automation. Aucune description n'a été entrée. 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)
Patrick_35 Posté(e) le 17 mai 2018 Posté(e) le 17 mai 2018 Le lisp corrigé (defun TC_ImportPresent (Dessin / dbx) (princ "\nÉcrit par Patrick_35 de CadXP.com\n") (if (< (atoi (substr (getvar "ACADVER") 1 2)) 16) (setq dbx (vlax-create-object "ObjectDBX.AxDbDocument")) (setq dbx (vlax-create-object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2)))) ) ;_ Fin de if (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-open (list dbx Dessin))) nil dbx ) ;_ Fin de if ) (setq dbx (TC_ImportPresent (findfile "TC_Lotissement.dwg"))) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (setq new (vla-CopyObjects dbx (vlax-safearray-fill (vlax-make-safearray vlax-vbObject '(0 . 0)) (list (vla-item (vla-get-layouts dbx) "PdV")) ) ;_ Fin de vlax-safearray-fill (vla-get-layouts doc) ) ;_ Fin de vla-CopyObjects ) (vla-put-activelayout doc (car (vlax-safearray->list (vlax-variant-value new)))) (vlax-release-object dbx) Le tout dans une fonction(defun ImportPresent (Dessin Present / TC_ImportPresent dbx doc new) (defun TC_ImportPresent (Dessin / dbx) (princ "\nÉcrit par Patrick_35 de CadXP.com\n") (if (< (atoi (substr (getvar "ACADVER") 1 2)) 16) (setq dbx (vlax-create-object "ObjectDBX.AxDbDocument")) (setq dbx (vlax-create-object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2)))) ) ;_ Fin de if (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-open (list dbx Dessin))) nil dbx ) ;_ Fin de if ) (if (setq dbx (TC_ImportPresent Dessin)) (progn (setq doc (vla-get-activedocument (vlax-get-acad-object))) (setq new (vla-CopyObjects dbx (vlax-safearray-fill (vlax-make-safearray vlax-vbObject '(0 . 0)) (list (vla-item (vla-get-layouts dbx) Present)) ) ;_ Fin de vlax-safearray-fill (vla-get-layouts doc) ) ;_ Fin de vla-CopyObjects ) (vla-put-activelayout doc (car (vlax-safearray->list (vlax-variant-value new)))) (vlax-release-object dbx) T ) nil ) ) (if (ImportPresent (findfile "TC_Lotissement.dwg") "PdV") (alert "Présentation importée.") (alert "Dessin non trouvé.") ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
DenisHen Posté(e) le 17 mai 2018 Auteur Posté(e) le 17 mai 2018 Merci Patrick_35, ça fonctionne, sauf que les (vlax-ldata que j'ai attachés à mes deux fenêtres de l'espace papier ne sont pas importés... Je vais devoir réfléchir (aïe, c'est pas gagné) à une autre solution... Encore merci à tous... 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)
Patrick_35 Posté(e) le 17 mai 2018 Posté(e) le 17 mai 2018 La version multiple (pour les présentations)(defun ImportPresent (Dessin Present / TC_ImportPresent dbx doc new) (defun TC_ImportPresent (Dessin / dbx) (princ "\nÉcrit par Patrick_35 de CadXP.com\n") (if (< (atoi (substr (getvar "ACADVER") 1 2)) 16) (setq dbx (vlax-create-object "ObjectDBX.AxDbDocument")) (setq dbx (vlax-create-object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2)))) ) ;_ Fin de if (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-open (list dbx Dessin))) nil dbx ) ;_ Fin de if ) (if (setq dbx (TC_ImportPresent Dessin)) (progn (setq doc (vla-get-activedocument (vlax-get-acad-object))) (setq new (vla-CopyObjects dbx (vlax-safearray-fill (vlax-make-safearray vlax-vbObject (cons 0 (1- (length Present)))) (mapcar '(lambda(x) (vla-item (vla-get-layouts dbx) x)) Present) ) ;_ Fin de vlax-safearray-fill (vla-get-layouts doc) ) ;_ Fin de vla-CopyObjects ) (vla-put-activelayout doc (car (vlax-safearray->list (vlax-variant-value new)))) (vlax-release-object dbx) T ) nil ) ) (if (ImportPresent (findfile "TC_Lotissement.dwg") '("PdV" "Ong1" "Ong2")) (alert "Présentation's) importée(s).") (alert "Dessin non trouvé.") ) Pour tes vlax-ldata, tu as songé la xdatas tout simplement ? @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
DenisHen Posté(e) le 17 mai 2018 Auteur Posté(e) le 17 mai 2018 Pour tes vlax-ldata, tu as songé la xdatas tout simplement ?Oui, mais je suis "très" a l'aise avec les vlax-ldata et totalement incompétent avec les xdata, mais je vais devoir m'y mettre plus sérieusement... Malgré que (gile) m'a fait deux superbes routine pour attribuer des xdata et les récupérer, mais j'hésite toujours à utiliser un code que je ne maîtrise pas... Encore merci pour ton aide... 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)
Patrick_35 Posté(e) le 18 mai 2018 Posté(e) le 18 mai 2018 Salut Je comprends bien, mais combien as-tu de routines que tu ne maitrises pas totalement et qui fonctionnent ?Le plus dur est de s'y mettre. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
DenisHen Posté(e) le 18 mai 2018 Auteur Posté(e) le 18 mai 2018 Je comprends bien, mais combien as-tu de routines que tu ne maitrises pas totalement et qui fonctionnent ?C'est pas faux... ;) 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