lili2006 Posté(e) le 25 novembre 2007 Posté(e) le 25 novembre 2007 Bonsoir à toutes et tous, Je viens de m'apercevoir que je ne peux plus utiliser ce Lisp qui faisiat suite à un long post sur certain projets (c'est ok sur mon gabarit de base !!!???). Voilà ce que me retourne AutoCAD : Commande:Commande: Hatch2Excel ; erreur: Erreur Automation Entrée incorrecte Rappel LISP => (defun c:Hatch2Excel (/ acdoc tot lst file cell sheet n) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))) (vlax-for l (vla-get-Layers acdoc) (setq name (vla-get-Name l) tot 0.0 ) (if (ssget "_X" (list '(0 . "HATCH") (cons 8 name))) (progn (vlax-for h (vla-get-ActiveSelectionSet acdoc) (setq tot (+ tot (vla-get-area h))) ) (setq lst (cons (list name tot) lst)) ) ) ) (setq lst (vl-sort lst (function (lambda (x1 x2) () ) (if (member (type getexcel) '(SUBR USUBR)) (if (setq file (getfiled "Choisir ou créer un fichier Excel" "" "xls" 33)) (if (member (type doubleinputbox) '(SUBR USUBR)) (progn (while (not (and (setq cell (doubleinputbox "Hachures vers Excel" "Nom de la feuille Excel" "Cellule de départ" "Feuil1" "A1" ) sheet (car cell) cell (cadr cell) ) (cell-p cell) ) ) (alert "Référence de cellule non valide.") ) (and (= sheet "") (setq sheet nil)) (OpenExcel (cond ((findfile file))) sheet nil) (repeat (setq n (length lst)) (putCell cell (car lst)) (setq lst (cdr lst) cell (Row+n cell 1) ) ) ;;---------------- Somme des surfaces ----------------;; (putCell cell (list "Total" (strcat "=somme(" (column+n (row+n cell (- n)) 1) ":" (column+n (row+n cell (- 1)) 1) ) ) ) ;;----------------------------------------------------;; (CloseExcel file) ) (alert "La routine LISP DoubleInputBox doit être chargée.") ) ) (alert "GetExcel.lsp doit être chargé") ) (princ) ) Quelqu'un à une idée ? Remarque : Les routines "LISP DoubleInputBox " & "GetExcel.lsp ", sont bien chargées ! Quand je tape en ligne de commande : Commande: (DoubleInputBox); erreur: nombre d'arguments insuffisants, Idem pour : Commande: (GetExcel); erreur: nombre d'arguments insuffisants ???? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 25 novembre 2007 Posté(e) le 25 novembre 2007 salut, Je ne saurais dire comme ça, pourquoi tu as ce message, peut-être en utilisant la méthode proposée ici tu pourrais dire quelle expression provoque l'erreur. Quand je tape en ligne de commande : Commande: (DoubleInputBox); erreur: nombre d'arguments insuffisants, Idem pour : Commande: (GetExcel); erreur: nombre d'arguments insuffisants ???? C'est normal, comme je dis parfois une routine LISP est assimilable à une fonction LISP prédéfinie certaines de ces fonctions requièrent des arguments, et si elles sont appelées sans arguments, retournent ce message d'erreur. Essaye avec la fonction LISP minusp (qui retourne T si l'argument (un nombre) est négatif, nil sinon : (minusp 1) -> nil(minusp -1) -> T(minusp) -> ; erreur: nombre d'arguments insuffisants(minusp "a") -> ; erreur: type d'argument incorrect: numberp: "a" Les routines GetExcel et DubleInputBox requièrent des arguments, ils sont décrits dans les commentaires en début de routines : ;;-------------------------------------------------------------------------------;; GetExcel - Stocke les données d'une feuille Excel dans la liste *ExcelData@;; Arguments : 3;; ExcelFile$ = Chemin et nom ce fichier;; SheetName$ = Nom de la feuille ou nil pour non spécifié;; MaxRange$ = Référence de la cellule maximum à inclure;; Exemples de syntaxe :;; (GetExcel "C:\\Temp\\Temp.xls" "Feuil1" "E19") = Ouvre C:\Temp\Temp.xls sur la Feuille1 et lit jusqu'à la cellule E19;; (GetExcel "C:\\Temp\\Temp.xls" nil "IV123") = Ouvre C:\Temp\Temp.xls sur la feuille courante et lit jusqu'à la cellule IV123 ;; DoubleInputBox (gile);; Ouvre une boite de dialogue pour récupérer deux valeurs;; sous forme de chaine de caractère;;;; Arguments;; tous les arguments sont de chaines de caractère (ou "");; box : titre de la boite de dialogue;; msg1 : message pour la première entrée;; msg1 : message pour la seconde entrée;; val1 : valeur par défaut de la première entrée;; val1 : valeur par défaut de la seconde entrée;;;; Retour;; une liste (valeur1 valeur2) ou nil [Edité le 25/11/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 25 novembre 2007 Auteur Posté(e) le 25 novembre 2007 Re, J'avais déjà mis en route le dégogueur avant de poster, mais j'ai tout de suite le message cité plus haut, à savoir : Commande:Commande: Hatch2Excel ; erreur: Erreur Automation Entrée incorrecteCommande: donc,... ? La fréquence est de environ 1 fichier sur 3 . Pourtant dans ces fichiers, j'utilise à peu prés toujours les mêmes outils ou Lisp,... Merci pour les explications (gile). Maintenant, il serait intéressant de savoir si d'autres utilisateurs ont le même problème ??! Tant que j'y suis, je dessine en cm (pour 1m, je tapre 100 dans l'EO) et voudrais récupérer les surfaces en m², que dois-je changer dans le Lisp pour ce faire ? Merci d'avance. Bonne soirée. [Edité le 25/11/2007 par lili2006] Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 25 novembre 2007 Posté(e) le 25 novembre 2007 Salut, Pour utiliser la méthode citée plus haut, il faut :- ouvrir l'éditeur Visual LISP- cocher "Arrêt sur erreur" dans le menu "Débogage"- lancer la commande (soit en retournant dans AutoCAD sans fermer l'éditeur soit en entrant (c:Hatch2Excel) dans la console de l'éditeur.- faire CTRL+F9 (dans l'éditeur) après avoir eu le message d'erreur. Tant que j'y suis, je dessine en cm (pour 1m, je tapre 100 dans l'EO) et voudrais récupérer les surfaces en m², que dois-je changer dans le Lisp pour ce faire ? remplace (ligne 11) :(setq tot (+ tot (vla-get-area h)))par :(setq tot (+ tot (/ (vla-get-area h) 10000))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 25 novembre 2007 Auteur Posté(e) le 25 novembre 2007 Re, Effectivement, je m'y prenais mal, voici le résultat => <!--url{0}--> remplace (ligne 11) :(setq tot (+ tot (vla-get-area h)))par :(setq tot (+ tot (/ (vla-get-area h) 10000))) Impec, merci encore (gile) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 26 novembre 2007 Posté(e) le 26 novembre 2007 Re,9 Ce qui serait intéressant, c'est d'avoir la partie de code de Hatch2Excel qui se met en surbrillance dans la fenêtre de l'éditeur après avoir fait CTRL+F9. http://img519.imageshack.us/img519/5403/erreurit4.png Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 26 novembre 2007 Auteur Posté(e) le 26 novembre 2007 Bonsoir à toutes et tous, J''ai bien compris la manip à faire, le problème c'est que je n'ai rien en surbrillance et AutoCAD ne répond plus, <!--url{0}--> je suis obligé de passer par le gestionnaire des taches. Il n'ouvre même pas le Lisp. J'ai essayé également en ouvrant d'abord le Lisp, toujours rien ?? ! <!--url{1}--> Merci d'avance si tu as une idée,sinon ce n'est pas non plus dramatique,... J Je laisse un des fichiers en lien ici si cela peut aider !!?? Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 26 novembre 2007 Posté(e) le 26 novembre 2007 J'ai regardé ton fichier, certaines hachures n'ayant plus leur contour, leur propriété "aire" n'est plus accessible. Essaye d'en sélectionner une, tu ne pourras lire son aire ni dans la fenêtre de propriétés, ni avec la commande LISTE. Voilà une version qui envoie un message d'alerte dans ce cas là, mais permet de poursuivre quand même. (defun c:Hatch2Excel (/ acdoc name tot area err lst file cell sheet n) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))) (vlax-for l (vla-get-Layers acdoc) (setq name (vla-get-Name l) tot 0.0 ) (if (ssget "_X" (list '(0 . "HATCH") (cons 8 name))) (progn (vlax-for h (vla-get-ActiveSelectionSet acdoc) (setq area (vl-catch-all-apply 'vla-get-area (list h))) (if (vl-catch-all-error-p area) (setq err T) (setq tot (+ tot (/ (vla-get-area h) 10000))) ) ) (setq lst (cons (list name tot) lst)) ) ) ) (setq lst (vl-sort lst (function (lambda (x1 x2) ( ) ) (and err (alert "Certaines hachures n'ayant plus leur contour, \nleurs aires ne seront pas comptabilisées" ) ) (if (member (type getexcel) '(SUBR USUBR)) (if (setq file (getfiled "Choisir ou créer un fichier Excel" "" "xls" 33)) (if (member (type doubleinputbox) '(SUBR USUBR)) (progn (while (not (and (setq cell (doubleinputbox "Hachures vers Excel" "Nom de la feuille Excel" "Cellule de départ" "Feuil1" "A1" ) sheet (car cell) cell (cadr cell) ) (cell-p cell) ) ) (alert "Référence de cellule non valide.") ) (and (= sheet "") (setq sheet nil)) (OpenExcel (cond ((findfile file))) sheet nil) (repeat (setq n (length lst)) (putCell cell (car lst)) (setq lst (cdr lst) cell (Row+n cell 1) ) ) ;;---------------- Somme des surfaces ----------------;; (putCell cell (list "Total" (strcat "=somme(" (column+n (row+n cell (- n)) 1) ":" (column+n (row+n cell (- 1)) 1) ) ) ) ;;----------------------------------------------------;; (CloseExcel file) ) (alert "La routine LISP DoubleInputBox doit être chargée.") ) ) (alert "GetExcel.lsp doit être chargé") ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 26 novembre 2007 Auteur Posté(e) le 26 novembre 2007 Re, certaines hachures n'ayant plus leur contour, leur propriété "aire" n'est plus accessible Oups, désolé ! A aucun moment je n'ai pensé à ça,... ça marche sur tous les fichiers qui posaient problèmes maintenant. Merci beaucoup (gile) car cette routine est vraiment trés intéressante en avant-métré et garantit un travail sûr. En plus, maintenant je sais que si il n'y à plus de contour, il n'y aura pas non plus de surfaces dans le fichier récapitulatif, c'est bien mieux que de ne rien faire et surtout de ne pas savoir,... Bonne nuit. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
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