Exploitation de popup_list

Exploitation de popup_list

Anonymous
Not applicable
912 Views
0 Replies
Message 1 of 1

Exploitation de popup_list

Anonymous
Not applicable

Bonjour,

J'ai deux popup list dans mon programme. Une pour donner le nom des éléments et une pour le type de bordure à insérer.

Pour l'instant mon programme insère qu'une T2 comme type de bordure, or j'aimerai qu'il insère la bordure rentré par l'utilisateur. Ensuite j'aimerai une cotation avec le nom de chaque élément et leur longueur.

 

Aucun de mes professeurs n'arrivent à m'aider, je n'arrive plus à avancer,

Je vous remercie

 

Voici mon lisp:

(defun chausse_dlg (nb / i tmp file lst dcl_id status result)
  ;; création d'un fichier DCL temporaire
  (setq tmp  (vl-filename-mktemp "tmp.dcl")
 file (open tmp "w")
 i    1
  )
  ;; écriture du fichier DCL
  (princ
    "chaussee : dialog {
        label = \"Profil type\";"
    file
  )
  (repeat nb
    (princ
      (strcat
 ": row {
             : popup_list {
                 key = \"type"
 (itoa i)
 "\";
                 label = \"Type d'élément "
 (itoa i)
 "\";
                 fixed_width_font = true;
                 width = 30;
                 value = \"0\";
             }
             : edit_box {
                key = \"longueur"
 (itoa i)
 "\";
                label = \"longueur"
 (itoa i)
 "\";
             }
             : edit_box {
                 key = \"pente"
 (itoa i)
 "\";
                 label = \"Pente"
 (itoa i)
 "\";
             }}
            
             : column {
          : popup_list {
                 key = \"Séparateur"
 (itoa i)
 "\";
                 label = \"Séparateur "
 (itoa i)
 "\";
                 fixed_width_font = true;
                 width = 20;
                 value = \"0\";
             }
         }"
      )
      file
    )
    (setq i (1+ i))
  )
  (princ ": boxed_row { ok_cancel; }}" file)
  (close file)

  ;; chargement de la boite de dialogue
  (setq dcl_id (load_dialog tmp))
  (new_dialog "chaussee" dcl_id)

 (setq Names '("Chaussée" "Trottoir" "Parking" "piste cyclable" "végétation"))
 (setq Bordure '("T2" "T3" "T4" "aucun"))
  ;; initialisation des rcontrôles
  (setq i 1)
  (repeat nb
    (set (read (strcat "type" (itoa i))) (car Names))
    (start_list (strcat "type" (itoa i)))
    (mapcar 'add_list Names)
    (end_list)
   
        (set (read (strcat "Séparateur" (itoa i))) (car Bordure))
    (start_list (strcat "Séparateur" (itoa i)))
    (mapcar 'add_list Bordure)
    (end_list)
   
    (action_tile
      (strcat "type" (itoa i))
      (vl-princ-to-string
 (list 'setq
       (read (strcat "type" (itoa i)))
       '(nth (atoi $value) Names)
 )
      )
    )
    (action_tile
      (strcat "longueur" (itoa i))
      (vl-princ-to-string
 (list 'setq (read (strcat "longueur" (itoa i))) '$value)
      )
    )
    (action_tile
      (strcat "pente" (itoa i))
      (vl-princ-to-string
 (list 'setq (read (strcat "pente" (itoa i))) '$value)
      )
    )

  (action_tile
      (strcat "Séparateur" (itoa i))
      (vl-princ-to-string
 (list 'setq
       (read (strcat "Séparateur" (itoa i)))
       '(nth (atoi $value) Bordure)
 )
 )
      )
    (setq i (1+ i))
  )
 
  (action_tile "accept" "(done_dialog 1)")
  (action_tile "cancel" "(done_dialog 0)")

  ;; affichage de la boite de dialogue
  (setq status (start_dialog))
  (unload_dialog dcl_id)

  ;; suppression du ficher DCL temporaire
  (vl-file-delete tmp)

  ;; traitement des données
    (if (= status 1)
     (repeat nb
      (setq i      (1- i)
          result (cons
                    (mapcar
                     '(lambda (s) (eval (read (strcat s (itoa i)))))
                      '("type" "longueur" "pente" "Séparateur")
                  )
                  result
               )
 )
      (foreach s '("type" "longueur" "pente" "Séparateur")
      (set (read (strcat s (itoa i))) nil)
     )
    )
    )
    result
 )

 


;                                                 

(defun T2()
   (setq p2 (polar Pt2 (/ pi 2) 0.25))
   (setq p3 (polar p2 0 0.15))
   (setq p4 (polar Pt2 0 0.15))
   (command "polylign" Pt2 p2 p3 p4 "c")
  (princ)
  )

;                                                

(defun T3()
   (setq p2 (polar Pt2 (/ pi 2) 0.28))
   (setq p3 (polar p2 0 0.17))
   (setq p4 (polar Pt2 0 0.17))
   (command "polylign" Pt2 p2 p3 p4 "c")
  (princ)
  )

;                                                

(defun T4()
   (setq p2 (polar Pt2 (/ pi 2) 0.30))
   (setq p3 (polar p2 0 0.20))
   (setq p4 (polar Pt2 0 0.20))
   (command "polylign" Pt2 p2 p3 p4 "c")
  (princ)
  )
 
;                                                

(defun c:test (/ nb Pt1 ang0 hyp Pt2)
  (setq i 1)
 
  (initialisation)
   (setvar "osmode" 0)
   (setvar "aunits" 0)
 
  (initget 7)
  (setq Pt1 (getpoint "Choisi l'axe de la chaussée"))
  (setq Pta Pt1)
  (setq nb
  (getint
    "\nDonner le nombre d'élément voulu sur le demi-profil droit: (exemple:chaussée,piste cyclable, parking...)"
  )
  )
 
  (foreach n (chausse_dlg nb)
    (setq ang0 (atan (/ (distof (caddr n)) 90)))
    (setq hyp (/ (distof (cadr n)) (cos ang0)))
    (setq Pt2 (polar Pt1 ang0 hyp))
    (command "_.pline" "_non" Pt1 "_non" Pt2 "")

       (setq p2 (polar Pt2 (/ pi 2) 0.25))
   (setq p3 (polar p2 0 0.15))
   (setq p4 (polar Pt2 0 0.15))
   (command "polylign" Pt2 p2 p3 p4 "c")
  (princ)
   
    (setq Pt1 p3)
    )
 
(cond
  ((= i 0)(T2))
  ((= i 1)(T3))
  ((= i 2)(T4))
)

 
(setq p5 (polar Pta (/ pi 2) 1))
 


 (initget 1 "Oui Non")
 (setq kw(getkword "\nSouhaitez vous une symétrie du demi-profil ? [Oui/Non] <N>: "))
 (if (= kw "Oui")        
 (command "MIROIR" "tout" "" Pta p5 "n")
 ()
 )

 


  (princ "\nSélectionner la polyligne à coter. ")

  (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))

  (cond

    (js

     (vl-load-com)

     (setq

       dxf_ent (entget (setq ent (ssname js 0)))

       lst_pt  (mapcar

                 '(lambda (x) (trans x ent 0))

                 (mapcar

                   'cdr

                   (vl-remove-if '(lambda (x) (/= (car x) 10)) dxf_ent)
                 )
               )
     )

     (if (= 1 (logand 1 (cdr (assoc 70 dxf_ent))))

       (setq lst_pt (reverse (cons (car lst_pt) (reverse lst_pt))))

     )

     (setq

       AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))

       Space

             (if (= 1 (getvar "CVPORT"))

               (vla-get-PaperSpace AcDoc)

               (vla-get-ModelSpace AcDoc)
             )
     )

     (if (equal (car lst_pt) (last lst_pt) 1e-9)

       (vla-addDimAngular

         Space

         (vlax-3d-point (car lst_pt))

         (vlax-3d-point (cadr (reverse lst_pt)))

         (vlax-3d-point (cadr lst_pt))

         (vlax-3d-point

           (polar

             (car lst_pt)

             (angle

               (car lst_pt)

               (mapcar '*

                       (mapcar '+ (cadr (reverse lst_pt)) (cadr lst_pt))

                       '(0.5 0.5 0.5)
               )
             )
             (* 10 (getvar "DIMTXT"))
           )
         )
       )
     )

     (while (cdr lst_pt)

       (vla-addDimAligned

         Space

         (vlax-3d-point (car lst_pt))

         (vlax-3d-point (cadr lst_pt))

         (vlax-3d-point

           (polar

             (mapcar '*

                     (mapcar '+ (car lst_pt) (cadr lst_pt))

                     '(0.5 0.5 0.5)

             )

             (+ (angle (car lst_pt) (cadr lst_pt)) (* pi 0.5))

             (* 10 (getvar "DIMTXT"))
           )
         )
       )

       (if (cddr lst_pt)

         (vla-addDimAngular

           Space

           (vlax-3d-point (cadr lst_pt))

           (vlax-3d-point (car lst_pt))

           (vlax-3d-point (caddr lst_pt))

           (vlax-3d-point

             (polar

               (cadr lst_pt)

               (angle

                 (cadr lst_pt)

                 (mapcar '*

                         (mapcar '+ (caddr lst_pt) (car lst_pt))

                         '(0.5 0.5 0.5)
                 )
               )
               (* 10 (getvar "DIMTXT"))
             )
           )
         )
       )
       (setq lst_pt (cdr lst_pt))
     )
    )
  )

  (prin1)

  
  (reini)
)
 


(defun initialisation()
  (setq acob (getvar "osmode"))
  (setq units (getvar "aunits"))
)

(defun reini()
  (setvar "osmode" acob)
  (setvar "aunits" units)
)

(defun recup()
(setq a (get_tile "Séparateur"))
(setq i (atoi a))
(done_dialog)
)

0 Likes
913 Views
0 Replies
Replies (0)