Invité -=micka=- Posté(e) le 4 mai 2011 Posté(e) le 4 mai 2011 Bonjour, je suis débutant en Lisp et je souhaite faire un programme qui me permettra de faire le calepinage d'éléments de coffrage autour d'un mur (pour une vue en coupe) J'ai commencé mais je dois dire que je bloque un peu. Voila mon souci:Mon programme doit insérer des blocs autours d'un mur en coupe, en calculant la bonne combinaison.Je dispose de 4 blocs une sous-hausse de 1m, une ré-hausse de 0.5m, une banche de 2m et une de 3m.Sachant que la sous-hausse ne peut être positionnée qu'en pied du mur et en un seul exemplaire, de même pour la ré-hausse mais en haut du mur.Pour les banches de 2 et 3m il n'y a pas de contrainte de nombre ni de positionOn n’est pas obligé d'avoir de sous-hausse et de ré-hausse, c'est la hauteur du mur qui va conditionner tout ça. (J'espère ne pas vous avoir perdu :) ) Donc mon idée, était de commencer par calculer le nombre de banche de chaque type en premier et ensuite de mettre des conditions pour insérer les blocs. Au début je demande si l'axe du mur est tracé pour pouvoir à la fin faire la commande miroir pour avoir les banches de chaque coté du mur (defun c:elevation() (setvar "cmdecho" 0) (command "insunits" "6") ;initialise l'unité du dessin en mètre (setvar "attdia" 0) (setq axeexist (getstring prompt"\n L'axe de l'ouvrage est-il dessiné? [O] ou [N]")) (cond ((or(= axeexist "O")(= axeexist "o")) (prompt "\n Très bien")) ((or (= axeexist "N")(= axeexist "n")) ((prompt "\nDessinez l'axe de l'élément") (command "calque" "n" "axe" "co" 1 "axe" "tl" "AXES" "axe" "e" "axe" "") (setq pt0 (getpoint "\nCliquer le point de départ de l'axe: ")) ; enregistre le point de départ de l'axe (setq pt1 (getpoint "\nCliquer le point suivant de l'axe: ")) ; enregistre le point de final de l'axe (command "polylign" pt0 "la" 0 0 pt1 ""))) (command "calque" "n" "elevation" "co" 30 "elevation" "tl" "continuous" "elevation" "e" "elevation" "") (setq p0 (getpoint "\nCliquer le point de départ du mur: ")) ; enregistre le point de départ du mur (setq p1 (getpoint "\nCliquer le point suivant du mur: ")) ; enregistre le point de final du mur (setq long0 (distance p1 p2)) ; enregistre la longueur du mur (setq long1 (/ long0 3)) ; divise la long du mur par 3m (long banche) (setq long2 (- long0 (* 3 (rtos long1)))) (setq long3 (/ long2 2)) (setq long4 (- long2 (* 2 (rtos long3 )))) (setq long5 (/ long4 0.5)) (setq long6 (- long4 ( * 0.5 (rtos long5)))) ) Si vous en avez le courage je vous demande un peu d'aide, merci d'avance en tout cas.Micka
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