Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

je suis en Lpro CAO-DAO dans le bâtiment et débutant sur LISP.

J'ai un projet à réaliser pour la fin de l'année et je suis bloqué.

Le but du projet est d'automatiser, à partir de la vue en plan d'une fosse ascenseur, le dessin des deux coupes correspondantes en utilisant une boite de dialogue afin de rentrer les différentes caractéristiques de la fosse.

 

Actuellement j'ai la boite de dialogue qui fonctionne:

 

coffrage : dialog {
 key = "titre";
 label = "Fosse ascenseur";
 spacer;

:row {

 :image {
   width = 50;
   aspect_ratio = 1;
   color = 0;
   key = img;
 }

 :boxed_column {
   label = "Coffrage";
 
   : edit_box {
     label = "&Hauteur de la fosse:";
     key = "H_fosse";
     edit_width = 10;
   }
 
   : edit_box {
     label = "&Largeur de la fosse:";
     key = "larg_fosse";
     edit_width = 10;
   }
 
   : edit_box {
     label = "&Longueur de la fosse:";
     key = "long_fosse";
     edit_width = 10;
   }

   : edit_box {
     label = "&Epaisseur des voiles:";
     key = "ep_voiles";
     edit_width = 10;
   }
 
 
   : edit_box {
     label = "&Epaisseur du radier:";
     key = "ep_radier";
     edit_width = 10;
   }

   : edit_box {
     label = "&Débord du radier:";
     key = "deb_radier";
     edit_width = 10;
   }

   : edit_box {
     label = "&Epaisseur contre-dalle:";
     key = "ep_contre_dalle";
     edit_width = 10;
   }

 }
}

 spacer;
 ok_cancel;
}

 

Et un programme LISP, fonctionnant également:

 

(defun c:coffrage_fosse()

;Options autocad
(setvar "cmdecho" 0)
(setvar "osmode" 0)


;Définition des variables
(setq H_fosse (getdist "\nHauteur de la fosse:"))
(setq larg_fosse (getdist "\nLargeur de la fosse (entre voiles):"))
(setq long_fosse (getdist "\nLongeur de la fosse (entre voiles):"))
(setq deb_radier (getdist "\nValeur du débord du radier:"))
(setq ep_radier (getdist "\nEpaisseur du radier:"))
(setq ep_voiles (getdist "\nEpaisseur des voiles:"))
(setq ep_dalle (getdist "\nEpaisseur de la dalle:"))


;Coupe B-B

;Tracé de la polyligne extérieur
(setq BB_pt0 (getpoint "\nPoint de départ de la fosse à cliquer:"))
(setq BB_pt0bis (polar BB_pt0 0 30))
(setq BB_pt1 (polar BB_pt0 (- (/ pi 2)) (- H_fosse ep_dalle)))
(setq BB_pt2 (polar BB_pt1 0 deb_radier))
(setq BB_pt3 (polar BB_pt2 (- (/ pi 2)) ep_radier))
(setq BB_pt4 (polar BB_pt3 pi (+ (* deb_radier 2) (* ep_voiles 2) larg_fosse)))
(setq BB_pt5 (polar BB_pt4 (/ pi 2) ep_radier))
(setq BB_pt6 (polar BB_pt5 0 deb_radier))
(setq BB_pt7 (polar BB_pt6 (/ pi 2) (+ H_fosse 50)))

(command "polylign" BB_pt0bis "la" 0 0 BB_pt0 BB_pt1 BB_pt2 BB_pt3 BB_pt4 BB_pt5 BB_pt6 BB_pt7 "")

 
;Tracé de la polyligne intérieur	 
(setq BB_pt8 (polar BB_pt7 0 ep_voiles))
(setq BB_pt9 (polar BB_pt6 0 ep_voiles))
(setq BB_pt10 (polar BB_pt9 0 larg_fosse))
(setq BB_pt11 (polar BB_pt10 (/ pi 2) H_fosse))
(setq BB_pt11bis (polar BB_pt11 0 (+ ep_voiles 30)))

(command "polylign" BB_pt8 "la" 0 0 BB_pt9 BB_pt10 BB_pt11 BB_pt11bis "")


;Tracé de la contre-dalle
(setq ep_contre_dalle (getdist "\nEpaisseur de la contre-dalle:"))

(setq BB_pt_cd1 (polar BB_pt9 (/ pi 2) ep_contre_dalle))
(setq BB_pt_cd2 (polar BB_pt10 (/ pi 2) ep_contre_dalle))

(command "ligne" BB_pt_cd1 BB_pt_cd2 "")



;Coupe A-A

;Tracé de la polyligne extérieur
(setq AA_pt0bis (polar BB_pt0 pi (+ (* deb_radier 2) (* ep_voiles 2) larg_fosse 300)))
(setq AA_pt0 (polar AA_pt0bis pi 30))
(setq AA_pt1 (polar AA_pt0 (- (/ pi 2)) (- H_fosse ep_dalle)))
(setq AA_pt2 (polar AA_pt1 0 deb_radier))
(setq AA_pt3 (polar AA_pt2 (- (/ pi 2)) ep_radier))
(setq AA_pt4 (polar AA_pt3 pi (+ (* deb_radier 2) (* ep_voiles 2) long_fosse)))
(setq AA_pt5 (polar AA_pt4 (/ pi 2) ep_radier))
(setq AA_pt6 (polar AA_pt5 0 deb_radier))
(setq AA_pt7 (polar AA_pt6 (/ pi 2) (+ H_fosse 50)))

(command "polylign" AA_pt0bis "la" 0 0 AA_pt0 AA_pt1 AA_pt2 AA_pt3 AA_pt4 AA_pt5 AA_pt6 AA_pt7 "")

 
;Tracé de la polyligne intérieur
(setq AA_pt8 (polar AA_pt7 0 ep_voiles))
(setq AA_pt9 (polar AA_pt6 0 ep_voiles))
(setq AA_pt10 (polar AA_pt9 0 long_fosse))
(setq AA_pt11 (polar AA_pt10 (/ pi 2) (+ H_fosse 50)))

(command "polylign" AA_pt8 "la" 0 0 AA_pt9 AA_pt10 AA_pt11 "")


;
(setq AA_pt12 (polar AA_pt11 0 ep_voiles))
(setq AA_pt13 (polar AA_pt12 (- (/ pi 2)) 50))
(setq AA_pt14 (polar AA_pt0bis (/ pi 2) ep_dalle))

(command "polylign" AA_pt12 "la" 0 0 AA_pt13 AA_pt14 "")


;Tracé de la contre-dalle
(setq AA_pt_cd1 (polar AA_pt9 (/ pi 2) ep_contre_dalle))
(setq AA_pt_cd2 (polar AA_pt10 (/ pi 2) ep_contre_dalle))

(command "ligne" AA_pt_cd1 AA_pt_cd2 "")
	
)

 

