Aller au contenu

Changer Syntaxe Format Fractionnaire


srault

Messages recommandés

Bonjour à toutes et à tous

Je me permets de solliciter votre aide sur un problème que que je rencontre.

Sur un de mes blocs dynamiques, j'ai un attribut avec une valeur calculée. Et je souhaiterais que cette valeur ne s'affiche pas en valeur décimal mais en valeur fractionnaire sur la base du quart. (exemple 3.5 => 3+1/2 ; 2.25 =>2+1/4)

Je choisi donc le format fractionnaire et la précision de 0 1/4 mais il manque le signe "+" dans la syntaxe du format. (voir pièce jointe)

Du coup savez vous comment modifier ou bien rajouter le signe "+" entre le nombre entier et la partie fractionnaire.

Merci beaucoup d'avance si vous pouvez me trouver une solution à mon problème.

Bonne journée.

Sylvain R.

Autocad Précision Unité Factionnaire.png

Lien vers le commentaire
Partager sur d’autres sites

Coucou,

Ce '+' est-il nécessaire pour la compréhension du résultat ou bien est-ce pour une autre raison ? Car d'un point de vu compréhension, l'écriture fractionnaire s'écrit forcément sous forme d'addition, autrement dit il n'est pas possible d'avoir une écriture avec une soustraction. Donc l'écriture est simplifiée car le '+' est implicite. La méthode des Préfixe/Suffixe ne peut pas fonctionner car la part fractionnée est indivisible de la part entière.

Il existe cependant un moyen d'arrondir un nombre à un multiple mais le souci c'est que l'on ne peut pas forcer l'arrondi d'un nombre via le format...La solution que je t'aurais proposé était :

Champn°1 : m x a
Avec m = 0.25 (le multiple)
et a un second champ tel que :
a = n/m + 0.5

Cependant pour que cela fonctionne il faut que 'a' utilisé dans le champ n°1 corresponde à sa partie entière et non un nombre décimal. Or même si l'on utilise la précision de 0 (donc partie entière), le calcul considère tout de même la partie décimale... Donc cela ne fonctionne pas, désolée..

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Luna

Tout d'abord merci beaucoup pour ta réponse rapide.

Il s'agit d'un bloc de treillis soudés en répartition de nappe, et pour une meilleure compréhension sur chantier je pense que le "+" est justement un plus.

J'avais pensé à l'incrément 0.5 tel que tu le dis dans ton message mais ça foire au niveau des arrondis.

Il faudrait avoir plus de connaissance dans les fichiers sources d'autocad pour pourvoir modifier cette syntaxe directement.

Le mieux sera d'intégrer à Autocad la fonction nombre entier comme sur excel.

Bonne soirée à toi

En espérant avoir d'autre retour.

Bloc Trellis soudé.png

Lien vers le commentaire
Partager sur d’autres sites

@JPhil,

En programmation c'est simple, puisqu'il suffirait d'utiliser la fonction (LM:roundm) ci-dessous :

;; Round Multiple  -  Lee Mac
;; Rounds 'n' to the nearest multiple of 'm'

(defun LM:roundm ( n m )
    (* m (fix ((if (minusp n) - +) (/ n (float m)) 0.5)))
)

Cependant s'il faut agir hors programmation, le jeu se complexifie car comme le suppose @srault, il faudrait que AutoCAD puisse faire la différence entre un nombre entier et un nombre décimal... Ou tout simplement que la précision que l'on choisi ne soit pas un simple format d'affichage mais un réel arrondi de la valeur réelle.

J'avais également pensé à une formule DIESEL mais cela ne fonctionne pas non plus malheureusement (ou bien je n'ai pas trouvé une solution en DIESEL)...

Cependant, on peut éventuellement trouver une solution via la commande RECHERCHER. Bon j'ai testé, et cela ne fonctionne pas, évidemment...
Désolée...

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Merci à vous deux pour vos retour

Malheureusement je n'y connais rien en programmation sur Autocad. Je ne suis pas du tout calé dans ce domaine.

Comment peut on intégrer de la programmation dans un bloc dynamique?

Si besoin je peux vous fournir une fichier dwg avec ce bloc si ça peut vous aider.

Merci

Lien vers le commentaire
Partager sur d’autres sites

On ne peut pas justement, on peut faire agir un programme à un instant T mais on ne peux pas l'utiliser directement dans les valeurs d'un attribut en permanence.
Comme je disais, il est possible de voir avec le langage DIESEL vu que l'on peut entrer une expression DIESEL comme valeur de champ dynamique mais en effet un .dwg permettrait de mieux s'adapter au problème et trouver une solution viable.

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

Le langage ESSENCE, pardon, DIESEL, c'est bien mais ça a une limite.
Si ton fichier sera ouvert avec Autodesk Trueview, faut éviter d'utiliser le DIESEL car Trueview ne sait pas le lire.
Donc reste la programmation Lisp.

