CATIA V5 | 3DEXPERIENCE
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
Réassort du coffret Pokémon 151 Électhor-ex : où l’acheter ?
Voir le deal

replir un cartouche à partir d un fichier csv..

5 participants

Page 1 sur 2 1, 2  Suivant

Aller en bas

EnCours replir un cartouche à partir d un fichier csv..

Message par raphael_59240 Dim 29 Mar 2015 - 16:41

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. Sad  Sad


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
raphael_59240
actif
actif

Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par Ramex13 Dim 29 Mar 2015 - 20:25

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)

Ramex13
actif
actif

Messages : 30
Date d'inscription : 12/09/2014
Age : 30
Localisation : Aix-en-Provence

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par raphael_59240 Dim 29 Mar 2015 - 20:56

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.Wink
raphael_59240
raphael_59240
actif
actif

Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par Ramex13 Dim 29 Mar 2015 - 21:05

Oui là j'ai compris hourra!Exclamation (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?

Ramex13
actif
actif

Messages : 30
Date d'inscription : 12/09/2014
Age : 30
Localisation : Aix-en-Provence

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par raphael_59240 Dim 29 Mar 2015 - 22:17

Oui c est cela
je peux fournir un fichier  si besoin. .un catdrawing
raphael_59240
raphael_59240
actif
actif

Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par Ramex13 Lun 30 Mar 2015 - 17:35

Oui cela pourrait être utile Very Happy

Ramex13
actif
actif

Messages : 30
Date d'inscription : 12/09/2014
Age : 30
Localisation : Aix-en-Provence

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par raphael_59240 Lun 30 Mar 2015 - 17:42

As tu une adresse sur laquelle j peux t envoye le catdraw et un csv
raphael_59240
raphael_59240
actif
actif

Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par Ramex13 Lun 30 Mar 2015 - 17:44

Oui je te l'envoie en mp

Ramex13
actif
actif

Messages : 30
Date d'inscription : 12/09/2014
Age : 30
Localisation : Aix-en-Provence

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par SamsGuamejy Mar 7 Avr 2015 - 12:47

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 Exclamation!

_________________
SamsGuamejy
3DExperience R2018x
Responsable R&D
http://www.beam3.bzh

Xeon E3-1505M 2.80GHz _ Quadro M3000M _ 32Go Ram _ Win10 _ SSD 240Go + DD 500Go
SamsGuamejy
SamsGuamejy
Fédérateur
Fédérateur

Messages : 314
Date d'inscription : 13/09/2010
Age : 39
Localisation : Vendée (85) FRANCE

http://www.beam3.fr

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par raphael_59240 Mar 7 Avr 2015 - 14:26

bonjour,


qu'entends tu dans "attention au critère de séparation"?

raph
raphael_59240
raphael_59240
actif
actif

Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par SamsGuamejy Mar 7 Avr 2015 - 17:43

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...)

_________________
SamsGuamejy
3DExperience R2018x
Responsable R&D
http://www.beam3.bzh

Xeon E3-1505M 2.80GHz _ Quadro M3000M _ 32Go Ram _ Win10 _ SSD 240Go + DD 500Go
SamsGuamejy
SamsGuamejy
Fédérateur
Fédérateur

Messages : 314
Date d'inscription : 13/09/2010
Age : 39
Localisation : Vendée (85) FRANCE

http://www.beam3.fr

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par raphael_59240 Mar 7 Avr 2015 - 21:13

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
raphael_59240
actif
actif

Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par SamsGuamejy Mer 8 Avr 2015 - 10:44

C'est tout à fait faisable mais pour cela il faut passer par le VBA ou encore mieux le .NET ;-)

_________________
SamsGuamejy
3DExperience R2018x
Responsable R&D
http://www.beam3.bzh

Xeon E3-1505M 2.80GHz _ Quadro M3000M _ 32Go Ram _ Win10 _ SSD 240Go + DD 500Go
SamsGuamejy
SamsGuamejy
Fédérateur
Fédérateur

Messages : 314
Date d'inscription : 13/09/2010
Age : 39
Localisation : Vendée (85) FRANCE

http://www.beam3.fr

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par Ramex13 Ven 10 Avr 2015 - 20:05

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!):

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! Smile

Ramex13
actif
actif

Messages : 30
Date d'inscription : 12/09/2014
Age : 30
Localisation : Aix-en-Provence

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par raphael_59240 Ven 10 Avr 2015 - 21:34

Bonsoir,
un grand merci je regarde la semaine prochaine et je tiens informé
raphael_59240
raphael_59240
actif
actif

Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par Guss_ Lun 13 Avr 2015 - 9:44

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 Wink

Guss_
Admin
Admin

Messages : 530
Date d'inscription : 08/01/2010

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par raphael_59240 Lun 13 Avr 2015 - 14:13

Merci pour ton aide Smile Smile cheers
raphael_59240
raphael_59240
actif
actif

Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par raphael_59240 Lun 20 Avr 2015 - 6:29

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
raphael_59240
raphael_59240
actif
actif

Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par raphael_59240 Mar 21 Avr 2015 - 13:14

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.
raphael_59240
raphael_59240
actif
actif

Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par Ramex13 Mar 21 Avr 2015 - 20:49

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!


Ramex13
actif
actif

Messages : 30
Date d'inscription : 12/09/2014
Age : 30
Localisation : Aix-en-Provence

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par raphael_59240 Ven 24 Avr 2015 - 12:08

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
raphael_59240
raphael_59240
actif
actif

Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par mike688 Ven 24 Avr 2015 - 14:21

pourquoi utiliser un detail? et non pas un tableau ?
mike688
mike688
actif
actif

Messages : 257
Date d'inscription : 23/12/2009
Age : 42
Localisation : Portieux (88)

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par raphael_59240 Ven 24 Avr 2015 - 14:34

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.
raphael_59240
raphael_59240
actif
actif

Messages : 127
Date d'inscription : 28/03/2015
Age : 53
Localisation : dunkerque

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par mike688 Ven 24 Avr 2015 - 15:14

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  Smile
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
mike688
actif
actif

Messages : 257
Date d'inscription : 23/12/2009
Age : 42
Localisation : Portieux (88)

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par mike688 Ven 24 Avr 2015 - 15:18

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
mike688
actif
actif

Messages : 257
Date d'inscription : 23/12/2009
Age : 42
Localisation : Portieux (88)

Revenir en haut Aller en bas

EnCours Re: replir un cartouche à partir d un fichier csv..

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivant

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum