Aller au contenu

Nombre de chiffres apres la virgule


Nux

Messages recommandés

Bonjour,

 

J'ai créer un lisp me permettant de tracer des polylignes et d'inscrire leur surface ou leur longueur dans un bloc avec attribut.

Le programme est fonctionnel, mais le nombre de chiffres après la virgule déborde en dehors du bloc.

 

1523279241-capture.png

1523279241-capture2.png

 

J'ai fait quelques recherches, mais les résultats ne correspondent pas tout à fait à mon problème. J'ai regardé dans la fenêtre "unités" d'autocad, fait des car/cdr en lisp pour essayer de supprimer les chiffres en trop, mais je n'ai pas réussi.

 

Pourriez vous m'aider ?

 

En vous remerciant par avance.

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Si tu veux qu'on commente ton code et qu'on y apporte des solutions il faut le soumettre

Merci de le mettre correctement formaté pour le site de préférence.

 

À première vue je pense à un rtos mais sans le code je ne peux en dire plus

 

Explications de RTOS mon site

 

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, oui je suis désolé j'avais pas joint le code. le voici :

 

(defun c:testz()
(setq ini(getvar "osmode"))
(setvar "osmode" 0)

(setq Rtyp (getint "Select. reseau 1:CFO 2:Cfa 3:EP 4:EU"))
(cond ((= Rtyp 1) (command "-calque" "ch" "CFO" ""))
     ((= Rtyp 2) (command "-calque" "ch" "Cfa" ""))
     ((= Rtyp 3) (command "-calque" "ch" "EP" ""))
     ((= Rtyp 4) (command "-calque" "ch" "EU" ""))
)

(setq P1 (getpoint " Premier point"))
(command "polylign" P1
(while P1
(setq P1(getpoint " Nouveau point ou appuyer sur entrer pour finir"))
(command P1)
))

(command "aire" "o" "d")
(setq lrsx (getvar "perimeter"))
(setq lrsx (rtos lrsx 2 2))
(setq ptexte (getpoint " insérer la longeur du reseau \n"))
(command "-texte" ptexte 0.5 "" lrsx)


(command "-calque" "ch" "0" "")
(setvar "osmode" ini)
)

 

J'ai modifié la valeur de luprec à 4 mais rien n'y a fait. j'ai finalement utilisé RTOS comme Didier me l'avez conseillé. Cela marche à merveille.

Merci beaucoup pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Je te remercie de me citer en plus en disant que ma piste de recherche était la bonne

Je me permets de t'inviter à visiter mon site de programmation sur AutoCAD (signature)

En même temps je ne sais pas si tu veux te perfectionner,

En admettant que ce soit le cas, ta routine est facilement améliorable

En effet elle n'est pas "robuste" au sens informatique

Si les calques n'existent pas ?

Si on ne répond pas à la question du réseau et qu'on valide à vide ?

La commande "polylign" ne sera pas reconnue sur toutes les machines...

 

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Effectivement, je débute en lisp. Pour la question du réseau le modifier comme ceux ci :

(setq Rtyp (getint "Select. reseau 1:CFO 2:Cfa 3:EP 4:EU"))
(cond ((= Rtyp 1) (command "-calque" "ch" "CFO" ""))
     ((= Rtyp 2) (command "-calque" "ch" "Cfa" ""))
     ((= Rtyp 3) (command "-calque" "ch" "EP" ""))
     ((= Rtyp 4) (command "-calque" "ch" "EU" ""))
     ((< Rtyp 4) ("Entrez une valeur entre 1 et 4))
)

 

Je sais pas si il existe une sorte de goto en lisp pour permettre de revenir au début de la question si la valeur entrée n'est pas comprise en 1 et 4.

 

Concernant les calques j’utilise le lisp avec un gabarit, le programme ne peut donc marcher qu'avec mon gabarit, sauf si on créer les calques avant de lancer la commande.

 

Pour la reconnaissance de la commande "polylign", je me demandais, j'ai développé ce lisp avec les commandes en français, mais si je veut le lancer sur une version d'autocad en anglais ou en espagnol, existe t-il un moyen de rendre ce lisp "universel" ?

 

Je visiterais ton site avec plaisir. :)

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

goto en lisp tel qu'exprimé NON

ne peut donc marcher qu'avec mon gabarit FAUX tu peux lancer le lisp dans n'importe quel fichier et si les calques n'existent pas... soucis...

existe t-il un moyen de rendre ce lisp "universel" ? effectivement une visite s'impose : da-code

 

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Salut.

 

Pour palier au GoTo, je pense à un while, voici ce que, avec mes petites compétences, j'aurais fais (avec une autre méthode pour dessiner la polyligne) :

(defun c:testRtyp (/ Rtyp)
 (while (and (/= Rtyp "1:CFO") (/= Rtyp "2:Cfa") (/= Rtyp "3:EP") (/= Rtyp "4:EU"))
   (initget 1 "1:CFO 2:Cfa 3:EP 4:EU") ;_ Fin de initget
   (setq Rtyp (getkword "\nFaite votre choix : [1:CFO/2:Cfa/3:EP/4:EU] : ") ;_ Fin de getpoint
   ) ;_ Fin de setq
   (cond ((= Rtyp "1:CFO") (princ "\nChoix : CFO"))
         ((= Rtyp "2:Cfa") (princ "\nChoix : Cfa"))
         ((= Rtyp "3:EP") (princ "\nChoix : EP"))
         ((= Rtyp "4:EU") (princ "\nChoix : EU"))
   ) ;_ Fin de cond
 ) ;_ Fin de while
 (command "_.pline")
 (while (not (zerop (getvar "cmdactive"))) (command pause)) ;_ Fin:while
 (princ)
) ;_ Fin de defun

 

Pour le cas ou le calque n'existerait pas, tu peux prendre l'option "e" et non "ch" de la commande "calque". Ca créé le calque s'il n'existe pas et le rend courant.

 

Denis...

  • Upvote 1

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)

Lien vers le commentaire
Partager sur d’autres sites

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é