Sinon, pour en revenir au formule champ, tu peux inclure deux champs plutôt qu'un seul dans ton texte, du style : "round(740/(240-28))" (afin d'obtenir la partie entier) suivi du "+" suivi du champ "740/(240-28)-round(740/(240-28))" (afin d'obtenir la partie fraction)

Le "+" peut aussi provenir du format supplémentaire, suffixe pour le champ entier ou préfixe pour le champ fraction.

Simple idée 😉 

Source des Fonctions utilisables dans les formules de champ par (gile)  >>> ici <<<

Lien vers le commentaire
Partager sur d’autres sites

Bonjour JPhil

Merci beaucoup pour ta proposition 😄 je vais mettre cela en place sur mon bloc dynamique et je vous tiens au courant.

En parlant des formules possibles dans les champs dynamiques, est ce qu'il existe une liste de toutes les formules que l'on peut utiliser dedans?

Peux être existe-t-il une liste quelque part?

En tout cas merci à vous deux et passez de bonne fêtes 😊

Lien vers le commentaire
Partager sur d’autres sites

Et bien voilà, je me disais bien que j'avais oublié un élément important !!!! Merci @JPhil pour m'avoir rappelé l'existence de cette liste de fonctions éditée par (gile) ! 🙂

Du coup @srault voici ce que je te propose :

-> Insérer un champ "Formule" dans ton objet texte, attribut, cotation, ...
	Valeur : 0.25*trunc(i)
    Format : Décimal (0.00)

	-> Insérer un champ "Formule" au niveau du i de la formule ci-dessus
		Valeur : i/0.25+0.5
		Format : Décimal

		-> Insérer un champ quelqu'il soit correspondant à ta formule de base au niveau du i de la formule ci-dessus
			Valeur d'exemple : 740/(240-28)
			Format : Décimal

Tu peux également limiter le nombre de champ en intégrant le calcul directement dans la formule mais c'est plus pour un soucis de lisibilité ^^" Mais tu peux en effet n'avoir que 2 champs par exemple en mergeant le 1er avec le second comme ceci :

0.25*trunc(i/0.25+0.5)
Avec i le champ correspondant à ton calcul, ou directement ta formule !

J'ai testé vite fait, et j'obtiens bien des valeurs qui ne sont que des multiples de 0.25 et elles sont arrondi au multiple supérieur ;3

Le 20/12/2021 à 18:40, JPhil a dit :

Le "+" peut aussi provenir du format supplémentaire, suffixe pour le champ entier ou préfixe pour le champ fraction.

 

J'avais essayé mais la partie fractionnaire fait partie intégrante de la partie entière justement donc les suffixes et préfixes ne peuvent pas s'insérer entre les deux parties...

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

@Luna

Ton idée m'a l'air très bonne par contre j'ai du mal à la mettre en place et à obtenir les résultats / affichages souhaités.

Pour la partie entière, il y a pas de soucis j'arrive à l'obtenir. 

Par contre pour la partie décimale restante je sèche sur la syntaxe.

Si je suis ton résonnement j'obtiens cela (voir extrait ci joint).

Avec cette formule j'obtient 5.25 au lieu 0.25.

J'ai encore besoin d'aide pour bien appréhender cette formule trunc()

Merci

Sylvain R

 

Bloc TS Problème de champs.jpg

Lien vers le commentaire
Partager sur d’autres sites

Nan je crois que tu n'as pas compris la démarche. Le but est simplement de ne pas utiliser l'écriture fractionnaire mais décimale. Le but de l'écriture fractionnaire c'est uniquement de pouvoir gérer les arrondis à 0.5, 0.25, 0.125, ... près. Donc Au lieu d'avoir le résultat 5+1/4, je trouve que c'est plus compréhensible d'écrire 5.25 🙂

Et c'est tout... Voici un exemple d'écriture avec un seul champ :

0.25*trunc((740/(240-28))/0.25+0.5)

Ce qui me donne le résultat 3,50

Et si tu prends

0.25*trunc(5.27/0.25+0.5)

Cela va renvoyer 5.25

Bisous,
Luna

Lien vers le commentaire
Partager sur d’autres sites

@srault, tout est indiqué mais bon vu l'heure tardive du message je peux entendre que l'explication n'était pas claire.
C'est le problème d'avoir plusieurs idées qui arrivent en même temps 🙂

@Luna, en effet avec un seul champ il n'est pas possible d'avoir le "+" au milieu, il faut donc décomposer le champ en deux.

Insérer un premier champ "Formule" dans ton objet texte, attribut, cotation, ... :
    Valeur : trunc(740/(240-28))
    Format : Fractionnaire (0 1/4)
Insérer un deuxième champ "Formule" à la suite du premier champ :
    Valeur : 740/(240-28)-trunc(740/(240-28))
    Format : Fractionnaire (0 1/4)
    Format supplémentaires : mettre "+" comme préfixe 

Donne le résultat suivant : "3+1/2"

 

Par contre si tu mets "740/(240)-trunc(740/(240))" comme valeur, ça va donner au final "3+0" 😶

Lien vers le commentaire
Partager sur d’autres sites

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é