Section programmation CatScript, VBA, VB.NET...
+8
flo
Tétras-Mobile
Guss_
Threedots
tuxmickmac
mike688
gautier2305
SamsGuamejy
12 participants
Page 4 sur 5
Page 4 sur 5 • 1, 2, 3, 4, 5
Re: Section programmation CatScript, VBA, VB.NET...
Oula ça fait longtemps que je suis pas venu ici...
j'ai pas reçu les alertes par mail:(
je vais avoir de la lecture...
j'ai pas reçu les alertes par mail:(
je vais avoir de la lecture...
Re: Section programmation CatScript, VBA, VB.NET...
Oui un petit peu de lecture Sam
gautier2305- Fédérateur
- Messages : 412
Date d'inscription : 02/09/2010
Age : 38
Localisation : Carvin(62)
Re: Section programmation CatScript, VBA, VB.NET...
Ah ! Sam le retour ^^
Oui, de la lecture... et quelques nouvelles têtes
Oui, de la lecture... et quelques nouvelles têtes
Threedots- Fédérateur
- Messages : 617
Date d'inscription : 16/09/2010
Age : 36
Localisation : Toulouse
Re: Section programmation CatScript, VBA, VB.NET...
Bon allez c'est presque noel, deux petits scripts (à adapté pour les version US) :
- Permettant en mise en plan d'aller chercher le nom d'une pièce 3D et de la passer dans une zone de texte nommée "nom"
- Permettant en mise en plan de cacher toutes les flèches de repères bleus de toutes les vues de mise en plan
voilà peut être que j'améliorerais les codes pour qu'ils soit compatibles plus facilement entre les version FR et US (mais je n'ai pas de version US pour tester)
Il faudrait indiqué le numéro d'ITEM et non le nom comme le fait automatiquement identification automatique.
- Permettant en mise en plan d'aller chercher le nom d'une pièce 3D et de la passer dans une zone de texte nommée "nom"
- Code:
Sub CATMain()
'---- Début du script de résolution de l'objet : vue_active
Set drawingDocument1 = CATIA.ActiveDocument
Set drawingSheets1 = drawingDocument1.Sheets
Set drawingSheet1 = drawingSheets1.Item("Calque.1")
Set drawingViews1 = drawingSheet1.Views
Set vue_active = drawingViews1.ActiveView
'---- Fin du script de résolution
'---- Début du script de résolution de l'objet : zone_text_nom
Set drawingView1 = drawingViews1.Item("Main View")
Set drawingTexts1 = drawingView1.Texts
Set zone_text_nom = drawingTexts1.GetItem("nom")
'---- Fin du script de résolution
'----Traitement
If vue_active.Name = "Main View" Then
MsgBox ("veuilliez séléctioner une vue")
Else
nom_piece_3D = vue_active.GenerativeBehavior.Document.ReferenceProduct.Name
zone_text_nom.Text = Replace(nom_piece_3D, "_", " ")
End If
End Sub
- Permettant en mise en plan de cacher toutes les flèches de repères bleus de toutes les vues de mise en plan
- Code:
Sub CATMain()
'---- Début du script de résolution de l'objet : Axe horizontal
Set drawingDocument1 = CATIA.ActiveDocument
Set drawingSheets1 = drawingDocument1.Sheets
Set selection1 = drawingDocument1.Selection
Set visPropertySet1 = selection1.VisProperties
Set drawingSheet1 = drawingSheets1.Item("Calque.1")
Set drawingViews1 = drawingSheet1.Views
Set visPropertySet1 = visPropertySet1.Parent
'---- Fin du script de résolution
selection1.Clear'---- libère toutes les séléctions
For A = 3 To drawingViews1.Count '---- séléctionne tous les repères
Set drawingView1 = drawingViews1.Item(A)
Set geometricElements1 = drawingView1.GeometricElements
Set repere = geometricElements1.Item("Repère")
Set axe_h = repere.GetItem("Axe horizontal")
Set axe_v = repere.GetItem("Axe vertical")
selection1.Add axe_v
selection1.Add axe_h
Next
visPropertySet1.SetShow 1 '---- cache tout ce qui à été séléctionné
selection1.Clear '---- libère toutes les séléctions
End Sub
voilà peut être que j'améliorerais les codes pour qu'ils soit compatibles plus facilement entre les version FR et US (mais je n'ai pas de version US pour tester)
Il faudrait indiqué le numéro d'ITEM et non le nom comme le fait automatiquement identification automatique.
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Section programmation CatScript, VBA, VB.NET...
Merci Guss, je modifie et teste ca dés que j'ai 5 minutes sur une version US!
gautier2305- Fédérateur
- Messages : 412
Date d'inscription : 02/09/2010
Age : 38
Localisation : Carvin(62)
Re: Section programmation CatScript, VBA, VB.NET...
Ok
J'ai un petit soucis de script, je voudrais automatiser mes impression de dossier de plan mais voilà j'arrive à tout faire sauf, l'impression
J'ai une erreur lorsque j'utilise "PrintOut"
"Method 'PrintOut' of object 'DrawingSheet' failled"
Je ne trouve pas vraiment d'exemple sur le net, et il n'y a pas d'exemple dans la doc de catia à part la syntaxe ...
Je n'ai peut pas pas initialisé un paramètre de l'objet, je n'en sais rien, quelqu'un a t-il utilisé cette method ?
J'ai un petit soucis de script, je voudrais automatiser mes impression de dossier de plan mais voilà j'arrive à tout faire sauf, l'impression
J'ai une erreur lorsque j'utilise "PrintOut"
"Method 'PrintOut' of object 'DrawingSheet' failled"
Je ne trouve pas vraiment d'exemple sur le net, et il n'y a pas d'exemple dans la doc de catia à part la syntaxe ...
Je n'ai peut pas pas initialisé un paramètre de l'objet, je n'en sais rien, quelqu'un a t-il utilisé cette method ?
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Un script pour dupliquer un product
Bonjour,
Je suis totalement incapable de créer un script Mais j'aimerais bien en avoir un qui réponde à une manip que je fais souvant. A partir d'un produit j'en fait un nouveau en concervant quelques pièces communes entre le premier produit et le nouveau. Pour y parvenir, entre le renommage des nouvelles parts et le nouveau produit, ça peu me prendre un peu de temps. Un script me ferai gagner beaucoup de temps.
Si l'un d'entre vous se sent l'âme de me faire ça alors je le remerci d'avance.
Si l'un d'entre vous se sent l'âme de me faire ça alors je le remerci d'avance.
Tétras-Mobile- actif
- Messages : 276
Date d'inscription : 30/11/2010
Age : 55
Localisation : MEGEVETTE -74
Re: Section programmation CatScript, VBA, VB.NET...
Salut Stéphane,
Je sais pas si tu as jeté un coup d'oeil un peu plus avant dans le fil de discussion (p.2-3), mais je m'étais un peu penché sur la sauvegarde de produit, permettant de découpler totalement le nouveau produit de l'ancien (pour permettre notamment de "figer" un modèle à un instant "T").
Pour ce faire, la sauvegarde est manuelle (sauvegarder le produit principal dans un répertoire, propager le répertoire, ajouter un préfixe : tout est dispo dans "gestion des enregistrements", c'est donc assez rapide), puis on renomme les pièces en leur ajoutant un préfixe. Cette partie renommage a été automatisée par une macro.
Ca pourrait t'aider ? Si oui je t'enverrai ça par boite mail, il y a plusieurs choses à ajouter et si tu ne connais pas du tout VBA ça peut être difficile...
Après comme je suis moi aussi pas trop un spécialiste, je n'ai pas le temps de modifier ce bout de code, qui pourrait être amélioré, j'en suis sûr... mais bon.
A tout'
Je sais pas si tu as jeté un coup d'oeil un peu plus avant dans le fil de discussion (p.2-3), mais je m'étais un peu penché sur la sauvegarde de produit, permettant de découpler totalement le nouveau produit de l'ancien (pour permettre notamment de "figer" un modèle à un instant "T").
Pour ce faire, la sauvegarde est manuelle (sauvegarder le produit principal dans un répertoire, propager le répertoire, ajouter un préfixe : tout est dispo dans "gestion des enregistrements", c'est donc assez rapide), puis on renomme les pièces en leur ajoutant un préfixe. Cette partie renommage a été automatisée par une macro.
Ca pourrait t'aider ? Si oui je t'enverrai ça par boite mail, il y a plusieurs choses à ajouter et si tu ne connais pas du tout VBA ça peut être difficile...
Après comme je suis moi aussi pas trop un spécialiste, je n'ai pas le temps de modifier ce bout de code, qui pourrait être amélioré, j'en suis sûr... mais bon.
A tout'
Threedots- Fédérateur
- Messages : 617
Date d'inscription : 16/09/2010
Age : 36
Localisation : Toulouse
Re: Section programmation CatScript, VBA, VB.NET...
Merci pour cette réponse si rapide. Je vais regarder ça. J'ai du louper une ligne en lisant ce fil.Threedots a écrit:Salut Stéphane,
Je sais pas si tu as jeté un coup d'oeil un peu plus avant dans le fil de discussion (p.2-3), mais je m'étais un peu penché sur la sauvegarde de produit, permettant de découpler totalement le nouveau produit de l'ancien (pour permettre notamment de "figer" un modèle à un instant "T").
Pour ce faire, la sauvegarde est manuelle (sauvegarder le produit principal dans un répertoire, propager le répertoire, ajouter un préfixe : tout est dispo dans "gestion des enregistrements", c'est donc assez rapide), puis on renomme les pièces en leur ajoutant un préfixe. Cette partie renommage a été automatisée par une macro.
Ca pourrait t'aider ? Si oui je t'enverrai ça par boite mail, il y a plusieurs choses à ajouter et si tu ne connais pas du tout VBA ça peut être difficile...
Après comme je suis moi aussi pas trop un spécialiste, je n'ai pas le temps de modifier ce bout de code, qui pourrait être amélioré, j'en suis sûr... mais bon.
A tout'
Tétras-Mobile- actif
- Messages : 276
Date d'inscription : 30/11/2010
Age : 55
Localisation : MEGEVETTE -74
Re: Section programmation CatScript, VBA, VB.NET...
Guss_ a écrit:Ok
J'ai un petit soucis de script, je voudrais automatiser mes impression de dossier de plan mais voilà j'arrive à tout faire sauf, l'impression
J'ai une erreur lorsque j'utilise "PrintOut"
"Method 'PrintOut' of object 'DrawingSheet' failled"
Je ne trouve pas vraiment d'exemple sur le net, et il n'y a pas d'exemple dans la doc de catia à part la syntaxe ...
Je n'ai peut pas pas initialisé un paramètre de l'objet, je n'en sais rien, quelqu'un a t-il utilisé cette method ?
Je viens de faire un essai en imprimant un fichier en pdf avec PDF creator et ca marche, il y a surement la réponse à ta question dans le script, tu as surement du oublié de déclarer une variable. Voici le script:
Language="VBSCRIPT"
Sub CATMain()
Dim printers1 As Printers
Set printers1 = CATIA.Printers
Dim printer1 As Printer
Set printer1 = printers1.Item("PDFCreator")
CATIA.ActivePrinter = printer1
Dim specsAndGeomWindow1 As Window
Set specsAndGeomWindow1 = CATIA.ActiveWindow
Dim pageSetup1 As PageSetup
Set pageSetup1 = specsAndGeomWindow1.PageSetup
pageSetup1.PaperSize = catPaperA4
pageSetup1.Orientation = catPaperPortrait
pageSetup1.LeftMargin = 1.000000
pageSetup1.RightMargin = 1.000000
pageSetup1.TopMargin = 1.000000
pageSetup1.BottomMargin = 1.000000
pageSetup1.MaximumSize = True
pageSetup1.Rotation = catImageRotation90
pageSetup1.BannerPosition = catBannerPositionNone
pageSetup1.Quality = catPrintQualityDraft
pageSetup1.color = catColorTrueColor
pageSetup1.PrintRenderingMode = catPrintRenderingModeDefault
pageSetup1.TextBlanking = False
pageSetup1.WhiteVectorsInBlack = True
pageSetup1.LineWidthSpecification = catPrintAbsolute
pageSetup1.LineTypeSpecification = catPrintAbsolute
pageSetup1.LineCap = catPrintFlat
pageSetup1.TextScaling = True
pageSetup1.LineTypeOverlappingCheck = False
pageSetup1.Gamma = 1.000000
specsAndGeomWindow1.PrintOut
End Sub
gautier2305- Fédérateur
- Messages : 412
Date d'inscription : 02/09/2010
Age : 38
Localisation : Carvin(62)
Re: Section programmation CatScript, VBA, VB.NET...
gautier2305 a écrit:Guss_ a écrit:Ok
J'ai un petit soucis de script, je voudrais automatiser mes impression de dossier de plan mais voilà j'arrive à tout faire sauf, l'impression
J'ai une erreur lorsque j'utilise "PrintOut"
"Method 'PrintOut' of object 'DrawingSheet' failled"
Je ne trouve pas vraiment d'exemple sur le net, et il n'y a pas d'exemple dans la doc de catia à part la syntaxe ...
Je n'ai peut pas pas initialisé un paramètre de l'objet, je n'en sais rien, quelqu'un a t-il utilisé cette method ?
Je viens de faire un essai en imprimant un fichier en pdf avec PDF creator et ca marche, il y a surement la réponse à ta question dans le script, tu as surement du oublié de déclarer une variable. Voici le script:
- Code:
[color=green]Language="VBSCRIPT"
Sub CATMain()
Dim printers1 As Printers
Set printers1 = CATIA.Printers
Dim printer1 As Printer
Set printer1 = printers1.Item("PDFCreator")
CATIA.ActivePrinter = printer1
Dim specsAndGeomWindow1 As Window
Set specsAndGeomWindow1 = CATIA.ActiveWindow
Dim pageSetup1 As PageSetup
Set pageSetup1 = specsAndGeomWindow1.PageSetup
pageSetup1.PaperSize = catPaperA4
pageSetup1.Orientation = catPaperPortrait
pageSetup1.LeftMargin = 1.000000
pageSetup1.RightMargin = 1.000000
pageSetup1.TopMargin = 1.000000
pageSetup1.BottomMargin = 1.000000
pageSetup1.MaximumSize = True
pageSetup1.Rotation = catImageRotation90
pageSetup1.BannerPosition = catBannerPositionNone
pageSetup1.Quality = catPrintQualityDraft
pageSetup1.color = catColorTrueColor
pageSetup1.PrintRenderingMode = catPrintRenderingModeDefault
pageSetup1.TextBlanking = False
pageSetup1.WhiteVectorsInBlack = True
pageSetup1.LineWidthSpecification = catPrintAbsolute
pageSetup1.LineTypeSpecification = catPrintAbsolute
pageSetup1.LineCap = catPrintFlat
pageSetup1.TextScaling = True
pageSetup1.LineTypeOverlappingCheck = False
pageSetup1.Gamma = 1.000000
specsAndGeomWindow1.PrintOut
End Sub[/color]
Merci, je pense avoir oublié de configurer la propriété Pagesetup
Par contre tu imprime un objet Window alors que je veux imprimer un objet Drawingsheet, pour le moment je n'arrive pas à configurer le pagesetup
v'la mon bout de code
- Code:
Private Sub btn_imprime_Click()
Dim Documents1 As Documents
Dim DrwDocument As DrawingDocument
Dim DrwSheets As DrawingSheets
Dim Drwsheet As DrawingSheet
Dim Conf_impression As DrawingPageSetup
Set Documents1 = CATIA.Documents
n_selection = lst_fichiers.ListCount
For n = 0 To n_selection - 1
If lst_fichiers.Selected(n) Then
selection_impression = repertoire + "" + lst_fichiers.List(n)
ListBox1.AddItem selection_impression
Set DrwDocument = Documents1.Read(selection_impression)
Set DrwSheets = DrwDocument.Sheets
Set Drwsheet = DrwSheets.Item(1)
Set Conf_impression = Drwsheet.PageSetup <==== erreur "methode 'PageSetup' of object 'Drawingsheet' failed"
txt_debug4.Text = imprimante.DeviceName
Conf_impression.FitToPrinterFormat = true
Drwsheet.PrintOut
DrwDocument.Close
End If
Next
End Sub
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Section programmation CatScript, VBA, VB.NET...
la macro marche pour du 3d mais aussi pour le drawing, je l'ai testée!
Au lieu de mettre ca
Drwsheet.PrintOut
Si tu mets ca ca marche pas?
specsAndGeomWindow1.PrintOut
Au lieu de mettre ca
Drwsheet.PrintOut
Si tu mets ca ca marche pas?
specsAndGeomWindow1.PrintOut
gautier2305- Fédérateur
- Messages : 412
Date d'inscription : 02/09/2010
Age : 38
Localisation : Carvin(62)
Re: Section programmation CatScript, VBA, VB.NET...
specsAndGeomWindow1 c'est ton objet window définie par
Dim specsAndGeomWindow1 As Window
Moi j'ai
Dim Drwsheet As DrawingSheet
Donc visiblemetn pas tout à fait pareil à gèrer.
Ce que tu imprime c'est le contenu d'une fenêtre, moi je veux imprimé le contenu d'un 2D en le chargeant en mémoire sans l'afficher dans une fenêtre.
dans les exemple il y a bien
o Property PageSetup( ) As DrawingPageSetup (Read Only)
Returns the page setup.
Example:
This example returns the page setup for the MySheet drawing sheet.
Dim MySheetPageSetup As DrawingPageSetup
Set MySheetPageSetup = MySheet.PageSetup
Sub PrintOut( )
Prints the drawing sheet according to its page setup on the default printer.
Warning: This method is not available with 2D Layout for 3D Design.
Example:
This example prints the DrawingSheet1 on the default printer.
DrawingSheet1.PrintOut
Dim specsAndGeomWindow1 As Window
Moi j'ai
Dim Drwsheet As DrawingSheet
Donc visiblemetn pas tout à fait pareil à gèrer.
Ce que tu imprime c'est le contenu d'une fenêtre, moi je veux imprimé le contenu d'un 2D en le chargeant en mémoire sans l'afficher dans une fenêtre.
dans les exemple il y a bien
o Property PageSetup( ) As DrawingPageSetup (Read Only)
Returns the page setup.
Example:
This example returns the page setup for the MySheet drawing sheet.
Dim MySheetPageSetup As DrawingPageSetup
Set MySheetPageSetup = MySheet.PageSetup
Sub PrintOut( )
Prints the drawing sheet according to its page setup on the default printer.
Warning: This method is not available with 2D Layout for 3D Design.
Example:
This example prints the DrawingSheet1 on the default printer.
DrawingSheet1.PrintOut
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Section programmation CatScript, VBA, VB.NET...
Bon encore un petit soucis.
Mon script est visiblement opérationnel, par contre, seul bémol, là ou je bosse il y a des page de garde pour chaque tâche d'impression, alors j'aimerais pouvoir regrouper toutes mes impressions en une seul.
Je ne sais pas si avec catia ce genre de chose est possible
Mon script est visiblement opérationnel, par contre, seul bémol, là ou je bosse il y a des page de garde pour chaque tâche d'impression, alors j'aimerais pouvoir regrouper toutes mes impressions en une seul.
Je ne sais pas si avec catia ce genre de chose est possible
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Section programmation CatScript, VBA, VB.NET...
Merci de nous tenir au courant.
Pour ton nouveau problème, en imprimant tes documents en PDF et en les compilant ensuite mais en dehors de Catia, ca ne te convient pas?
Car dans catia je ne pense pas que ce soit faisable, mais on ne sait jamais.
Pour ton nouveau problème, en imprimant tes documents en PDF et en les compilant ensuite mais en dehors de Catia, ca ne te convient pas?
Car dans catia je ne pense pas que ce soit faisable, mais on ne sait jamais.
gautier2305- Fédérateur
- Messages : 412
Date d'inscription : 02/09/2010
Age : 38
Localisation : Carvin(62)
Re: Section programmation CatScript, VBA, VB.NET...
Voilà mon code actuel
Le code à besoin de :
1 combobox : lst_imprimantes
1 label : lab_repertoire
2 bouton : btn_repertoire, btn_imprime
1 listbox : lst_fichiers
Code lié au module :
code lié à la "Form" :
Le code à besoin de :
1 combobox : lst_imprimantes
1 label : lab_repertoire
2 bouton : btn_repertoire, btn_imprime
1 listbox : lst_fichiers
Code lié au module :
- Code:
Sub CATMain()
Load Page
Page.Show
End Sub
code lié à la "Form" :
- Code:
Dim repertoire
Dim imprimantes As Printers
Dim imprimante As Printer
Dim selection_impression As String
Dim n_selection As Integer
Private Sub btn_imprime_Click()
'initialisation des parametres
Dim Documents As Documents
Dim Document As Document
Dim DrwDocument As DrawingDocument
Dim DrwSheets As DrawingSheets
Dim DrwSheet As DrawingSheet
Dim Conf_impression As DrawingPageSetup
'création d'un fentre sinon les moethode liées à l'impression ne sont pas disponibles
Set Document = CATIA.Documents.Add("Part")
Set Documents = CATIA.Documents
n_selection = lst_fichiers.ListCount
'Traitement de chaque éléments séléctioné dans la liste
For n = 0 To n_selection - 1
If lst_fichiers.Selected(n) Then
selection_impression = repertoire + "" + lst_fichiers.List(n) 'chargement d'un drawing
Set DrwDocument = Documents.Read(selection_impression)
Set DrwSheets = DrwDocument.Sheets
Set DrwSheet = DrwSheets.Item(1)
Set Conf_impression = DrwSheet.PageSetup 'paramètrage du format d'impression
Conf_impression.Orientation = imprimante.Orientation
Conf_impression.PaperSize = imprimante.PaperSize
Conf_impression.PaperHeight = imprimante.PaperHeight
Conf_impression.PaperWidth = imprimante.PaperWidth
DrwSheet.PrintOut 'imprsionn
DrwDocument.Close 'fermeture du drawing
End If
Next
Document.Close 'fermeture de la fenetre
End Sub
Private Sub btn_repertoire_Click()
repertoire = choix_rep("choix du répètroire")
lab_repertoire = repertoire + ""
scan_repertoire (repertoire)
Call trie(lst_fichiers)
End Sub
Function choix_rep(titre)
Set objShell = CreateObject("shell.Application")
Set objFolder = objShell.BrowseForFolder(0, titre, 0)
If (Not objFolder Is Nothing) Then
choix_rep = objFolder.Items.Item.Path
End If
Set objFolder = Nothing
Set objShell = Nothing
End Function
Sub scan_repertoire(ByVal rep)
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
lst_fichiers.Clear
On Error GoTo erreur
Set contenu_rep = FSO.GetFolder(rep)
For Each fichier In contenu_rep.Files
If (InStr(1, fichier.Name, ".catdrawing", 1) > 0) Then
lst_fichiers.AddItem fichier.Name
End If
Next
lst_fichiers.Enabled = True
Exit Sub
erreur:
MsgBox ("erreur de séléction du répertoire")
End Sub
Private Sub lst_fichiers_Change()
btn_imprime.Enabled = False
For n = 0 To lst_fichiers.ListCount - 1
If lst_fichiers.Selected(n) = True Then btn_imprime.Enabled = True
Next n
End Sub
Private Sub lst_imprimantes_Change()
Set imprimantes = CATIA.Printers
CATIA.ActivePrinter = imprimantes.Item(lst_imprimantes.Text)
Set imprimante = CATIA.ActivePrinter
End Sub
Private Sub UserForm_Activate()
Set imprimantes = CATIA.Printers
For Each imprimante In imprimantes
lst_imprimantes.AddItem imprimante.DeviceName
Next
Set imprimante = CATIA.ActivePrinter
lst_imprimantes.Text = imprimante.DeviceName
End Sub
Private Sub trie(ByRef LB As ListBox)
Dim First, Last, i, j As Integer
Dim Temp As String
Dim TempArray As Variant
ReDim TempArray(LB.ListCount)
First = LBound(TempArray)
Last = UBound(TempArray) - 1
For i = First To Last
TempArray(i) = LB.List(i)
Next i
For i = First To Last
For j = i + 1 To Last
If TempArray(i) > TempArray(j) Then
Temp = TempArray(j)
TempArray(j) = TempArray(i)
TempArray(i) = Temp
End If
Next j
Next i
LB.Clear
For i = First To Last
LB.AddItem TempArray(i)
Next i
End Sub
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Section programmation CatScript, VBA, VB.NET...
Nouvelle macro (editeur visual basic), permettant d'insérer ou éditer un tableau Catia via Excel
avec un tableau contenant les colonnes N°plan, indice, nombre, désignation et Observation
A adapter suivant vos besoins, et me demander si vous voulez changer le nombre de colonnes et les tailles si vous n'arrivez pas à déchiffrer toutes la macro.
Attention, lors du passage de Excel vers catia, il y a une vérification de l'existence de la case contenant "N°Plan" dans la colonne A, donc il faut changer cette vérification si vous changez le nom de cette case
Attention pour un bon focntionnement il faut autoriser Excel à recevoir du code depuis catia
Dans le menu Excel "outils" -> "Macro" -> "Securité" -> "Editeur approuvée"
cochez la case "Faire confiance au projet Visual Basic
avec un tableau contenant les colonnes N°plan, indice, nombre, désignation et Observation
A adapter suivant vos besoins, et me demander si vous voulez changer le nombre de colonnes et les tailles si vous n'arrivez pas à déchiffrer toutes la macro.
Attention, lors du passage de Excel vers catia, il y a une vérification de l'existence de la case contenant "N°Plan" dans la colonne A, donc il faut changer cette vérification si vous changez le nom de cette case
Attention pour un bon focntionnement il faut autoriser Excel à recevoir du code depuis catia
Dans le menu Excel "outils" -> "Macro" -> "Securité" -> "Editeur approuvée"
cochez la case "Faire confiance au projet Visual Basic
- Code:
Sub CATMain()
'--- initialisation objet nomenclateur
Dim drawingDocument1 As DrawingDocument
Dim drawingSheets1 As DrawingSheets
Dim drawingSheet1 As DrawingSheet
Dim drawingViews1 As DrawingViews
Dim drawingView1 As DrawingView
Dim drawingTables1 As DrawingTables
Dim nomenclature As DrawingTable
Set drawingDocument1 = Catia.ActiveDocument
Set drawingSheets1 = drawingDocument1.Sheets
Set drawingSheet1 = drawingSheets1.Item("Calque.1")
Set drawingViews1 = drawingSheet1.Views
Set drawingView1 = drawingViews1.Item("Main View")
Set drawingTables1 = drawingView1.Tables
'---- test si un taleau existe si non on le créé
On Error Resume Next
Set nomenclature = drawingTables1.Item(1)
If Err.Number <> 0 Then
Set nomenclature = drawingTables1.Add(0, 0, 1, 5, 7, 200 / 5)
With nomenclature
.SetCellString 1, 1, "N°Plan"
.SetCellString 1, 2, "Ind."
.SetCellString 1, 3, "Nb"
.SetCellString 1, 4, "Désignation"
.SetCellString 1, 5, "Observations"
.SetColumnSize 1, 28
.SetColumnSize 2, 10
.SetColumnSize 3, 10
.SetColumnSize 4, 76
.SetColumnSize 5, 76
For C = 1 To 5
With .GetCellObject(1, C)
.SetFontSize 0, 0, 2.3
End With
Next
End With
End If
'---- initialisation variables de traiement
Dim colonnes As Long
Dim lignes As Long
colonnes = nomenclature.NumberOfColumns
lignes = nomenclature.NumberOfRows
'---- initialisation excel
Dim Excel As Object
On Error Resume Next
Set Excel = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Set Excel = CreateObject("Excel.Application")
Excel.Visible = True
End If
On Error GoTo 0
Excel.Visible = True
Excel.Workbooks.Add
Set wbks = Excel.ActiveWorkbook
Set wbk = wbks.Sheets(1)
'------- passage catia -> excel
For L = 1 To lignes
For C = 1 To colonnes
wbk.Cells(L, C) = nomenclature.GetCellString(L, C)
wbk.Cells(L, C).borders.LineStyle = 1
wbk.Cells(L, C).borders.Weight = 2
Next
Next
'------ mis en page excel
wbk.Columns(1).ColumnWidth = 14.29
wbk.Columns(2).ColumnWidth = 2.57
wbk.Columns(3).ColumnWidth = 4.43
wbk.Columns(4).ColumnWidth = 42.71
wbk.Columns(5).ColumnWidth = 30.71
'---- initialisation bouton de mise à jour excel
Dim Obj As Object
Dim Code As String
'---- create button
Set Obj = wbk.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, Left:=550, Top:=0, Width:=100, Height:=35)
Obj.Name = "Bouton_MAJ"
'---- buttonn text
wbk.Bouton_MAJ.Caption = "Mise à jour de la nomenclature"
wbk.Bouton_MAJ.WordWrap = True
wbk.Bouton_MAJ.TakeFocusOnClick = False
'---- macro text
Code = Code & "Private Sub Bouton_MAJ_Click()" & vbCrLf
Code = Code & " " & vbCrLf
Code = Code & "'---- initialisation catia" & vbCrLf
Code = Code & " Dim Catia As Object" & vbCrLf
Code = Code & " On Error Resume Next" & vbCrLf
Code = Code & " Set Catia = GetObject(, ""CATIA.Application"")" & vbCrLf
Code = Code & " If Err.Number <> 0 Then" & vbCrLf
Code = Code & " MsgBox (""pas de session catia trouvée"")" & vbCrLf
Code = Code & " Else" & vbCrLf
Code = Code & " On Error GoTo 0" & vbCrLf
Code = Code & " Set drawingDocument1 = Catia.ActiveDocument" & vbCrLf
Code = Code & " Set drawingSheets1 = drawingDocument1.Sheets" & vbCrLf
Code = Code & " Set drawingSheet1 = drawingSheets1.Item(""Calque.1"")" & vbCrLf
Code = Code & " Set drawingViews1 = drawingSheet1.Views" & vbCrLf
Code = Code & " Set drawingView1 = drawingViews1.Item(""Main View"")" & vbCrLf
Code = Code & " Set drawingTables1 = drawingView1.Tables" & vbCrLf
Code = Code & " Set nomenclature = drawingTables1.Item(1)" & vbCrLf
'--Code = Code & " nomenclature.ComputeMode = CatTableComputeOFF" & vbCrLf
Code = Code & "'---- determine nom de ligne de la nomenclature" & vbCrLf
Code = Code & " Dim l, lignes As Long" & vbCrLf
Code = Code & " l = 1" & vbCrLf
Code = Code & " While Cells(l, 1) <> ""N°Plan""" & vbCrLf
Code = Code & " l = l + 1" & vbCrLf
Code = Code & " if l>150 then" & vbCrLf
Code = Code & " MsgBox (""case 'N°Plan' non trouvée"")" & vbCrLf
Code = Code & " Exit Sub" & vbCrLf
Code = Code & " end if" & vbCrLf
Code = Code & " Wend" & vbCrLf
Code = Code & "'---- lit taille de la nomenclature existante" & vbCrLf
Code = Code & " lignes = nomenclature.NumberOfRows" & vbCrLf
Code = Code & "'---- redimentionna la nomenclature Catia" & vbCrLf
Code = Code & " If lignes < l Then" & vbCrLf
Code = Code & " lignes = l - lignes" & vbCrLf
Code = Code & " For t = 1 To lignes" & vbCrLf
Code = Code & " nomenclature.AddRow 0" & vbCrLf
Code = Code & " nomenclature.Y = nomenclature.Y + 7" & vbCrLf
Code = Code & " Next" & vbCrLf
Code = Code & " Else" & vbCrLf
Code = Code & " lignes = lignes - l" & vbCrLf
Code = Code & " For t = 1 To lignes" & vbCrLf
Code = Code & " nomenclature.RemoveRow 0" & vbCrLf
Code = Code & " nomenclature.Y = nomenclature.Y - 7" & vbCrLf
Code = Code & " Next" & vbCrLf
Code = Code & " End If" & vbCrLf
Code = Code & "'---- passage excel -> Catia" & vbCrLf
Code = Code & " For ligne = 1 To l" & vbCrLf
Code = Code & " For colonne = 1 To 5" & vbCrLf
Code = Code & " nomenclature.SetCellString ligne, colonne, Cells(ligne, colonne)" & vbCrLf
Code = Code & " Next" & vbCrLf
Code = Code & " Next" & vbCrLf
'---Code = Code & " nomenclature.ComputeMode = CatTableComputeON" & vbCrLf
Code = Code & " thisworkbook.Close SaveChanges:=False" & vbCrLf
Code = Code & " End If" & vbCrLf
Code = Code & "End Sub" & vbCrLf
'---- add macro at the end of the sheet module
With wbks.VBProject.VBComponents(wbk.Name).CodeModule
.insertlines .CountOfLines + 1, Code
End With
nomenclature.ComputeMode = CatTableComputeON
End Sub
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Section programmation CatScript, VBA, VB.NET...
Ho Ho Ho...
J'ai pas de temps en ce moment pour m'y pencher dessus, mais j'y jeterai un oeil Guss. Ca m'a l'air tout bon pour mes ptits plans ça !
Merci pour ton travail !
J'ai pas de temps en ce moment pour m'y pencher dessus, mais j'y jeterai un oeil Guss. Ca m'a l'air tout bon pour mes ptits plans ça !
Merci pour ton travail !
Threedots- Fédérateur
- Messages : 617
Date d'inscription : 16/09/2010
Age : 36
Localisation : Toulouse
Re: Section programmation CatScript, VBA, VB.NET...
ça évite de passer par les objet OLE et d'être limité à une 50aine de ligne lors de l'importation d'un tableau Excel
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Section programmation CatScript, VBA, VB.NET...
Ouah merci du partage Guss!!
Je teste ca dés que j'ai 5 minutes
Je teste ca dés que j'ai 5 minutes
gautier2305- Fédérateur
- Messages : 412
Date d'inscription : 02/09/2010
Age : 38
Localisation : Carvin(62)
Re: Section programmation CatScript, VBA, VB.NET...
De rien j'ai vu plusieurs fois ce genre de soucis avec d'autre qui répondaient qu'ils avaient un script qu'il ne voulaient pas partager.
Donc s'ils avaient été capable de le faire, pourquoi pas moi
Donc s'ils avaient été capable de le faire, pourquoi pas moi
Guss_- Admin
- Messages : 530
Date d'inscription : 08/01/2010
Re: Section programmation CatScript, VBA, VB.NET...
Quelqu'un connait il le module knowledge expert ? car j'ai besoin d'explication, en effet, je voudrais créer une règle qui ressemblerai à :
en CATscript
if Longueur.1 <= Longueur.2
time =1s
en VBScript
if Longueur.1< Longueur.2 then
time =1s
end if
if longueur.1=Longueur.2 then
time =1s
end if
avec Longueur 1 et 2, 2 paramètres en mm
et time un paramètre en seconde
en CATscript
if Longueur.1 <= Longueur.2
time =1s
en VBScript
if Longueur.1< Longueur.2 then
time =1s
end if
if longueur.1=Longueur.2 then
time =1s
end if
avec Longueur 1 et 2, 2 paramètres en mm
et time un paramètre en seconde
flo- Fédérateur
- Messages : 455
Date d'inscription : 21/01/2011
Age : 34
Localisation : Angers
Re: Section programmation CatScript, VBA, VB.NET...
C’est l’atelier Knowlegde Advisor qu’il faut que tu utilises.
Voici la formule en CatScript :
If Longueur_1 <= Longueur_2
Time_1 =10s
Tu as testé les lignes que tu avais mis?car ca me semble relativement similaire. A mon avis ca devait marcher
Voici la formule en CatScript :
If Longueur_1 <= Longueur_2
Time_1 =10s
Tu as testé les lignes que tu avais mis?car ca me semble relativement similaire. A mon avis ca devait marcher
gautier2305- Fédérateur
- Messages : 412
Date d'inscription : 02/09/2010
Age : 38
Localisation : Carvin(62)
Re: Section programmation CatScript, VBA, VB.NET...
Oui je connais ce module, mais le problème est que je ne peut pas l'utiliser car il n'est pas installé, en effet, j'utilise LMS Virtual.lab (logiciel de simulation dynamique compatible avec catia : certain module sont identique) mais je n'ai accès qu'à Knowledge expert et non advisor. Mais Expert est bien plus compliqué à utiliser.
flo- Fédérateur
- Messages : 455
Date d'inscription : 21/01/2011
Age : 34
Localisation : Angers
Re: Section programmation CatScript, VBA, VB.NET...
Salut à tous !
j'ai besoin d'un petit coup de pouce pour du vbscript (en effet je gère assez bien vba mais je bloque en vbscript !)
En fait j'ai réalisé une pièce paramétrée à partir d'un fichier Excel et j'ai besoin de récupérer la valeur de ce parametre pour enregistrer mon fichier
Concrétement
j'ai un arbre principal nommé "Parameters", un sous-arbre nommé "Dimensions" qui contient plusieurs paramètres donc "PartNumber"
PartNumber est le nom de ma pièce (EX: moteur_V8)
je voudrais créer une petite macro qui me permette de renommer mon Part1.CATPart en PartNumber.CATPart, est-ce possible ?
(de récupérer la valeur d'un paramètre)
Merci bien
j'ai besoin d'un petit coup de pouce pour du vbscript (en effet je gère assez bien vba mais je bloque en vbscript !)
En fait j'ai réalisé une pièce paramétrée à partir d'un fichier Excel et j'ai besoin de récupérer la valeur de ce parametre pour enregistrer mon fichier
Concrétement
j'ai un arbre principal nommé "Parameters", un sous-arbre nommé "Dimensions" qui contient plusieurs paramètres donc "PartNumber"
PartNumber est le nom de ma pièce (EX: moteur_V8)
je voudrais créer une petite macro qui me permette de renommer mon Part1.CATPart en PartNumber.CATPart, est-ce possible ?
(de récupérer la valeur d'un paramètre)
Merci bien
rouday- timide
- Messages : 2
Date d'inscription : 03/02/2011
Page 4 sur 5 • 1, 2, 3, 4, 5
Sujets similaires
» Programmation avec CATScript
» Importation outil - catscript
» programmation sous catia v5 récupération de données
» Comment se former a la programmation de macro VBA pour CATIA
» Création de point sur segment de harnais sélectionné avec option extrémité en CATSCRIPT.
» Importation outil - catscript
» programmation sous catia v5 récupération de données
» Comment se former a la programmation de macro VBA pour CATIA
» Création de point sur segment de harnais sélectionné avec option extrémité en CATSCRIPT.
Page 4 sur 5
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum