Inventor - Spliter le "nom de fichier" dans 2 propriétés personnalisées

Inventor - Spliter le "nom de fichier" dans 2 propriétés personnalisées

Tripalere
Contributor Contributor
912 Visites
7 Réponses
Message 1 sur 8

Inventor - Spliter le "nom de fichier" dans 2 propriétés personnalisées

Tripalere
Contributor
Contributor

Bonjour à tous,

Je cherche à faire 2 propriétés personnalisées avec 2 parties de mon "nom de fichier". J'ai essayé en regardant le post suivant :

https://forums.autodesk.com/t5/inventor-programming-ilogic/ilogic-split-a-string/td-p/8777436

Mais je n'arrive pas au bon résultat, je ne comprends pas les fonctions.

Je désire extraire les premiers n caractères jusqu'au premier "." dans une propriété, puis tout le reste dans une autre.

Le format se présente ainsi:

XXXX.YYYY.YY.YY.YY.YY

et j'aimerais arriver à:

prop1: XXXX

prop2: YYYY.YY.YY.YY.YY

sachant que le nombre de caractères avant et après le premiers "." est variable.

Merci par avance pour votre aide.

Boris

0 J'aime
Solutions acceptées (1)
913 Visites
7 Réponses
Replies (7)
Message 2 sur 8

vpeuvion
Advocate
Advocate

Bonjour,

Voici un exemple qui peut t'aider : 

Dim MonNom As String = "XXXX.YYYY.YY.YY.YY.YY"
Dim Propriete1 As String = MonNom.Split(".")(0) ' Je conserve le premier élément avant le .
Dim Propriete2 As String = MonNom.Replace(Propriete1 & ".","") ' Je remplace le premier élément + le premier . par du vide
MessageBox.Show(Propriete1)
Messagebox.show(Propriete2)

Vincent. 

Message 3 sur 8

ThomasB44
Mentor
Mentor

Salut @Tripalere 

Tu as besoin de manipuler une chaîne de caractères (String)

Les fonctions communes sont les suivantes, et ressemblent beaucoup à celles que tu peux trouver dans les formules Excel :

Len(String) = longueur de la chaîne de caractère

Left(String, Integer) = extrait un nombre de caractère depuis la gauche

Right(String, Integer) = extrait un nombre de caractère depuis la droite

InStr(String, String) = donne la position d'une chaîne de caractères dans une autre chaîne de caractères, en recherchant depuis la gauche

InStrRev(String, String) = idem, mais depuis la droite

Dim MyText As String
MyText = "XXXX.YYYY.YY.YY.YY.YY"

MessageBox.Show("La longueur de mon texte est : " & Len(MyText), "iLogic")
MessageBox.Show("Mes 6 premiers caractères sont : " & Left(MyText,6), "iLogic")
MessageBox.Show("Mes 6 derniers caractères sont : " & Right(MyText,6), "iLogic")
MessageBox.Show("La position du premier . est : " & InStr(MyText, "."), "iLogic")
MessageBox.Show("La position du dernier . est : " & InStrRev(MyText, "."), "iLogic")

A l'aide de ces fonctions, on peut résoudre la plupart des besoins en manipulations de chaînes textuelles.

Pour ta propriété 1, il suffit d'extraire par la gauche jusqu'au 1er "." (-1)

Pour ta propriété 2, il suffit d'extraire par la droite de la longueur de la chaîne textuelle moins la position du 1er "."

 

La fonction Split peut fonctionner aussi, mais est un peu plus complexe à manipuler :

Dim MyWords As String()
MyWords = MyText.Split(".")
MessageBox.Show("Ma chaîne textuelle est divisée en " & UBound(MyWords) & " mots", "iLogic")
Dim i As Integer
For i = 0 To UBound(MyWords)
	MessageBox.Show("La chaîne textuelle " & i & " est : " & MyWords(i), "iLogic")
Next

 


Thomas
Mechanical Designer / Inventor Professional 2025
Inventor Professional EESignature

Message 4 sur 8

ThomasB44
Mentor
Mentor
Solution acceptée

@vpeuvion 

Pour ce besoin particulier, et avec une fonction Split, on peut ajouter l'argument de compteur, à condition que le séparateur soit de Type Char

Split(Char[], Int32, StringSplitOptions)

Ce qui rend l'opération plutôt simple :

Dim MyText As String = "XXXX.YYYY.YY.YY.YY.YY"
Dim MyWords As String() = MyText.Split({"."c}, 2)

MessageBox.Show("Avant le premier ""."" il y a : " & MyWords(0) _
& vbNewLine & "Après le premier ""."" il y a : " & MyWords(1), "iLogic")

 😉


Thomas
Mechanical Designer / Inventor Professional 2025
Inventor Professional EESignature

Message 5 sur 8

vpeuvion
Advocate
Advocate

Salut @ThomasB44,

Oui bien vu, je ne connaissais pas. c'est encore plus simple.👍

Vincent.

Message 6 sur 8

patrick.emin
Alumni
Alumni

Bonjour @Tripalere 

Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton  APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Cela facilitera la navigation de nos utilisateurs qui pourront directement atteindre la solution

Sachez qui si vous avez marqué une réponse comme solution par erreur, vous pouvez annuler ce marquage en cliquant sur le menu du fil (les trois points verticaux) et choisir "pas la solution"
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or
0 J'aime
Message 7 sur 8

Tripalere
Contributor
Contributor

Merci à vous! Vous êtes des Kings.

Plus qu'a intégrer ces quelques lignes...

A+

Boris

Message 8 sur 8

ThomasB44
Mentor
Mentor

👍

Rappelle toi que les fonctions que j'indique dans mon premier message seront plus polyvalentes, et plus facile à utiliser. Contrairement à la fonction Split, avec laquelle tu dois manipuler un tableau contenant du texte.

 

Dim MyText, MyProp1, MyProp2 As String
MyText = "XXXX.YYYY.YY.YY.YY.YY"

'Extrait depuis la gauche jusqu'au 1er "." - 1 caractère
MyProp1 = Left(MyText, InStr(MyText, ".") - 1)
'Extrait depuis la droite jusqu'au 1er "."
MyProp2 = Right(MyText, Len(MyText) - InStr(MyText, "."))

MessageBox.Show("MyProp1 : " & MyProp1 _
& vbNewLine & "MyProp2 : " & MyProp2)

 


Thomas
Mechanical Designer / Inventor Professional 2025
Inventor Professional EESignature

0 J'aime