replir un cartouche à partir d un fichier csv..
5 participants
Page 1 sur 2
Page 1 sur 2 • 1, 2
replir un cartouche à partir d un fichier csv..
bonsoir,
je connais catia depuis tres longtemps mais je penche que maintenant sur ce point.
je souhaite creer une nomenclature via un detail (ligne de nomenclature ).
de la manière suivante :
copie de la ligne1 et la remplir en prenant ses valeur dans le fichier csv (excel) et ainsi de suite.
donc chaque ligne du fichier il boucle.
N ayant aucune formation vba catia, je fais appel à votre aide pour trouver comment faire et apprendre en meme temps.
Aujourd'hui dans mon metier je peux faire un gain d'une demi semaine pour élaborer une nomenclature avec les attentes du client.
qui sont tous différent.
merci d'avance pour votre aide
raphael
je connais catia depuis tres longtemps mais je penche que maintenant sur ce point.
je souhaite creer une nomenclature via un detail (ligne de nomenclature ).
de la manière suivante :
copie de la ligne1 et la remplir en prenant ses valeur dans le fichier csv (excel) et ainsi de suite.
donc chaque ligne du fichier il boucle.
N ayant aucune formation vba catia, je fais appel à votre aide pour trouver comment faire et apprendre en meme temps.
Aujourd'hui dans mon metier je peux faire un gain d'une demi semaine pour élaborer une nomenclature avec les attentes du client.
qui sont tous différent.
merci d'avance pour votre aide
raphael
Dernière édition par raphael_59240 le Ven 24 Avr 2015 - 15:35, édité 2 fois
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: replir un cartouche à partir d un fichier csv..
Bonsoir
Donc ce que tu veux faire c'est remplir un tableau dans catia à partir d'un fichier excel? (j'ai pas tout compris dsl)
Donc ce que tu veux faire c'est remplir un tableau dans catia à partir d'un fichier excel? (j'ai pas tout compris dsl)
Ramex13- actif
- Messages : 30
Date d'inscription : 12/09/2014
Age : 31
Localisation : Aix-en-Provence
Re: replir un cartouche à partir d un fichier csv..
j ai un fond de plan dans lequel j ai un cartouche et deux ligne de nomenclature (tous les 3 des details).
j ai un fichier csv dans lequel j ai mes lignes de texte de nomenclature et cartouche.
je souhaite via macro:
1 - remplir le cartouche
2- remplir mes 2 premieres lignes
3- copie de la seconde ligne positionné à la suite et rempli ..
ainsi de suite...
je pense etre plus clair;
merci pour ton aide.
j ai un fichier csv dans lequel j ai mes lignes de texte de nomenclature et cartouche.
je souhaite via macro:
1 - remplir le cartouche
2- remplir mes 2 premieres lignes
3- copie de la seconde ligne positionné à la suite et rempli ..
ainsi de suite...
je pense etre plus clair;
merci pour ton aide.
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: replir un cartouche à partir d un fichier csv..
Oui là j'ai compris hourra! (enfin je pense...)
Donc une macro qui sert à remplir ton cartouche et tes 2 lignes de nomenclature dans ton calque de détail ca c'est les doigts dans le nez haha
Mais après il faut que tu crées une ligne de nomenclature pour chaque lignes de ton fichier csv c'est ca?
Donc une macro qui sert à remplir ton cartouche et tes 2 lignes de nomenclature dans ton calque de détail ca c'est les doigts dans le nez haha
Mais après il faut que tu crées une ligne de nomenclature pour chaque lignes de ton fichier csv c'est ca?
Ramex13- actif
- Messages : 30
Date d'inscription : 12/09/2014
Age : 31
Localisation : Aix-en-Provence
Re: replir un cartouche à partir d un fichier csv..
Oui c est cela
je peux fournir un fichier si besoin. .un catdrawing
je peux fournir un fichier si besoin. .un catdrawing
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Ramex13- actif
- Messages : 30
Date d'inscription : 12/09/2014
Age : 31
Localisation : Aix-en-Provence
Re: replir un cartouche à partir d un fichier csv..
As tu une adresse sur laquelle j peux t envoye le catdraw et un csv
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: replir un cartouche à partir d un fichier csv..
Oui je te l'envoie en mp
Ramex13- actif
- Messages : 30
Date d'inscription : 12/09/2014
Age : 31
Localisation : Aix-en-Provence
Re: replir un cartouche à partir d un fichier csv..
Salut les gars,
Si vous avez solutionné votre problême, pourrez-vous faire partager votre macro?
Je pense que ça sera utile pour la communauté ;-)
La macro est un bon choix mais attention au caractère de séparation !
Si vous avez solutionné votre problême, pourrez-vous faire partager votre macro?
Je pense que ça sera utile pour la communauté ;-)
La macro est un bon choix mais attention au caractère de séparation !
Re: replir un cartouche à partir d un fichier csv..
bonjour,
qu'entends tu dans "attention au critère de séparation"?
raph
qu'entends tu dans "attention au critère de séparation"?
raph
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: replir un cartouche à partir d un fichier csv..
Je parle pour faire un script qui marche correctement il faut chercher le caractère de séparation du CSV (point-virgule, virgule, tabulation,etc...). Le CSV peut provenir de différent logiciel (Excel, OpenOffice,etc...)
Re: replir un cartouche à partir d un fichier csv..
ah je comprends mieux, pour ma part le csv provient de excel et même si je trouve pour attaquer un fichier excel c'est encore mieux.
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: replir un cartouche à partir d un fichier csv..
C'est tout à fait faisable mais pour cela il faut passer par le VBA ou encore mieux le .NET ;-)
Re: replir un cartouche à partir d un fichier csv..
Bonsoir,
Désolé pour mon temps de réponse, j'étais très occupé ces derniers temps.
Bon du coup voici pour commencer les bases pour écrire une macro servant à remplir un cartouche (avec les commentaires!):
Comme je l'ai dit: ce sont les bases, libre à toi de moduler ce code selon tes souhaits, d'y ajouter une interface via une form, etc... Les possibilités te sont nombreuses!
Je mets quand même le code sans les commentaires pour que ce soit lisible:
Si problème, n'hésitez pas, demandez!
Désolé pour mon temps de réponse, j'étais très occupé ces derniers temps.
Bon du coup voici pour commencer les bases pour écrire une macro servant à remplir un cartouche (avec les commentaires!):
- Code:
Sub main()
Err.Clear
'Dimensionnement des variables:
Dim drw As DrawingDocument 'Objet: Le document 'Draw'
Dim shts As DrawingSheets 'Objet: L'ensemble des planches contenues dans ce draw (visible par la case la plus haute dans l'arbre CATIA)
Dim sht As DrawingSheet 'Objet: Une planche parmi l'ensemble de ces planches
Dim views As DrawingViews 'Objet: L'ensemble des vues contenues dans cette planche
Dim view As DrawingView 'Objet: Une vue parmi l'ensembles de ces vues
Dim comps As DrawingComponents 'Objet: L'ensemble des composants contenus dans cette vue
Dim comp As DrawingComponent 'Objet: Un composant parmi l'ensemble
Dim texts As DrawingTexts 'Objet: L'ensemble des textes contenus dans cette vue
Dim text As DrawingText 'Objet: Un texte parmis l'ensemble de textes dans la vue
'
Dim nb As Integer
'En cas de non-draw:
On Error Resume Next
Set drw = CATIA.ActiveDocument 'Le document actif est un Draw
If Err.Number <> 0 Then
MsgBox "Drawing attendu"
Exit Sub
End If
'
'Début du code
Set shts = drw.Sheets
'****************************************************************************************************************************************
' BOUCLER A PARTIR D'ICI JUSQU'A LA FIN SI ON SOUHAITE REMPLIR LE CARTOUCHE SUR TOUTES LES PLANCHES
' (CE CODE NE SERT QU'A TRAITER UNE PLANCHE)
Set sht = shts.Item("Cartouche")
'
'OU REMPLACER '"Cartouche"' PAR LE NOM DE LA PLANCHE SOUHAITEE, OU PAR SON NUMERO (Ex.: Item(2) pour la planche n°2)
'
'Si vous souhaitez travailler uniquement sur une planche qui N'EST PAS un calque de détail, créer une condition:
'
' Ex: If sht.IsDetail = false Then
' *code*
' End If
Set views = sht.views
Set view = views.Item("Nom de la vue")
'Idem que pour les planches, utiliser dans 'Item' le nom de la vue ou le numéro de la vue située dans la planche déclarée précedemment
'
'Il faut juste savoir que : La numéro 1 ( Item(1) ) définit la Background View (Fond de calque)
' La numéro 2 pour la vue principale de la planche
' A partir de 3 pour les vues ajoutées manuellement.
'***********************************
'Pour les cartouches "importés" que l'on ne peut désassembler en s'acharnant à le modifier à la main :p :
'***********************************
Set comps = view.Components
Set comp = comps.Item(1) 'Pareil que précédemment pour l'affectation
nb = comp.GetModifiableObjectsCount
'Atttteeeennntttiooooonnnn : Le Coeur de la macro:
For i = 1 To nb
If comp.GetModifiableObject(i).Name = "NOM DU TEXTE QUE L'ON SOUHAITE MODIFIER/REMPLIR" Then 'J'ai bien dit NOM et pas ce qu'il CONTIENT
comp.GetModifiableObject(i).text = "coucou"
End If
'Répeter cette condition autant de fois qu'il y a de textes à remplir
Next i
'***********************************
'Pour les cartouches "désassemblés" où on peut faire bordel si on ne sait pas utiliser sa souris :
'***********************************
Set texts = view.texts
For i = 1 To texts.Count
Set text = texts.Item(i)
If text.Name = "NOM DU TEXTE QUE L'ON SOUHAITE MODIFIER/REMPLIR" Then
text.text = "coucou"
End If
Next i
End Sub
Comme je l'ai dit: ce sont les bases, libre à toi de moduler ce code selon tes souhaits, d'y ajouter une interface via une form, etc... Les possibilités te sont nombreuses!
Je mets quand même le code sans les commentaires pour que ce soit lisible:
- Code:
Sub main()
Err.Clear
Dim drw As DrawingDocument
Dim shts As DrawingSheets
Dim sht As DrawingSheet
Dim views As DrawingViews
Dim view As DrawingView
Dim comps As DrawingComponents
Dim comp As DrawingComponent
Dim texts As DrawingTexts
Dim text As DrawingText
Dim nb As Integer
On Error Resume Next
Set drw = CATIA.ActiveDocument
If Err.Number <> 0 Then
MsgBox "Drawing attendu"
Exit Sub
End If
Set shts = drw.Sheets
Set sht = shts.Item("Cartouche")
Set views = sht.views
Set view = views.Item("Nom de la vue")
'***********************************
'Pour les cartouches "importés" que l'on ne peut désassembler en s'acharnant à le modifier à la main :p :
'***********************************
Set comps = view.Components
Set comp = comps.Item(1)
nb = comp.GetModifiableObjectsCount
For i = 1 To nb
If comp.GetModifiableObject(i).Name = "NOM DU TEXTE QUE L'ON SOUHAITE MODIFIER/REMPLIR" Then
comp.GetModifiableObject(i).text = "coucou"
End If
Next i
'***********************************
'Pour les cartouches "désassemblés" où on peut faire bordel si on ne sait pas utiliser sa souris :
'***********************************
Set texts = view.texts
For i = 1 To texts.Count
Set text = texts.Item(i)
If text.Name = "NOM DU TEXTE QUE L'ON SOUHAITE MODIFIER/REMPLIR" Then
text.text = "coucou"
End If
Next i
End Sub
Si problème, n'hésitez pas, demandez!
Ramex13- actif
- Messages : 30
Date d'inscription : 12/09/2014
Age : 31
Localisation : Aix-en-Provence
Re: replir un cartouche à partir d un fichier csv..
Bonsoir,
un grand merci je regarde la semaine prochaine et je tiens informé
un grand merci je regarde la semaine prochaine et je tiens informé
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: replir un cartouche à partir d un fichier csv..
Salut,
Il y a quelques temps j'avais fait une macro permettant de faire le passage entre Catia -> Excel et Excel -> Catia
https://catiav5.forumactif.org/t168p90-section-programmation-catscript-vba-vb-net#1497
ça peut donner des idées
Il y a quelques temps j'avais fait une macro permettant de faire le passage entre Catia -> Excel et Excel -> Catia
https://catiav5.forumactif.org/t168p90-section-programmation-catscript-vba-vb-net#1497
ça peut donner des idées
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: replir un cartouche à partir d un fichier csv..
Merci pour ton aide
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: replir un cartouche à partir d un fichier csv..
bonjour,
un ptit mot pour dire que j avance dans mes essais mais au vu du temps qu'on me laisse, ce n est pas rapide.
voila, à bientot
un ptit mot pour dire que j avance dans mes essais mais au vu du temps qu'on me laisse, ce n est pas rapide.
voila, à bientot
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: replir un cartouche à partir d un fichier csv..
Bonjour,
j'avance pas à pas mais la je n arrive pas à obtenir le nom du composent ( détail) que je sélectionne
pour m'en servir comme base de départ pour débuter l’écriture de mes lignes.
j'ai trouver ceci mais à priori ce n'est pas terrible.
CATIA.ActiveDocument.Selection.Application.StatusBar
Ce qui récupère le nom inscrit dans la barre de l'epplication Catia.
Merci pour votre aide.
j'avance pas à pas mais la je n arrive pas à obtenir le nom du composent ( détail) que je sélectionne
pour m'en servir comme base de départ pour débuter l’écriture de mes lignes.
j'ai trouver ceci mais à priori ce n'est pas terrible.
CATIA.ActiveDocument.Selection.Application.StatusBar
Ce qui récupère le nom inscrit dans la barre de l'epplication Catia.
Merci pour votre aide.
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: replir un cartouche à partir d un fichier csv..
Bonjour,
Désolé de ne pas trop te suivre en ce moment, mais je suis entre deux boulot c'est la folie..
Pour ton détail ce que je peux te proposer:
Tu dimensionne une variable en component : Dim detail as drawingcomponent
-> set detail = tondraw.sheets.tasheet.views.taview.components.item(x)
msgbox detail.name
Après tu peux adapter ça bien sur!
Désolé de ne pas trop te suivre en ce moment, mais je suis entre deux boulot c'est la folie..
Pour ton détail ce que je peux te proposer:
Tu dimensionne une variable en component : Dim detail as drawingcomponent
-> set detail = tondraw.sheets.tasheet.views.taview.components.item(x)
msgbox detail.name
Après tu peux adapter ça bien sur!
Ramex13- actif
- Messages : 30
Date d'inscription : 12/09/2014
Age : 31
Localisation : Aix-en-Provence
Re: replir un cartouche à partir d un fichier csv..
Bonjour,
Le soucis c'est je souhaite avoir un boite de dialogue qui te demande de sélectionner l'objet et ensuite à partir des coordonnée de la sélection , je positionne mon composent 2D (détail).
avec cette méthode tu dois sélectionné et ensuite tu as son nom.
je ne sais pas si je suis clair ?
Raph
Le soucis c'est je souhaite avoir un boite de dialogue qui te demande de sélectionner l'objet et ensuite à partir des coordonnée de la sélection , je positionne mon composent 2D (détail).
avec cette méthode tu dois sélectionné et ensuite tu as son nom.
je ne sais pas si je suis clair ?
Raph
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: replir un cartouche à partir d un fichier csv..
pourquoi utiliser un detail? et non pas un tableau ?
mike688- actif
- Messages : 257
Date d'inscription : 23/12/2009
Age : 43
Localisation : Portieux (88)
Re: replir un cartouche à partir d un fichier csv..
je te décrit le procédé que je veux mettre en place.
1- l'utilisateur créer sa nomenclature sur fichier excel
2- l'utilisateur est dans son plan est active la macro (nous y voila )
3- il sélectionne le fichier contenant la nomenclature (avec possibilité de plusieurs onglet pour sous ensemble)
4- il sélectionne la première ligne de nomenclature (qui est un détail) qui n as pas forcement une position fixe.
c 'est ici que j ai besoin de connaitre de ce qui est sélectionné. pour ajouter une copie de ce détail juste au dessus de celle sélectionnée
5- la macro reprend toute les ligne dans un tableau mémoire pour écrire toute les ligne avec les condition de position pour ne pas déborder du cadre.
1- l'utilisateur créer sa nomenclature sur fichier excel
2- l'utilisateur est dans son plan est active la macro (nous y voila )
3- il sélectionne le fichier contenant la nomenclature (avec possibilité de plusieurs onglet pour sous ensemble)
4- il sélectionne la première ligne de nomenclature (qui est un détail) qui n as pas forcement une position fixe.
c 'est ici que j ai besoin de connaitre de ce qui est sélectionné. pour ajouter une copie de ce détail juste au dessus de celle sélectionnée
5- la macro reprend toute les ligne dans un tableau mémoire pour écrire toute les ligne avec les condition de position pour ne pas déborder du cadre.
raphael_59240- actif
- Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque
Re: replir un cartouche à partir d un fichier csv..
quel interet de garder des détails?
ça complique séverement la macro et ce la t'interdi pratiquement la réutilisation des informations du 3D
voila ce que j'ai réussi a faire ici.
la facon de faire ici, c'est une reference avec des variante (famille de pièce)
donc on se retrouve avec des numéro du genre : 123456-0001, 123456-0002, etc... ça peux monté tres vite...
certaine pièce de l'assemblage seront commune a tous les assemblage,
le reste est tabulé
donc a partir dela vue selectionné je reccupère le nom de l'assemblage lié.
1/ je vais cherche dans le repertoire de travail tous les assemblages ayant le même part number (123456)
2/ je les charge , genere la bom (nomenclature) que j'ecris dans une fichier text pour chaque assemblage.
3/ je creer un tableau ou je remplis le numero de chaque composant, avec la quantité
pour chaque reference de l'assemblage.
partant de ce tableau, je met a jour la nomenclature du plan,
si toute les lignes de la colonne (pour un composant) sont identique, je mets le numero, sinon, je j'indique "see tab" en francais dans le text : voir tableau
une foi fait, je synchronise les informations qui reste avec le tableau de tabulation
tout cela dans un obectif qui est que le 3D fait foi et est la source de tout le reste.
mes conseil Raphael, sont les suivant:
utiliser un fichier.csv peux s'averrer laborieux
perfer y un fichier text.text que tu peux eventuellement generer a partir du fichier excel (encore une foi via une macro)
si ton probleme est d'ajouter une ligne au dess d'un tableau ..
inverse les ligne, ajoute une ligne et r'inverse le
ça complique séverement la macro et ce la t'interdi pratiquement la réutilisation des informations du 3D
voila ce que j'ai réussi a faire ici.
la facon de faire ici, c'est une reference avec des variante (famille de pièce)
donc on se retrouve avec des numéro du genre : 123456-0001, 123456-0002, etc... ça peux monté tres vite...
certaine pièce de l'assemblage seront commune a tous les assemblage,
le reste est tabulé
donc a partir dela vue selectionné je reccupère le nom de l'assemblage lié.
1/ je vais cherche dans le repertoire de travail tous les assemblages ayant le même part number (123456)
2/ je les charge , genere la bom (nomenclature) que j'ecris dans une fichier text pour chaque assemblage.
3/ je creer un tableau ou je remplis le numero de chaque composant, avec la quantité
pour chaque reference de l'assemblage.
partant de ce tableau, je met a jour la nomenclature du plan,
si toute les lignes de la colonne (pour un composant) sont identique, je mets le numero, sinon, je j'indique "see tab" en francais dans le text : voir tableau
une foi fait, je synchronise les informations qui reste avec le tableau de tabulation
tout cela dans un obectif qui est que le 3D fait foi et est la source de tout le reste.
mes conseil Raphael, sont les suivant:
utiliser un fichier.csv peux s'averrer laborieux
perfer y un fichier text.text que tu peux eventuellement generer a partir du fichier excel (encore une foi via une macro)
si ton probleme est d'ajouter une ligne au dess d'un tableau ..
inverse les ligne, ajoute une ligne et r'inverse le
mike688- actif
- Messages : 257
Date d'inscription : 23/12/2009
Age : 43
Localisation : Portieux (88)
Re: replir un cartouche à partir d un fichier csv..
en gros je reccupère la maximum d'information dans un tableau eponge, et je l'essort en fonction de mes besoin,(cela evite de mettre 2x la même information sur le plan)
mike688- actif
- Messages : 257
Date d'inscription : 23/12/2009
Age : 43
Localisation : Portieux (88)
Page 1 sur 2 • 1, 2
Sujets similaires
» comment inserer le nom du fichier dans un cartouche en automatique
» Simulation cinématique à partir d'un fichier externe
» Macro Import d'un arbre catia à partir d'un fichier excel
» Importer propriétés aux parts d'un assemblage à partir d'un fichier excel BOMs
» DRAWING - Cartouche personnalisé - Récupérer infos part pour ajout dans le cartouche
» Simulation cinématique à partir d'un fichier externe
» Macro Import d'un arbre catia à partir d'un fichier excel
» Importer propriétés aux parts d'un assemblage à partir d'un fichier excel BOMs
» DRAWING - Cartouche personnalisé - Récupérer infos part pour ajout dans le cartouche
Page 1 sur 2
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum