Invité pleche.damien Posté(e) le 4 août 2011 Posté(e) le 4 août 2011 Bonjour j'esaye d'améliorer ma routine pour créer une nomenclature acier. Se que j'esaye de faire est d'insérer des numéros de répères d'acier en fonction de l'ordre d'insertion de mes aciers dans mon desssin. J'ai donc la routine suivante qui me permet d'insérer mes numéros: (defun c:compteur () (setq compteur 1) (while "" (setq rep "+ compteur 1 ") (setq ptclic (getpoint " point d'insertion du chiffre")) ;il manquai une parenthèse fermante pour setq (setq ptchiffre (polar ptclic 0 50)) (command "texte" ptchiffre 4 0 (rtos compteur 2 0)) ;converti le nombre en texte avec rtos (setq compteur ( + compteur 1)) )) ; ferme la boucle while Et ci-joint un exemple qui permet de choisir entre un "IPE" ou un acier "STANDARD": (initget 1 "IPE STANDARD") ;commande boucle, (setq choix (strcase(getkword "\nchoix IPE : [iPE, STANDARD]"))) ; menu déroulant (cond (( = choix "IPE") (command "inserer" "platine_élévation" ptac12 1 1 0)(command "inserer" "platine_dessus" ptac14 1 1 0)) (( = choix "STANDARD") ( (setq longPB (getreal "\n largeur b du fût")) (setq longPH (getdist "\n hauteur h du fût")) (setq longDA (getdist "\n débort fondation")) (setq pt04 (polar pt03 (+ angl (/ pi)) longDA)) (setq pt05 (polar pt04 (+ angl (/ pi 2)) longPH)) (setq pt06 (polar pt05 (+ angl (/ pi)) longPB)) (setq pt07 (polar pt06 (- angl (/ pi 2)) longPH)) (setq pt08 (polar pt07 (+ angl (/ pi)) longDA)) (command "dimlinear" pt03 pt04 (polar pt03 (+ (angle pt04 pt03) (/ PI 2)) 20)) (command "polylign" pt03 pt04 "") ; trace la polyligne pt03 pt04 (command "polylign" pt04 pt05 "") ; trace la polyligne pt04 pt05 (command "polylign" pt04 pt05 "") ; trace la polyligne pt04 pt05 (command "polylign" pt05 pt06 "") ; trace la polyligne pt05 pt06 (command "dimlinear" pt05 pt06 (polar pt05 (+ (angle pt06 pt05) (/ PI 2)) 20)) (command "dimlinear" pt06 pt07 (polar pt06 (+ (angle pt07 pt06) (/ PI 2)) 20)) (command "polylign" pt06 pt07 "") ; trace la polyligne pt06 pt07 (command "dimlinear" pt07 pt08 (polar pt07 (+ (angle pt08 pt07) (/ PI 2)) 20)) (command "polylign" pt07 pt08 "") ; trace la polyligne pt06 pt07 (setvar "osmode" accro) ;Ré-attribut l'accrochage des objets stocké précedement, (setvar "dynmode" dynn) ;Ré-attribut la valeur de la saisie dynamique stockée précedement, ;(setvar "dimzin" chiffrevirgule) ))) Je veux donc fusioner ces deux lisp pour que mon programme insert automatiquement mes numéros de repère en fonction du choix de l'acier. Exemple: si l'acier IPE est choisi en premier on lui attribue le repere 1 si l'acier STANDARD est choisi en segond je lui attribue le repère 2et inversement pour le cas contraire... Pouvez vous m'aider à réaliser se programme... Car je ne métrise pas tout à fait encore la fonction si et les boucle... MERCI d'avance
Invité pleche.damien Posté(e) le 4 août 2011 Posté(e) le 4 août 2011 Peut être une idée d'oriantation pour réaliser se programme: si l'acier IPE ou STANDARD de la liste prédéfinie sont présents dans le dessin alors (foreach l lst1 (if (tblsearch "IPE" "STANDARD" compteur) ;fonction tblsearch cherche les aciers insérés dans le dessin (princ (strcat "\nIPE\"" l "\" est dans le dessin") ) (princ (strcat "\nIPE \nil\" n'est pas dans le dessin") ) ) ) ;Même chose pour l'acier standard... Voila je c'es que se lisp est faut mais sa peut etre une piste à aprofondir MERCI
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