Bonjour,
Je ne vois aucune raison pour laquelle cette macro te fait planter SW, toutes les fonctions utilisées sont antérieures à SW2018. Mets des MsgBox numérotés entre chaque étape pour voir à quelle fonction il plante ...
Cordialement,
Bonjour,
Je ne vois aucune raison pour laquelle cette macro te fait planter SW, toutes les fonctions utilisées sont antérieures à SW2018. Mets des MsgBox numérotés entre chaque étape pour voir à quelle fonction il plante ...
Cordialement,
Bonjour,
Voici la ligne qui fait planter Solidworks:
bRet = swModel.Save3(swSaveAsOptions_Silent, swErrors, swWarnings)
Bonjour,
Pour rappel, les macros données ici ne le sont qu'à titre d'exemple et doivent être retravaillées pour à minima ajouter la gestion des erreurs ...
Il te faut donc dans la boucle For rajouter cette gestion des erreurs (voir ICI) et remonter, si tu le souhaites, cette erreur dans l'argument swErrors (voir ICI) de la fonction Save3.
Cordialement,
Excuse moi, mais ce n'est pas la ligne que j'ai cité plus haut qui me fait planter Solidworks, je viens de refaire des test et c'est en fin de compte celle ci:
Set BoundingBox = swModel.FeatureManager.InsertGlobalBoundingBox(swGlobalBoundingBoxFitOptions_e.swBoundingBoxType_BestFit, False, False, longstatus)
Pourtant je ne comprend pas car c'est le même code qui fonctionnait dans la macro précèdente.
Et merci pour tes précisions sur Save3, je vais regarder ça.
La réponse est à peu près la même que précédemment : insertion de la gestion des erreurs et relevé du type d'erreur dans la variable longstatus, voir ICI pour le type d'erreur de retour possible.
Bonjour,
J'ai essayer de gérer l'erreur, mais toujours le même problème, c'est a dire Solidworks plante sur la ligne :
Set BoundingBox = swModel.FeatureManager.InsertGlobalBoundingBox(swGlobalBoundingBoxFitOptions_e.swBoundingBoxType_BestFit, False, False, longstatus)
Malgré la gestion d'erreur, Solidworks plante sans ouvrir la msgbox, il y a t il un problème avec le code de ma gestion d'erreur, car la msgbox devrait apparaitre si une erreur est détecté.
Donc il n'y a pas d'erreur détecté, alors qu'est ce qui peut poser problème?
Voici le code avec la gestion d'erreur:
Option Explicit
Dim swApp As Object
Dim longstatus As Long
Dim swModel As SldWorks.ModelDoc2
Dim bRet As Boolean
Dim swErrors As Long
Dim swWarnings As Long
Dim i As Long
Dim Assembly As ModelDoc2
Dim myAssy As AssemblyDoc
Dim myCmps As Variant
Dim myCmp As Component2
Dim nInfo As Long
'Public Enum swGlobalBoundingBoxResult_e
'Inherits System.Enum
Sub main()
Set swApp = Application.SldWorks
Set Assembly = swApp.ActiveDoc
Set myAssy = Assembly
'Dim instance As swGlobalBoundingBoxResult_e
myCmps = myAssy.GetComponents(False)
For i = 0 To UBound(myCmps)
Set myCmp = myCmps(i)
If (myCmp.GetSuppression = 3) Or (myCmp.GetSuppression = 2) Then
bRet = myCmp.Select2(False, 0)
bRet = myAssy.EditPart2(True, True, nInfo)
Set swModel = myAssy.GetEditTarget
On Error GoTo errorHandler
Dim BoundingBox As Object
Set BoundingBox = swModel.FeatureManager.InsertGlobalBoundingBox(swGlobalBoundingBoxFitOptions_e.swBoundingBoxType_BestFit, False, False, longstatus)
bRet = swModel.Save3(swSaveAsOptions_Silent, swErrors, swWarnings)
myAssy.EditAssembly
End If
Next i
Assembly.ForceRebuild3 True
MsgBox "Cubes créés", vbExclamation
Exit Sub
errorHandler:
'indique si l'erreur est detecte
MsgBox "erreur"
End Sub
Bonjour,
Aucun avis sur ma gestion d'erreur est elle correct ou pas du tout?
Merci d'avance
Bonjour @treza88
[HS On]
Petite question par pure curiosité ;-)
A quoi cela te sert d'avoir un cube de visualisation pour une pièce et surtout à quoi cela te sert dans un ASM d'avoir un cube de visualisation pour chaque pièce.
Perso je n'utilise jamais le cube de visualisation.
[HS /Off]
Cordialement
Merci Zoro_mp pour ta question,
Pour moi et c'est peut être idiot c'était le moyen de récupérer les informations de dimensions de mes pièces, c'est a dire longueur, largeur, et épaisseur.
Mais comme cité précédemment c'est peut être idiot il y a peut être d'autres moyens.
Bonjour à tous et merci pour cette Macro !
Je n'arrive pas a modifier le code pour faire ca sur une pièce unique. En fait j'ai une bibliothèque de pièce 3D et je voudrais y mettre un cube de visu sur chaque pièce. Sauf que je suis obligé de le faire un par un. Et via "integration" sur Mycadtools je pourrais utiliser une macro qui ferai le taff.
Donc je voulais savoir si on pouvait modifier cette macro juste pour faire le cube de visu sur une pièce unique
merci de votre aide !