couma-co Posté(e) le 15 juin 2006 Posté(e) le 15 juin 2006 Salut, ben voilà, je debute en lisp, un peu par obligation, car j'ai changé de boite et j'ai plus covadis :calim: Donc j'ai recuperer un prog en lisp sur le forum :thumbup: pour metrer des longueurs de polylignes, bref maintenant j'aimerais recupere le texte de la boite de dialogue et l'inserer dans mon dessin.J'ai essayé de compiler avec un prog qui le fait pour les surfaces mais....... :mad2: Au fait le prog d'origine: (defun mkfilt (typ / bdd lstflt)(setq bdd '(8 6 0))(if (assoc 210 typ)(if (not (equal (assoc 210 typ) '(210 0.0 0.0 1.0)))(progn(initget "Oui Non")(if(eq(getkword(strcat"\nRécupérer les entités "(cdr (assoc 0 typ))" non construites dans le SCG [Oui/Non]: "))"Oui")(setq bdd(cons -4(append (list (cons -4 "*") '(210 0.0 0.0 1.0)) bdd)))(setq bdd(cons -4(append (list (cons -4 "=") '(210 0.0 0.0 1.0)) bdd)))))))(setq bddtyp bdd)(repeat (length bdd)(cond((assoc (car bdd) typ)(setq lstflt (cons (assoc (car bdd) typ) lstflt)))((= (car bdd) -4)(setq lstflt (cons (cadr bdd) (cons (caddr bdd) lstflt)))(setq bdd (cddr bdd))))(setq bdd (cdr bdd)))(print lstflt)(initget "Toutes Sélectionnées")(cond((eq (getkword "\nMode de récupération des polylignes [Toutes/Sélectionnées] :? ") "Sélectionnées")(ssget lstflt))(T(ssget "X" lstflt))))(defun c:METREPL ( / sav_dim sav_lup typent typ_l js cmpt nbr ent)(setvar "CMDECHO" 0)(setq sav_dim (getvar "DIMZIN"))(setq sav_lup (getvar "LUPREC"))(setvar "DIMZIN" 0)(if (not precision)(progn(initget 4)(setq precision(getint(strcat"\nEntrer la précision désiré <"(itoa (getvar "LUPREC"))">: ")))))(if (not precision) (setq precision (getvar "LUPREC")))(setvar "LUPREC" precision)(if (not unite)(progn(initget "KM M CM MM")(setq unite (getkword "\nEntre l'unité utilisé [Km/m/cm/mm] : "))))(if (not unite) (setq unite "M"))(while (null (setq typent (entsel "\nChoix du type d'entité : "))))(setq typent (entget (car typent)) js (ssadd) typ_l (if (assoc 6 typent) (cdr (assoc 6 typent)) "ByLayer"))(cond((= (cdr (assoc 0 typent)) "LWPOLYLINE")(setq js (mkfilt typent)))((= (cdr (assoc 0 typent)) "POLYLINE")(setq js (mkfilt typent)))(T (prompt "\nLa commande ne traite que les POLYLIGNES simples ou optimisées.") (setq js nil)))(cond(js(setq cmpt 0 nbr 0)(print (sslength js))(prompt (strcat " Entité(s) " (cdr (assoc 0 typent)) " trouvé(s).\n"))(repeat (sslength js)(setq ent (ssname js nbr))(command "_.area" "_object" ent)(setq cmpt (+ (getvar "perimeter") cmpt))(setq nbr (1+ nbr))(if (< nbr 32767)(setq nbr (1+ nbr))(setq nbr (+ 1.0 nbr))))(print cmpt)(princ (strcat unite " de Polyligne avec type de ligne " typ_l)))(t (prompt "\nSélection vide ou non valide..!")))(setq *error* olderr)(setvar "DIMZIN" sav_dim)(setvar "LUPREC" sav_lup)(princ)) [Edité le 15/6/2006 par couma-co]
bonuscad Posté(e) le 15 juin 2006 Posté(e) le 15 juin 2006 Bonjour, Mets simplement en remarques avec ";" (semi-colon) les lignes: ; (print cmpt); (princ (strcat unite " de Polyligne avec type de ligne " typ_l)) et rajoute juste à la suite (ou à la place) de ces lignes, les suivantes: (setvar "cmdecho" 1)(command "_.text" pause pause pause(strcat (itoa nbr) " Entité(s) " (cdr (assoc 0 typent)) " avec le type de ligne " typ_l " pour une longueur totale de " (rtos cmpt) unite)) Je te laisse ajuster le texte à ta convenance s'il ne convient pas ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
couma-co Posté(e) le 15 juin 2006 Auteur Posté(e) le 15 juin 2006 :D merci bonuscad, c'est trop fort !A trés bientôt
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