Aller au contenu

Relation


vinch

Messages recommandés

Bonjours a vous tous...

 

Je vous explique mon probleme...

J'ai cree une table de famille de goupille avec un parametre "designations" qui est goupille_d0xd1 ( ou d1 est le diam et d0 est la longeur).

Donc qud on choisit le generic la designation indique celle du generic...pas de probleme.

 

Mais qud on choisit une instance il indique aussi la designation du generic...probleme.

Ont cree donc une relation du type "designation="goupille_"+itos(d0)+"x"+itos(d1)" pour que pour chaque instance il va chercher le d0 et le d1 qui va bien...

Cependant la commande itos permer effectivement de chercher le d0 et le d1 mais elle l'arrondie a un nombre entier !!!!

 

Par exemple :

pour un goupille de diametre 1.5 et de longeur 5....la designation sera "goupille_2x5" et non pas "goupille_1.5x5"...

Moi je veut la valeur exact de d0 et d1...

 

Donc ma question est : connaissez vous une commande (autre que itos) permettant de recupere la valeur exact de d0 et d1

 

merci a vous tous..

Lien vers le commentaire
Partager sur d’autres sites

A priori il n'y a pas d'autre commande que "itos" pour transformer du numérique en texte.

En général dans les familles on met directement la désignation dans ta table sans passer par une relation, ça évite une régénération inutile puisque les éléments sont std ( donc l'utilisateur n'est pas censé en modifier la taille mais en choisir une autre instance en cas de besoin ).

 

Ceci dit il existe une manip pour extraire les décimales avec "itos" : multiplier la valeur par 10 et lui soustraire sa valeur entière divisée par 10...

 

Le plus simple est de prendre un exemple.

 

J'ai la valeur LONGUEUR = 15,4 donc itos ( LONGUEUR ) = "15"

 

DECIMALE1 = LONGUEUR x 10 - FLOOR ( LONGUEUR ) x 10 = 154 - 150 = 4

 

donc itos ( DECIMALE1 ) = 4

 

DESIGNATION = GOUPILLE + itos ( LONGUEUR ) + "," + itos ( DECIMALE1 )

 

Voilà... un peu chiant à écrire, mais comme c'est tout le temps la même logique on peut s'en garder un exemplaire dans un fichier texte et faire du copier/coller

 

Ceci dit je reviens sur mon conseil initial => mettre les désignations sans relation directement dans la table. Avec quelques milliers de vis, rondelles, goupilles, etc.. le temps de régénération sera meilleur.

Lien vers le commentaire
Partager sur d’autres sites

A priori il n'y a pas d'autre commande que "itos" pour transformer du numérique en texte.

En général dans les familles on met directement la désignation dans ta table sans passer par une relation, ça évite une régénération inutile puisque les éléments sont std ( donc l'utilisateur n'est pas censé en modifier la taille mais en choisir une autre instance en cas de besoin ).

 

Ceci dit il existe une manip pour extraire les décimales avec "itos" : multiplier la valeur par 10 et lui soustraire sa valeur entière divisée par 10...

 

Le plus simple est de prendre un exemple.

 

J'ai la valeur LONGUEUR = 15,4 donc itos ( LONGUEUR ) = "15"

 

DECIMALE1 = LONGUEUR x 10 - FLOOR ( LONGUEUR ) x 10 = 154 - 150 = 4

 

donc itos ( DECIMALE1 ) = 4

 

DESIGNATION = GOUPILLE + itos ( LONGUEUR ) + "," + itos ( DECIMALE1 )

 

Voilà... un peu chiant à écrire, mais comme c'est tout le temps la même logique on peut s'en garder un exemplaire dans un fichier texte et faire du copier/coller

 

Ceci dit je reviens sur mon conseil initial => mettre les désignations sans relation directement dans la table. Avec quelques milliers de vis, rondelles, goupilles, etc.. le temps de régénération sera meilleur.

 

 

okmerci c vraix que j'ai pas pense a ca....

Par contre je trouve ca super utile comme relation ca ca evite d'ecrire 200x la designation correspondante..

 

je vais tester

Lien vers le commentaire
Partager sur d’autres sites

Tu peux garder la relation... c'est ton choix, et si tu ne manipules pas des milliers de composants ça n'aura pas de conséquence.

 

Par contre n'oublie pas de mettre tout de même le paramètre DESIGNATION dans la table de famille, il se remplira tout seul lorsque les instances seront régénérées pour la 1ère fois. Si tu ne le fais pas et que tu charges plusieurs instances différentes dans un même assemblage tu risques d'avoir des désignations identiques puisque s'il n'est pas dans la table le paramètre est partagé.

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

On peut encore améliorer ces relations pour éviter qu'un ZERO non significatif n'apparaisse dans le cas d'une valeur entière :

 

ex : 15 donne 15,0. Pas beau!

 

Pour cela, on testera la valeur de la partie fractionnelle avant de l'ajouter à la partie entière :

De plus, le parametre "DECIMALES" permet dans mon exemple de faire varier le nombre de décimales.

Ici, nous avons : D0 -> cote, TEXTE -> resultat

 

DECIMALES=1

 

IF D0-(FLOOR(D0)) <>0

FRAC=ITOS((D0-(FLOOR(D0)))*10^DECIMALES)

INT=ITOS(D0-(D0-(FLOOR(D0))))

TEXTE=INT + "," + FRAC

ELSE

TEXTE=ITOS(D0)

ENDIF

 

 

 

bye

Changer ses habitudes, c'est déjà innover...

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é