Bonjour,
Etant malheureusement très déçu de la stabilité/fiabilité des outils MyCADtools dans un environnement PDM sur de gros assemblage avec en + beaucoup de référence externe,
Je développe en ce moment une applicaiton Python épaullée de plein de macro VBA qui utilise l'API solidworks.
Je viens donc vers vous aujourd'hui pour avoir le ressentit des programmeurs sur la stabilité et la fiabilité de ces outils.
Par cela j'entend: Cela a t-il tendance à faire planter/freezer SW ? Cela fait-il souvent planter les appli standalone ?
Quand on lance un traitement sur un gros paquet de pièce, y a t-il des chances pour que certaines ne soient pas prise en compte ?
En effet, je ne sais pas comment sont programmés les outils MyCAD, mais force est de constater qu'ils vont rarement au bout de leur tâche, et que quand ils sont arrivé au bout sans crasher, une partie des pièces est souvent passée à la trappe.
J'ai donc commencé à coder une simple marco excel qui ouvre les fichiers un par un dont le PATH se trouve dans une colone.
Je constate que j'obtient un comportement aléatoire là aussi.
Pensez vous que cela soit du un un problème de programmation de mon propre code, ou alors l'API SW n'est nativement pas fiable du tout ??
Je suis novice en VB et API sw mais je programme déjà dans bcp de languages différents...
Merci pour votre réponse
Le code ci dessous:
Sub Ouvrir_un_par_un()
'Déclaration des variables :
Dim nb_de_ligne As Integer 'nombre de lignes du document
Dim increment As Integer 'incrément de 1 pour effectuer la boucle de recherche ligne par ligne
Dim myCell As String 'variable pointant sur la cellule en cours
Dim path_complete As String 'chemin complet de la pièce
Dim myBool As Boolean
Dim swApp As ISldWorks
Dim swModel As ModelDoc2
Dim nDocType As Integer
Dim myErrors As Long
Dim myWarnings As Long
'Initialisation de certaines variables:
nb_de_ligne = Range("A1").End(xlDown).Row - 1
If MsgBox("Vous vous apprêtez à ouvrir : " & nb_de_ligne & " fichiers à la chaine !" & Chr(13) & "Commencer ?", vbYesNo, "Demande de confirmation") = vbYes Then
'Déduction du type de fichier avec l'exension:
If swApp Is Nothing Then
Set swApp = CreateObject("SLDWORKS.application")
swApp.Visible = True
MsgBox ("Solidworks n'était pas ouvert, on vient de le lancer, appuyer sur OK quand il à l'air d'être prêt")
Else
Set swApp = Application.SldWorks
End If
'Boucle sur toutes les pièces:
For increment = 1 To nb_de_ligne
Set swModel = Nothing
nDocType = 0
myCell = "A" & (increment + 1)
path_complete = Range(myCell).value
If MsgBox("Voullez vous vérifier le fichier : " & Chr(13) & path_complete, vbYesNo, "Ouvrir ce fichier dans SW ?") = vbYes Then
' Determine type of SOLIDWORKS file based on file extension
If InStr(LCase(path_complete), "sldprt") > 0 Then
nDocType = swDocPART
ElseIf InStr(LCase(path_complete), "sldasm") > 0 Then
nDocType = swDocASSEMBLY
ElseIf InStr(LCase(path_complete), "slddrw") > 0 Then
nDocType = swDocDRAWING
Else
' Probably not a SOLIDWORKS file
nDocType = swDocNONE
' So cannot open the file
Exit Sub
End If
Set swModel = swApp.OpenDoc6(path_complete, nDocType, 1, "", myErrors, myWarnings)
' Comment utiliser OpenDoc7 ??
'swModel.ViewZoomtofit2 ' Bug souvent, pourquoi ?
End If
Next increment
End If
'Set swApp = Nothing
End Sub