Utilisation du cube de visualisation dans un assemblage

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 !