Récupération masse via Document Manager

Bonjour à tous :slight_smile:

Etant donné la réactivité de tout le monde sur ce forum j’en profite pour poser une question et ne pas rester bloquer des heures …
J’essaye actuellement de récupérer la masse des pièces via le Document Manager mais je rencontre un léger souci !
Pour pouvoir expliquer un peu plus en détail, voici le code :

Const key As String = "CLEF_DOCUMENT_MANAGER"

Dim swDmClassFactory As SwDocumentMgr.swDmClassFactory
Dim swDmApp As SwDocumentMgr.SwDMApplication

Dim docType As SwDmDocumentType
Dim FilePath As String
Dim allowReadOnly As Boolean
Dim result As SwDmDocumentOpenError
Dim DocProp As SwDMDocument
Dim Config As SwDMConfiguration
Dim GestConfig As SwDMConfigurationMgr
Dim bret As SwDmMassPropError

Sub Test()

Set swDmClassFactory = CreateObject("SwDocumentMgr.SwDMClassFactory")

    If Not swDmClassFactory Is Nothing Then

        Set swDmApp = swDmClassFactory.GetApplication(key)
        FilePath = "CHEMIN_PRT"

                Set DocProp = swDmApp.GetDocument(FilePath, swDmDocumentPart, False, result)
                Set GestConfig = DocProp.ConfigurationManager
                Set Config=GestConfig.GetConfigurationByName(GestConfig.GetActiveConfigurationName)

                valeurs = Config.GetMassProperties(bret)
                Debug.Print "Masse : " & valeurs(5)
                DocProp.CloseDoc


    Else
        MsgBox "Erreur"
    End If


End Sub

Le problème est le suivant : pour certaines pièces (sans que j’arrive à trouver de points communs entre celles qui ne marchent pas) le array ‹ valeurs › est rempli de 0 alors que je n’ai aucune erreur sur les valeurs de ‹ result › et ‹ bret ›. Et quand j’ouvre le document sur SW et que je regarde la masse elle n’est pas nulle, donc je ne comprends pas d’où vient le problème :confused:
Je précise que j’ai bien vérifié que la version de la pièce est également correcte comme indiqué dans l’aide de l’API : GetMassProperties Method (ISwDMConfiguration) - 2022 - SOLIDWORKS API Help

Quelqu’un aurait-il une piste à tout hasard?

Merci d’avance :smiley:

Au niveau des configurations ?

Je cherche à récupérer la masse de la pièce et avec le document manager je ne crois pas qu’il y ait d’autres manières que de passer par la configuration de la pièce en question effectivement.

Bonjour ;

Quelque pistes ici:

le programme est en c# mais je pense qu’il n’est pas trop difficile de le convertir en VB…

Sinon ici:

(voir la note en bas de page pour les calculs des masses).

Cordialement.

3 Likes

Bonjour;

Après quelques recherches, il semble que la récupération des masses sur des configurations soit conditionnée par la reconstruction des composants.
Malheureusement « Document Manager » ne semble pas pouvoir le faire, je parle de « reconstruire les 3D » avec Solidworks ou, peut-être, d’attribuer des Masses fixes sur vos composants mais ce n’est pas très saint…

Cordialement.

Merci pour ton retour @Maclane !
Je me suis déjà basé sur ces lignes de code déjà ahaha :slight_smile: CodeStack est une bonne référence quand l’on cherche a faire des macros sur SolidWorks !

Concernant ton message juste plus bas, où a tu trouver trouver cette info concernant la reconstruction des 3D ? car j’ai essayé sur les fichiers problématiques en questions de les reconstruire puis re tenter de récupérer la masse via le document manager mais toujours pareil…

1 Like

Bonjour;

J’ai glané ces info sur le forum officiel de Solidworks (3Dexperience) avec en filtre « SWDM » (pour Solidworks Document Manager).

2 Likes