x_all Posté(e) le 15 septembre 2009 Posté(e) le 15 septembre 2009 j'ai retouché un lisp qui donnait la somme des longueurs de polylignes par calque pour qu'il me donne les surfaces.. ça marche ... voila le résulta de la sortie... Commande: sfr Choix des objets: Spécifiez le coin opposé: 6 trouvé(s) Choix des objets: Le dessin contient : 6 polylignes ferméesP1603.089 Calque : -see RH texteP2603.089 Calque : -see RH euP3603.089 Calque : -see RH euP4603.089 Calque : -SEE RH AEPP5603.089 Calque : -SEE RH AEPP6603.089 Calque : -SEE RH AEPSURFACE totale sur le calque -SEE RH AEP : 1809.266SURFACE totale sur le calque -see RH eu : 1206.177SURFACE totale sur le calque -see RH texte : 603.089SURFACE totale dans le dessin = 3618.531 je voudrai supprimer la sortie des lignes P1.... pour avoir juste les surfaces totale par calque... et là, je perd mon latin ... quand je met en commentaire le princ incriminé, il me dit au formatage dans l'éditeur : ; erreur: nombre d'arguments trop important: (IF (SETQ SS ( ... )) (PROGN ( ... ) ( ... ) ( ... ) ... ) (MAPCAR ( ... ) LST) ... ); erreur: parenthèse fermante supplémentaire en entrée pourtant je ne fait que sortir (setq n (1+ n)) qui me parrait etre indispenssable... ((defun c:sfr (/ ss tot nb n surf obj lst lay l_lay) (vl-load-com) (if (setq ss (ssget '((0 . "LWPOLYLINE") (-4 . "&") (70 . 1)))) (progn (setq nb (sslength ss) n 0 tot 0.0 ) (princ (strcat "\n\nLe dessin contient : " (itoa nb) " polylignes fermées" ) ) (repeat nb (setq obj (vlax-ename->vla-object (ssname ss n)) surf (vla-get-area obj) tot (+ tot surf) lay (vla-get-Layer obj) ) (setq n (1+ n)) ; (princ (strcat "\nP" ; (itoa (setq n (1+ n))) ; (rtos surf) ; "\tCalque : " ; lay ; ) ) (if (setq l_lay (assoc lay lst)) (setq lst (subst (cons lay (+ surf (cdr l_lay))) l_lay lst)) (setq lst (cons (cons lay surf) lst)) ) ) (mapcar '(lambda (x) (princ (strcat "\nSURFACE totale sur le calque " (car x) " : " (rtos (cdr x)) ) ) ) lst ) (princ (strcat "\nSURFACE totale dans le dessin = " (rtos tot)) ) (textscr) ) (princ "\nLe dessin ne contient pas de polylignes.") ) (princ) ) ) en retrait les lignes que je veux commenter, et juste au dessus l'incrémentation incriminée... merci... de me donner qqs explication... comme dit la chanson... ça m'énerve... quelques trucs sur autocad
philouie Posté(e) le 15 septembre 2009 Posté(e) le 15 septembre 2009 Salam, peut-être en supprimant une parenthèse de plus -->celle qui ferme (princ philouie
x_all Posté(e) le 15 septembre 2009 Auteur Posté(e) le 15 septembre 2009 ho pinaise !!! elle vont me rendre fou ces )))grrrr((( quelques trucs sur autocad
Guigues Posté(e) le 16 septembre 2009 Posté(e) le 16 septembre 2009 salut x_all Je te conseille, si tu ne l'utilises pas déja, GBEPad qui remplace le bon vieux notepad de windows. Il marche sans s'installer (simple copier du repertoire) et il integre le surlignage des parentheses pour se verifier... Cerise sur le gateau c'est un gratuiciel Lien : http://www.gratuiciel.com/gratuiciel/?editeur-de-texte
(gile) Posté(e) le 16 septembre 2009 Posté(e) le 16 septembre 2009 Je recommande fortement l'utilisation de l'éditeur Visual LISP (VLIDE) qui est bien plus qu'un éditeur de texte amélioré.Pour l'appariement des parenthèses, il suffit de double cliquer avant une parenthèse ouvrante ou après une parenthèse fermante pour sélectionner toute l'expression.Il est intégré à AutoCAD, permet l'évaluation directe d'expression, et fournit de nombreuses fonction de débogage. ; erreur: nombre d'arguments trop important: (IF (SETQ SS ( ... )) (PROGN ( ... ) ( ... ) ( ... ) ... ) (MAPCAR ( ... ) LST) ... ) Une expression if n'accepte que 2 ou 3 arguments : une expression condition, une seule expression "alors" et optionnellement une seule expression "sinon". Dans ton code, il y a 4 expressions après la conditionnelle (ce qu fait 5 arguments en tout) : (if (setq ss ...) (progn (setq ...) (princ ....) (repeat ...) (setq ...) ) ;_ fin de progn (mapcar ...) (princ ...) (textscr) ) ;_fin de if alors qu'il me semble que tu veux faire : (if (setq ss ...) (progn (setq ...) (princ ....) (repeat ...) (setq ...) (mapcar ...) (princ ...) (textscr) ) ;_fin de progn (princ ...) ) ;_fin de if Je pense que c'est quand tu as commenté l'expression (princ (strcat ...)) que tu as oublié une parenthèse fermante. ; erreur: parenthèse fermante supplémentaire en entrée Il y en a déjà une ouvrante de trop au début du code ((defun ... , ensuite l'erreur cité ci dessus et pour finir une parenthèse fermante de trop à la fin (princ))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
x_all Posté(e) le 16 septembre 2009 Auteur Posté(e) le 16 septembre 2009 yes je me sert de l'éditeur d'autocad.. il est trés bien... mais je ne peux pas dire que je crée ces codes.. je récupère des bouts à droite et à gauche et fait des copier coller... en fait juste j'apprends à lire le lisp... mais malgré l'identification, j'ai du mal a suivre les parenthèses... au passage... si je veux insérer une tabulation pour mieux présenter la sortie.. comment je peux faire?je trouve rien sur la mise en forme dans l'aide... edit....................... j'ai trouvé c'est \t mais bon... c pas géant le résultat... La sélection contient : 303 lignes ou polylignesLongueur totale sur le calque -see vo Cloture : 1520Longueur totale sur le calque -see vo BB enrobé : 2360Longueur totale sur le calque -see vo BB coloré : 1960Longueur totale sur le calque -see vo P2 : 1580Longueur totale sur le calque -see vo T2 : 1200Longueur totale sur le calque -see vo talus : 600Longueur totale dans le dessin = 9220 Commande: grrrr l'éditeur du forum bouffe les espaces... [Edité le 16/9/2009 par x_all] quelques trucs sur autocad
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