flabrousse
Messages postés12Date d'inscriptionjeudi 19 janvier 2006StatutMembreDernière intervention22 mai 2006
-
31 janv. 2006 à 21:24
Profil bloqué -
3 févr. 2006 à 08:00
Bonjour,
Je travaille sur un projet de crétion de macro sous Catia V5.
En gros je dois modéliser des sphères dont les coordonnées et leurs diamètres sont dans un fichier ascii.
Il se présente sous la forme suivante : X Y Z Diamètre Couleur
J'aimerais savoir plusieurs choses :
- comment choisir le chemin d'accés (par l'intermédiaire d'une boite de dialogue)
- comment lire le fichier afin de faire comprendre que le premier chiffre est X le deuxième est Y, ...
Je doit mettre ces valeurs dans les fonctions suivante :
Set hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(X,Y,Z)
Set hybridShapeSphere1 = hybridShapeFactory1.AddNewSphere(reference1, Nothing, R, -45.000000, 45.000000, 0.000000, 180.000000)
Si quelqu'un peu me donner des infos pour ces differents problèmes faites moi signe.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 31 janv. 2006 à 22:59
Bonsoir,
Excuse moi de te dire ca mais:
-comment choisir le chemin d'accés (par l'intermédiaire d'une boite de dialogue) : Ca c est pas trop a nous de te le dire, mais plutot a toi de le choisir(ou alors il te sera imposer)
- comment lire le fichier afin de faire comprendre que le premier chiffre est X le deuxième est Y, ...
Dim Maligne as string
Dim Mots() as string
Maligne = 78,88 -57,90 11,60 6,87 rouge
Mots = split(maligne, " ")
Resultat:
Mots(0) = contiendra les X
Mots(1) = contiendra les Y
Mots(2) = contiendra les Z
Mots(3) = contiendra les diametre
Mots(4) = la couleur
Tu t assureras simplement que les fichier soit bien ecrit (pas avoir de y a la place des x ...)
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 31 janv. 2006 à 23:07
Salut,
Je vois mal le rapport entre Catia v5 et vb.
L'exemple que tu présentes est un fichier texte, on peut le lire avec vb mais les fonctions que tu cites n'ont rien à voir avec vb.
Un peu plus d'explication STP.
-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
' On suppose que chaque ligne du fichier contient les informations pour une sphère
' Chaque paramètre de la sphère est séparé du suivant par un espace
' Le fichier s'appelle dans cette exemple D:\test.txt
Dim x As Single, y As Single, z As Single, d As Single
Dim couleur As String, fich As String, ligne As String
fich$ = "D:\test.txt" ' nom du fichier
Open fich$ For Input As 1 ' ouverture du fichier
While Not EOF(1)
Line Input #1, ligne$ ' lecture de chaque ligne du fichier
chaine$ = ""
For i% = 1 To Len(ligne$)
If Mid$(ligne$, i%, 1) = "," Then ' la virgule devient un point
chaine$ = chaine$ + "."
Else
chaine$ = chaine$ + Mid$(ligne$, i%, 1)
End If
Next i%
' Exemple : la première ligne
q% = InStr(chaine$, " ") ' position 1° espace
x! = Val(Left$(chaine$, q% - 1)) ' récupère 78,88 de la première ligne
chaine$ = Right$(chaine$, Len(chaine$) - q%)
q% = InStr(chaine$, " ") ' position 2° espace
y! = Val(Left$(chaine$, q% - 1)) ' récupère -57,90 de la première ligne
chaine$ = Right$(chaine$, Len(chaine$) - q%)
q% = InStr(chaine$, " ") ' position 3° espace
z! = Val(Left$(chaine$, q% - 1)) ' récupère 11,60 de la première ligne
chaine$ = Right$(chaine$, Len(chaine$) - q%)
q% = InStr(chaine$, " ") ' position 4° espace
d = Val(Left$(chaine$, q% - 1)) ' récupère 6,87 de la première ligne
couleur$ = Right$(chaine$, Len(chaine$) - q%) ' récupère la couleur
' Ici tu mets tes fonctions
flabrousse
Messages postés12Date d'inscriptionjeudi 19 janvier 2006StatutMembreDernière intervention22 mai 2006 1 févr. 2006 à 07:12
Je tiens d'abord à vous dire merci pour vos réponse aussi rapide.
Je m'explique pour les quelques questions qui m'ont été posées.
* pour le chemin d'accés : je pense que le plus simple pour l'utilisateur est que lorsqu'il exécute la macro, une boite de dialogue s'ouvre lui demandant de spécifier le chemin d'accés du fichier de point(qui est différent du fichier catia sous lequel il travaille) par l'itermédiaire d'un bouton Parcourir puis OK.
* Le rapport entr Catia V5 et le VB c'est que je dois développer des macros pour rajouter des fonctionnalités un peu particuliaires, et que sous Catia on peu créer des macro en VBScrpit ou en CatScript(CatScript étant de Catia).
* Les fonctions, que j'ai présenté, sontpropre à Catia la première est celle qui me permet de généré un point(X,Y,Z) et la seconde est celle qui me crée une sphère de rayon R.
voila j'espère avoir répondu à vos questions. Je pense que j'aurais encore besoin d'aide car je n'y connais pas grand chose en programmation ? J'ai juste fais un peu de C++ jusqu'à maintenant.
Vous n’avez pas trouvé la réponse que vous recherchez ?
kalobit
Messages postés169Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention 7 avril 20082 1 févr. 2006 à 11:23
Ha!
Ces %, ! et autres $, ça fait vraiment sale dans le code.
en plus, je vois pas l'interrêt de mettre fich$ alors que tu viens de déclarer Dim fich as string.
bon, je vais reprendre le script de galain qui est quand même très bien et je vais l'adapter à vbscript.
Ca donne donc, une fois supprimées les déclarations de type, virés les fonctions propres au VB et remplacées par des fonctions de vbscript, un ptit script testé avec plusieurs interpréteurs :
Const ForReading 1, ForWriting 2, ForAppending = 3 Const TristateUseDefault -2, TristateTrue -1, TristateFalse = 0
Dim x, y, z, d, q
Dim couleur, fich, ligne
Dim Chaine, Stream
Dim Fso
Dim fichier
fich = "c:\test.txt" ' nom du fichier
Set Fso = CreateObject("scripting.filesystemobject") 'création d'une instance de fso
Set fichier = Fso.getfile(fich)
Set Stream = fichier.OpenAsTextStream(ForReading, TristateUseDefault)
While Not Stream.AtEndOfStream
ligne = Stream.readline ' lecture de chaque ligne du fichier
Chaine = ""
For i = 1 To Len(ligne) If Mid(ligne, i, 1) "," Then ' la virgule devient un point Chaine Chaine + "."
Else
Chaine = Chaine + Mid(ligne, i, 1)
End If
Next
' Exemple : la première ligne
q = InStr(Chaine, " ") ' position 1° espace
x = Left(Chaine, q - 1) ' récupère 78,88 de la première ligne
Chaine = Right(Chaine, Len(Chaine) - q)
q = InStr(Chaine, " ") ' position 2° espace y Left(Chaine, q - 1) ' récupère -57,90 de la première ligne Chaine Right(Chaine, Len(Chaine) - q)
q = InStr(Chaine, " ") ' position 3° espace
z = Left(Chaine, q - 1) ' récupère 11,60 de la première ligne
Chaine = Right(Chaine, Len(Chaine) - q)
q = InStr(Chaine, " ") ' position 4° espace
d = Left(Chaine, q - 1) ' récupère 6,87 de la première ligne
couleur = Trim(Right(Chaine, Len(Chaine) - q)) ' récupère la couleur
' Ici tu mets tes fonctions
'MsgBox x + " " + y + " " + z + " " + d + " " + couleur 'ça c'est juste pour tester les valeurs
Wend
Stream.Close ' ferme le fichier
Voilà, pour récupérer le chemin du fichier, utilise une inputbox
et test avec fso.FileExists(chemin récupérer)
remarque, les valeurs retournées sont en format US (séparateur décimal Point). Si tu veux la virgule, remplace la première boucle For Next par chaine = ligne
kalobit
Messages postés169Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention 7 avril 20082 1 févr. 2006 à 11:32
oups, attention, sur la ligne y Left(Chaine, q - 1) ' récupère -57,90 de la première ligne Chaine Right(Chaine, Len(Chaine) - q)
mon retour chariot à sauté, il faut remplacer par
y = Left(Chaine, q - 1) ' récupère -57,90 de la première ligne
Chaine = Right(Chaine, Len(Chaine) - q)
et pour le chemin de fichier
Fich = Inputbox( "Tapez le chemin du fichier de coordonnées","Importer des coordonnées","D:\test.txt")
flabrousse
Messages postés12Date d'inscriptionjeudi 19 janvier 2006StatutMembreDernière intervention22 mai 2006 1 févr. 2006 à 15:08
Dans ma Inputbox j'aimerai rajouter un bouton parcourir afin d'aller selection le fichier que je veux ouvrir.
Car la ca marche nickel mais je suis obliger de connaitre tout le chemin