Maintenant j'essaye de charger la boite de dialogue dans le programme LISP et de faire correspondre les valeurs rentrés dans la boite DCL aux variables créées dans le LISP. Mais cela ne fonctionne pas. Et je ne trouve pas l'erreur.

 

(defun C:fosse()
   
;Chargement de la boîte de dialogue 	  
(setq dcl_id (load_dialog "coffrage_fosse_bis.DCL"))
(if (not (new_dialog "coffrage" dcl_id)
     )
(exit)
)

;Chargement de l'image
(setq x1 (dimx_tile "img")
     y1 (dimy_tile "img")
)
(start_image "img")            
(slide_image 0 -20 x y "projet") 
(end_image) 

(action_tile "H_fosse" "(setq H_fosse1 $value)")
(action_tile "larg_fosse" "(setq larg_fosse1 $value)")
(action_tile "long_fosse" "(setq long_fosse1 $value)")
(action_tile "ep_voiles" "(setq ep_voiles1 $value)")
(action_tile "ep_radier" "(setq ep_radier1 $value)")
(action_tile "deb_radier" "(setq deb_radier1 $value)")
(action_tile "ep_contre_dalle" "(setq ep_contre_dalle1 $value)")

(action_tile "accept" "(done_dialog 1)")
(action_tile "cancel" "(done_dialog 0)")

(setq ok (start_dialog))
(unload_dialog dcl_id)


(defun c:coffrage_fosse()

;Options autocad
(setvar "cmdecho" 0)
(setvar "osmode" 0)

;Définition des variables
(setq H_fosse (atof H_fosse1))
(setq larg_fosse (atof larg_fosse1))
(setq long_fosse (atof long_fosse1))
(setq deb_radier (atof deb_radier1))
(setq ep_radier (atof ep_radier1))
(setq ep_voiles (atof ep_voiles1))
(setq ep_dalle (atof ep_dalle1))


;Coupe B-B

;Tracé de la polyligne extérieur
(setq BB_pt0 (getpoint "\nPoint de départ de la fosse à cliquer:"))
(setq BB_pt0bis (polar BB_pt0 0 30))
(setq BB_pt1 (polar BB_pt0 (- (/ pi 2)) (- H_fosse ep_dalle)))
(setq BB_pt2 (polar BB_pt1 0 deb_radier))
(setq BB_pt3 (polar BB_pt2 (- (/ pi 2)) ep_radier))
(setq BB_pt4 (polar BB_pt3 pi (+ (* deb_radier 2) (* ep_voiles 2) larg_fosse)))
(setq BB_pt5 (polar BB_pt4 (/ pi 2) ep_radier))
(setq BB_pt6 (polar BB_pt5 0 deb_radier))
(setq BB_pt7 (polar BB_pt6 (/ pi 2) (+ H_fosse 50)))

(command "polylign" BB_pt0bis "la" 0 0 BB_pt0 BB_pt1 BB_pt2 BB_pt3 BB_pt4 BB_pt5 BB_pt6 BB_pt7 "")

 
;Tracé de la polyligne intérieur	 
(setq BB_pt8 (polar BB_pt7 0 ep_voiles))
(setq BB_pt9 (polar BB_pt6 0 ep_voiles))
(setq BB_pt10 (polar BB_pt9 0 larg_fosse))
(setq BB_pt11 (polar BB_pt10 (/ pi 2) H_fosse))
(setq BB_pt11bis (polar BB_pt11 0 (+ ep_voiles 30)))

(command "polylign" BB_pt8 "la" 0 0 BB_pt9 BB_pt10 BB_pt11 BB_pt11bis "")


;Tracé de la contre-dalle
(setq ep_contre_dalle (atof ep_contre_dalle1))

(setq BB_pt_cd1 (polar BB_pt9 (/ pi 2) ep_contre_dalle))
(setq BB_pt_cd2 (polar BB_pt10 (/ pi 2) ep_contre_dalle))

(command "ligne" BB_pt_cd1 BB_pt_cd2 "")





;Coupe A-A

;Tracé de la polyligne extérieur
(setq AA_pt0bis (polar BB_pt0 pi (+ (* deb_radier 2) (* ep_voiles 2) larg_fosse 300)))
(setq AA_pt0 (polar AA_pt0bis pi 30))
(setq AA_pt1 (polar AA_pt0 (- (/ pi 2)) (- H_fosse ep_dalle)))
(setq AA_pt2 (polar AA_pt1 0 deb_radier))
(setq AA_pt3 (polar AA_pt2 (- (/ pi 2)) ep_radier))
(setq AA_pt4 (polar AA_pt3 pi (+ (* deb_radier 2) (* ep_voiles 2) long_fosse)))
(setq AA_pt5 (polar AA_pt4 (/ pi 2) ep_radier))
(setq AA_pt6 (polar AA_pt5 0 deb_radier))
(setq AA_pt7 (polar AA_pt6 (/ pi 2) (+ H_fosse 50)))

(command "polylign" AA_pt0bis "la" 0 0 AA_pt0 AA_pt1 AA_pt2 AA_pt3 AA_pt4 AA_pt5 AA_pt6 AA_pt7 "")

 
;Tracé de la polyligne intérieur
(setq AA_pt8 (polar AA_pt7 0 ep_voiles))
(setq AA_pt9 (polar AA_pt6 0 ep_voiles))
(setq AA_pt10 (polar AA_pt9 0 long_fosse))
(setq AA_pt11 (polar AA_pt10 (/ pi 2) (+ H_fosse 50)))

(command "polylign" AA_pt8 "la" 0 0 AA_pt9 AA_pt10 AA_pt11 "")


;
(setq AA_pt12 (polar AA_pt11 0 ep_voiles))
(setq AA_pt13 (polar AA_pt12 (- (/ pi 2)) 50))
(setq AA_pt14 (polar AA_pt0bis (/ pi 2) ep_dalle))

(command "polylign" AA_pt12 "la" 0 0 AA_pt13 AA_pt14 "")


;Tracé de la contre-dalle
(setq AA_pt_cd1 (polar AA_pt9 (/ pi 2) ep_contre_dalle))
(setq AA_pt_cd2 (polar AA_pt10 (/ pi 2) ep_contre_dalle))

(command "ligne" AA_pt_cd1 AA_pt_cd2 "")

)

 

Si quelqu'un à la moindre info intéressante, je suis preneur.

 

Merci.

 

Quentin.

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é