iLogic

iLogic

Anonymous
Non applicable
1 038 Visites
9 Réponses
Message 1 sur 10

iLogic

Anonymous
Non applicable

Hi,

 

As soon as I try to use ThisDoc.FileName and Format commands together, I'm getting a error due to the Format command.

 

This will give me an error;

 

SyntaxEditor Code Snippet

iProperties.Value("Custom", "Diametre_ext")=Format(Mid(ThisDoc.FileName(False),9,3)/100,"Standard")

The error being ;

Erreur sur la ligne 1: Argument non spécifié pour le paramètre 'format' de 'Public Shared Function Format(enumType As System.Type, value As Object, format As String) As String'.
Erreur sur la ligne 1: Impossible de convertir une valeur de type 'Double' en 'System.Type'.

 

 

This works :

 

SyntaxEditor Code Snippet

iProperties.Value("Custom", "Diametre_ext")=Format(Mid(iProperties.Value("Project", "Part Number"),9,3)/100,"Standard")

 

As you can guess it I'm a noob in VBA and please send help.

 

BR


Sebastian

0 J'aime
Solutions acceptées (1)
1 039 Visites
9 Réponses
Replies (9)
Message 2 sur 10

ThomasB44
Mentor
Mentor

Salut,

Quel est le résultat recherché ?

Pourquoi utilise tu la commande "Format" ?

Décrit un exemple STP Smiley clignant de l'œil


Thomas
Mechanical Designer / Inventor Professional 2025
Inventor Professional EESignature

0 J'aime
Message 3 sur 10

Anonymous
Non applicable

Salut,

 

en fait je cherche à remplir l'attribut "Diametre_ext" avec 0.10 et non 0.1 (ou 1.00 au lieu de 1, par exemple).

 

Seb

0 J'aime
Message 4 sur 10

ThomasB44
Mentor
Mentor

Peux tu préciser à quoi ressemble la chaîne textuelle de ton numéro de pièce ?

Ta propriété personnalisée est réutilisée ensuite en tant que texte ?


Thomas
Mechanical Designer / Inventor Professional 2025
Inventor Professional EESignature

0 J'aime
Message 5 sur 10

HermJan.Otterman
Advisor
Advisor

Hello Sklempt,

 

This should work

 

 

 

    Dim oDoc as Inventor.partdocument = ThisApplication.activedocument
    Dim shortstring As String = Strings.Mid(iProperties.Value("Project", "Part Number"), 9, 3)
    Dim value As Double = CDbl(shortstring) / 100
    iProperties.Value("Custom", "Diametre_ext")=value

 

If this answers your question then please select "Accept as Solution"
Kudo's are also appreciated Smiley clignant de l'œil

Succes on your project, and have a nice day

Herm Jan


0 J'aime
Message 6 sur 10

Anonymous
Non applicable

 


@ThomasB44 wrote:

Peux tu préciser à quoi ressemble la chaîne textuelle de ton numéro de pièce ?

Ta propriété personnalisée est réutilisée ensuite en tant que texte ?


Salut,

 

le nom de pièce serait ;

 

XXX-000-000-000-00 en utilisant les séries de 3 zéros pour remplir ces ipropriétés personnalisées.

 

Seb

0 J'aime
Message 7 sur 10

ThomasB44
Mentor
Mentor

Salut Seb

Ce code doit fonctionner :

SyntaxEditor Code Snippet

Dim PartNumber, Dia As String

'Extrait le numéro de pièce
'PartNumber = iProperties.Value("Project", "Part Number")

'Exemple de nom de fichier
PartNumber = "XXX-123-456-789-11"

'Extrait le diamètre recherché
Dia = Mid(PartNumber,5,3)

MessageBox.Show(Dia, "Title")
'Met en forme
Dia = Format(Dia,"Standard")

'Résultat
MessageBox.Show(Dia, "Title")
'iProperties.Value("Custom", "Diametre_ext") = Dia

 

En revanche si ton numéro de pièce n'a pas toujours exactement le même nombre de caractères, il faudra procéder autrement.

Il faudra extraire les "000" entre les "-" dans ton numéro de pièce.


Thomas
Mechanical Designer / Inventor Professional 2025
Inventor Professional EESignature

0 J'aime
Message 8 sur 10

ThomasB44
Mentor
Mentor
Solution acceptée

Ceci doit fonctionner également avec la condition de numéro de pièce que tu as fourni : "XXX-123-456-789-11"

L'avantage c'est que le nombre de caractères peut varier, le code va extraire entre les "-"

 

SyntaxEditor Code Snippet

Dim PartNumber, Dia1, Dia2, Dia3 As String
Dim CPos As Integer
'Extrait le numéro de pièce
'PartNumber = iProperties.Value("Project", "Part Number")
'Exemple de numéro de pièce
PartNumber = "XXX-123-456-789-11"

'Retire les 1er caractères jusqu'au "-"
CPos = InStr(PartNumber, "-")
Dia1 = Right(PartNumber, Len(PartNumber) - CPos)
'Retire les 1er caractères jusqu'au "-"
Cpos = InStr(Dia1, "-")
Dia2 = Right(Dia1, Len(Dia1) - CPos)
'Retire les 1er caractères jusqu'au "-"
Cpos = InStr(Dia2, "-")
Dia3 = Right(Dia2, Len(Dia2) - CPos)

'Retire les derniers caractères jusqu'au "-"
CPos = InStr(Dia1, "-")
Dia1 = Left(Dia1, CPos - 1)
CPos = InStr(Dia2, "-")
Dia2 = Left(Dia2, CPos - 1)
CPos = InStr(Dia3, "-")
Dia3 = Left(Dia3, CPos - 1)

'Met en forme
Dia1 = Format(Dia1,"Standard")
Dia2 = Format(Dia2,"Standard")
Dia3 = Format(Dia3,"Standard")

MessageBox.Show("Dia1 : " & Dia1 & _
vbNewLine & "Dia2 : " & Dia2 & _
vbNewLine & "Dia3 : " & Dia3, "Title")

'Résultat
'iProperties.Value("Custom", "Diametre_ext") = Dia1

Thomas
Mechanical Designer / Inventor Professional 2025
Inventor Professional EESignature

0 J'aime
Message 9 sur 10

Anonymous
Non applicable

Salut Thomas,

 

merci mille fois pour ton aide. Malgré le fait que ça ne m'a pas expliqué pourquoi on ne pouvait pas utiliser ThisDoc.FileName en combinaison avec Format, la solution proposée devrait parfaitement convenir.

 

Encore merci !

 

Seb

0 J'aime
Message 10 sur 10

patrick.fluegge
Advocate
Advocate

BTW the main problem in the first post ist here:

 

Mid(ThisDoc.FileName(False),9,3)/100

Here to show the brackets, mid returns  a string:

Mid(___________________________)/100

You are trying to divide that substring (created from Mid())  by a number  (100)!

This is of course not possible by default. Especially since you wanted to extract the filename which would lead to something like "Part1.ipt"/100.

 

Only if VB manages to convert the String into a number then you are lucky. But I would not rely on this.



Patrick Flügge

0 J'aime