Aller au contenu

[Résolu] Petit souci avec SelectCalq.dcl


Messages recommandés

Posté(e)

Bonjour à tous.

 

Voilà, j'ai une routine qui fonctionnait bien, mais plus maintenant...

 

Elle me permettait de cumuler les longueurs des polylignes par calque.

 

Voici le LISP :

;;;*****************************************************************************************
;;; Calcul les sommes des Polylignes depuis une liste de calque (issu de SomPoly de (gile)) 
;;;*****************************************************************************************
(defun c:DHSomPoly
      (/ List1@ Value1$ Som LstCalq calque Dist Dcl_Id% Dist Return#)
 (princ "\nSomme des Polylignes par calques")
 (if (not *DHSomPolye@)                ;Unique global variable name to store dialog info
   (setq *DHSomPoly@ (list nil "" ""))
 ) ;_ Fin de if
 (setq Value1$ nil
       List1@ nil
       Som 0
 ) ;_ Fin de setq
 (while (setq lay (tblnext "LAYER" (not lay)))
   (if (not (wcmatch (cdr (assoc 2 lay)) "*|*"))
     (setq List1@ (cons (cdr (assoc 2 lay)) List1@))
   ) ;_ Fin de if
 ) ;_ Fin de while
 (setq List1@ (vl-sort List1@ '<))
 (setq Dcl_Id% (load_dialog "SelectCalque.dcl"))
 (new_dialog "SelectCalque" Dcl_Id%)   ; Set Dialog Initial Settings
 (set_tile "Title" "Sélection de calques")
 (set_tile_list "List1" List1@ Value1$) ;*Included
 ;; Dialog Actions
 (action_tile "List1" "(set_multilist_value \"List1@\" \"Value1$\")")
 ;;*Included
 (setq Return# (start_dialog))
 ;; Unload Dialog
 (unload_dialog Dcl_Id%)
 (setq LstCalq Value1$)
 (foreach calque LstCalq
   (setq Dist (polyLengthByLayer calque))
   (princ
     (strcat "\nLe calque '" calque "' contient " (rtos Dist 2 1) "m") ;_ Fin de strcat
   ) ;_ Fin de if
   (setq Som (+ Som Dist))
 ) ;_ Fin de foreach
 (princ (strcat "\nPour un total de : " (rtos Som 2 1) "m"))
 (princ)
) ;_ Fin de defun;;;
;;;********************************
(defun polyLengthByLayer (layer / len ss)
 (vl-load-com)
 (or *acdoc*
     (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
 ) ;_ Fin de or
 (setq len 0)
 (if (ssget "_X" (list '(0 . "lwpolyline") (cons 8 layer)))
   (progn (vlax-for pl (setq ss (vla-get-ActiveSelectionSet *acdoc*))
               (setq len (+ len (vla-get-Length pl)))
       ) ;_ Fin de vlax-for
       (vla-Delete ss)
   ) ;_ Fin de progn
 ) ;_ Fin de if
 len
) ;_ Fin de defun

Et voici ma DCL (SelectCalque.dcl) :

//-------------
// SelectCalque
//-------------
SelectCalque : dialog {
 key = "Title";
 label = "";
 : boxed_column {
   label = "Sélection multiple";
   : list_box {
     multiple_select = true;
     key = "List1";
     height = 40;
     fixed_height = true;
     width = 50;
     fixed_width = true;
   }
   spacer;
 }
 spacer;
 ok_only
 ;}//SelectCalque

 

Si quelqu'un a une astuce, un conseil... Je suis preneur...

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)

Posté(e)

En fait, et je ne sais pas pourquoi, mon LISP n'était pas complet ? ? ?

 

Tout était ...

 

Si un modérateur passe par ici, il peut effacer ce fil...

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)

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité