tyrese69_ Posté(e) le 16 novembre 2008 Posté(e) le 16 novembre 2008 Bonjour à tous, Le petit lisp suivant permet d'importer les SCU d'un autre fichier ! Il fonctionne bien avec les versions 2006 d'autocad mais pas avec la 2008 !Quelqu'un a t'il une idée ! Merci d'avanceDaniel OLIVES (defun c:scui (/ UCSs fullpath srcdoc srcucss cnt name ucslst) (setq UCSs (vla-get-UserCoordinateSystems (vla-get-activedocument (vlax-get-acad-object))) ) (and (setq fullpath (getfiled "Fichier Source" (getvar "dwgprefix") "dwg" 0)) (setq srcdoc (DocAtPath fullpath)) (setq srcucss (vla-get-UserCoordinateSystems srcdoc)) (< 0 (vlax-get srcucss 'Count)) (setq cnt 0) (vlax-for x srcucss (setq name (vlax-get x 'Name)) (if (and (not (tblsearch "ucs" name)) (not (wcmatch name "_Active*"))) (setq ucslst (cons x ucslst) cnt (1+ cnt) ) ) ) (not (vlax-invoke srcdoc 'copyobjects ucslst UCSs)) (princ (strcat "\n\nNombre de sytème de coordonnées importé(s) = " (itoa cnt))) ) ;and (if srcdoc (vlax-release-object srcdoc)) (if (= cnt 0) (alert "Pas de scu différent à importer !")) (princ) ) ;end
(gile) Posté(e) le 16 novembre 2008 Posté(e) le 16 novembre 2008 Salut, Je pense que le problème vient de la routine DocAtPath, que tu n'as pas donné ici. J'imagine qu'elle utilise ObjectDBX, et je suppose que le souci vient du fait que, depuis la verion 2004 (R16) la syntaxe change à chaque version de dwg (ObjectDBX.AxDbDocument.16 ObjectDBX.AxDbDocument.17...) Voilà une routine polyvalente, qui fonctionne avec toutes les versions (renommée DocAtPath) (defun DocAtPath (filename / objdbx release) (setq objdbx (vlax-create-object (if ( "ObjectDBX.AxDbDocument" (strcat "ObjectDBX.AxDbDocument." (itoa release)) ) ) ) (vla-open objdbx filename) objdbx ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 16 novembre 2008 Posté(e) le 16 novembre 2008 Re, ObjectDBX ne fonctionne que sur les fichier fermés, si tu sélectionnes un fichier ouvert (MDI), tu auras une erreur. Je te propose une version qui fonctionne aussi bien avec les fichiers fermés qu'ouverts (defun c:scui (/ UCSs fullpath srcdoc odbx srcucss cnt name ucslst) (vl-load-com) (setq UCSs (vla-get-UserCoordinateSystems (vla-get-activedocument (vlax-get-acad-object)) ) ) (and (setq fullpath (getfiled "Fichier Source" (getvar "dwgprefix") "dwg" 0) ) (or (and (not (vl-catch-all-error-p (setq srcdoc (vl-catch-all-apply 'vla-item (list (vla-get-Documents (vlax-get-acad-object)) (strcat (vl-filename-base fullpath) ".dwg") ) ) ) ) ) (= fullpath (vla-get-FullName srcdoc)) ) (setq srcdoc (DocAtPath fullpath) odbx T ) ) (setq srcucss (vla-get-UserCoordinateSystems srcdoc)) ( (setq cnt 0) (vlax-for x srcucss (setq name (vlax-get x 'Name)) (if (and (not (tblsearch "ucs" name)) (not (wcmatch name "_Active*")) ) (setq ucslst (cons x ucslst) cnt (1+ cnt) ) ) ) (not (vlax-invoke srcdoc 'copyobjects ucslst UCSs)) (princ (strcat "\n\nNombre de sytème de coordonnées importé(s) = " (itoa cnt) ) ) ) (if odbx (vlax-release-object srcdoc) ) (if (= cnt 0) (alert "Pas de scu différent à importer !") ) (princ) ) (defun DocAtPath (filename / objdbx release) (setq objdbx (vlax-create-object (if ( "ObjectDBX.AxDbDocument" (strcat "ObjectDBX.AxDbDocument." (itoa release)) ) ) ) (vla-open objdbx filename) objdbx ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
tyrese69_ Posté(e) le 18 novembre 2008 Auteur Posté(e) le 18 novembre 2008 Bonjour, Un grand merci a toi Gile car j'utilise cette routine régulièrement, je travail sur une gros projet où il y a plus de 20 SCU donc elle est trés pratique !Je teste sur les différentes versions installées et je te tiens au courant ! Daniel OLIVES PS: J'ai deux versions 2008 une sous XP au bureau avec laquelle la routine fonctionne et une sous vista avec laquelle la routine ne fonctionne pas, mais sur cette dernière j'ai d'autres pB comme la mutli-ouverture d'AutoCAD; par double clic depuis explorateur et cela malgré la SP1 installée (qui est sencée corriger ce bugg!). Je pense la réinstaller totalement et refaire un essai !
marief Posté(e) le 22 janvier 2009 Posté(e) le 22 janvier 2009 Bonjour, je souhaite utiliser le lisp de Gile. mais je suis novice en LISP... !quelle est la procédure pour utiliser un LISP ?pour l'instant, j'ai essayer de la façon suivante (mais ça ne fonctionne pas) :je fais un copier/coller de ton code dans word, puis je change l'extension du fichier en .LSPpuis je le charge dans autocad (dans Outil / charger l'application).Le lips est trouvé et chargé semble t-il mais je n'ai pas de nom de commande reconnu. Pouvez-vous m'expliquer comment faire fonctionner votre Lisp, Gile ?Un grand merci d'avance.
marief Posté(e) le 22 janvier 2009 Posté(e) le 22 janvier 2009 Re-bonjour, Après lecture du tutorial "L'éditeur Visual LISP" de Gile,j'ai utilisé le lisp de Gile pour importer des SCU.Lorsque je tape la commande SCUI (est-ce le nom exact à taper ?), autocad répond : ; erreur: no function definition: VLAX-GET-ACAD-OBJECTQu'est-ce que cela signifie? Je précise que je suis sur Autocad 2008.Pouvez-vous me renseigner ? merci.
(gile) Posté(e) le 22 janvier 2009 Posté(e) le 22 janvier 2009 Salut, quelle est la procédure pour utiliser un LISP ? Tu peux voir ce sujet Lorsque je tape la commande SCUI (est-ce le nom exact à taper ?), autocad répond :; erreur: no function definition: VLAX-GET-ACAD-OBJECT Oui c'est la bonne commande à taper.Le message est du à un oubli de ma part.J'ai modifié le code, il faut refaire le copier/coller (dans le bloc-notes, pas dans Word). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
marief Posté(e) le 22 janvier 2009 Posté(e) le 22 janvier 2009 ça marche !une dernière petite question : je ne peux utiliser de lisp que sur Autocad complet, pas sur Autocad LT, c'est ça ? Un grand merci !
tyrese69_ Posté(e) le 6 février 2009 Auteur Posté(e) le 6 février 2009 Bonjour, Comme convenu aucuns soucis avec 2007 , 2008 , 2009 et même Gator 2010 ! Daniel
tyrese69_ Posté(e) le 30 mars 2009 Auteur Posté(e) le 30 mars 2009 Bonjour à tous, Je reviens sur ce sujet. Parfois, la fonction vla-open donne cette erreur : Erreur LISP: Erreur Automation Problème lors du chargement de l'application Quelle peut bien en être la raison ? (version Autocad 2009) Daniel OLIVES
(gile) Posté(e) le 30 mars 2009 Posté(e) le 30 mars 2009 Salut, Je ne sais que te dire, as-tu ce problème seulement avec AutoCAD 2009 ?Ou seulement avec certains fichiers ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
marief Posté(e) le 10 mai 2009 Posté(e) le 10 mai 2009 bonjour Gile (et les autres!), j'utilisais ton code scui avec succès sur autocad 2008 !Aujourd'hui, je l'ai testé sur Autocad 2009...lorsque je le charge, l'application est correctement chargée, mais lorsque je ferme la fenêtre "charger/décharger les applications", j'ai l'erreur suivante :; erreur: caractère lu incorrect (octal): 0 pourrais-tu m'aider ?merci encore !
(gile) Posté(e) le 11 mai 2009 Posté(e) le 11 mai 2009 Salut, Je ne sais que te dire, peut-être un problème de copier/coller ? Essaye avec cette dernière version mieux aboutie (merci à Patrick_35) ;; IMPORTUCS (gile) ;; Importe tous les SCUs nommés du DWG sélectionné (defun c:importUCS (/ UCSs filename doc odbx docUCSs name ucslst) (vl-load-com) (setq UCSs (vla-get-UserCoordinateSystems (vla-get-activedocument (vlax-get-acad-object)) ) ) (if (setq filename (getfiled "Fichier Source" (getvar "dwgprefix") "dwg" 0) ) (progn (vlax-for d (vla-get-Documents (vlax-get-acad-object)) (if (= (strcase (vla-get-Fullname d)) (strcase filename)) (setq doc d) ) ) (or doc (setq doc (OpenDrawingDBX filename) odbx T ) ) (setq docUCSs (vla-get-UserCoordinateSystems doc)) (if (< 0 (vla-get-Count docUCSs)) (progn (vlax-for x docUCSs (setq name (vla-get-Name x)) (or (getitem UCSs name) (wcmatch name "_Active*") (setq ucslst (cons x ucslst)) ) ) (if ucslst (progn (vlax-invoke doc 'CopyObjects ucslst UCSs) (princ (strcat "\n" (itoa (length ucslst)) " SCU(s) importé(s).") ) ) (princ "\nAucun SCU différent dans le dessin source.") ) (and odbx (vlax-release-object doc)) ) (princ "\nAucun SCU enregistré dans le dessin source.") ) ) ) (princ) ) ;;; Accéder à un dessin fermé (defun OpenDrawingDBX (filename / objdbx release) (setq objdbx (vlax-create-object (if (< (setq release (atoi (getvar "ACADVER"))) 16) "ObjectDBX.AxDbDocument" (strcat "ObjectDBX.AxDbDocument." (itoa release)) ) ) ) (vla-open objdbx filename) objdbx ) ;;; GetItem (gile) ;;; Retourne le vla-object de l'item s'il est présent dans la collection ;;; ;;; Arguments ;;; col : la collection (vla-object) ;;; name : le nom de l'objet (string) ou son indice (entier) ;;; ;;; Retour : le vla-object ou nil (defun GetItem (col name / obj) (vl-catch-all-apply '(lambda () (setq obj (vla-item col name))) ) obj ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
marief Posté(e) le 11 mai 2009 Posté(e) le 11 mai 2009 très fort !c'est parfait, merci encore pour toutes ces solutions efficaces et rapides !
Steven Posté(e) le 19 janvier 2012 Posté(e) le 19 janvier 2012 Tout simplement génial.Merci encore pour ce lisp super pratique :) 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.
superbatata Posté(e) le 29 novembre 2013 Posté(e) le 29 novembre 2013 Bonjour, je ne pouvais absolument pas télécharger, charger et utiliser ce lisp qui marche à merveille sur mon AutoCAD 2012 sans remerciements!!!! Alors un grand merci à Gile, Patrick_35 et à tous, pour ce que vous faites pour nous, humble utilisateurs non avertit se démenant tant bien que mal pour utiliser autocad. MERCI. Tchouce.
sechanbask Posté(e) le 22 janvier 2014 Posté(e) le 22 janvier 2014 Bonjour, j’utilisais cet outil merveilleux, mais depuis que j'ai changé de boulot et de version (autocad 2011 -> autocadmep 2014), j'ai l'erreur suivante et les SCU ne sont pas importer : Erreur Automation. Aucune description n'a été entrée. Avez-vous une idée ? ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
Steven Posté(e) le 22 janvier 2014 Posté(e) le 22 janvier 2014 Salut sechanbask, As-tu ajouter dans les options d'AMEP > Onglet Fichiers, un chemin de recherche de fichier en cours d'utilisation, un chemin qui pointe sur le dossier où est rangé le lisp? De plus, il ne faudra pas oublier d'ajouter le chemin dans les Emplacement approuvés. 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.
sechanbask Posté(e) le 22 janvier 2014 Posté(e) le 22 janvier 2014 Steven : ça marche parfaitement avec tes explications. Merci. ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
Steven Posté(e) le 22 janvier 2014 Posté(e) le 22 janvier 2014 Si tu utilises souvent ce lisp, tu peux te créer une commande et un icône personnalisé, plutôt que de taper la commande au clavier, importucsOu te créer un raccourcis clavier. http://pix.toile-libre.org/upload/img/1390413072.png 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.
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