Fonction avec ModelDoc en argument

vos questions concernant les API SolidWorks

Fonction avec ModelDoc en argument

Messagepar Projeteur » Mar 07 Nov 2017, 15:18

Bonjour à tous,

J'avais mis au point une macro pour lister les propriétés de pièces.
En fonction de la sélection en cours et du type de fichier actif les propriétés lues peuvent être variables. je m'explique :

DANS UN ASSEMBLAGE :
- Si aucun aucun composant (pièce ou assemblage) n'est sélectionné : Le programme traite les propriétés de l'assemblage maître.
- Si un composant (pièce ou assemblage) est sélectionné : Le programme traite les propriétés de l'assemblage.
- Si plusieurs composants sont sélectionnés : Le programme demande de ne sélectionné qu'un seul composant.

DANS UN FICHIER PIECE OU MISE EN PLAN :
- Bon la on a pas le choix, le programme traite les propriétés du fichier pièce.

L'objectif est de pouvoir édite rapidement les propriétés de pièces dans l'assemblage sans avoir a ouvrir/modifier/enregistrer/fermer les pièces.

Pour cela j'ai un code qui fonctionne :

Code: Tout sélectionner
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

retVal = swModel.GetType()

If retVal = 1 Then 'PIECE
    Set swModel = swApp.ActiveDoc
End If

If retVal = 2 Then 'ASSEMBLAGE
    Set swSelMgr = swModel.SelectionManager
    nselcount = swSelMgr.GetSelectedObjectCount2(-1)
    If nselcount = 0 Then
        Set swModel = swApp.ActiveDoc
    End If
    If nselcount > 1 Then
        MsgBox "Veuillez sélectionner la pièce sur laquelle appliquer les propriétés"
        GoTo fin
    End If
    If nselcount = 1 Then
        Set swComp = swSelMgr.GetSelectedObjectsComponent2(1)
        Set swModel = swComp.GetModelDoc
    End If
End If

If retVal = 3 Then 'MISE EN PLAN
    Set swModel = swApp.ActiveDoc
End If

fin:


Ce code fonctionne parfaitement mais le hic, c'est que je dois insérer ce bout de code dans chaque procédure pour laquelle j'ai besoin de connaitre le composant sélectionné. Et puis aussi parce que c'est plus "classe" d'tuiliser une fonction spécifique qui me renverrait le modeldoc.

J'ai donc écrit ce code :
Code: Tout sélectionner

Private Sub CommandButton1_Click()
   Dim swApp As SldWorks.SldWorks
   Dim swModelDoc As SldWorks.ModelDoc2
   Dim swModel As SldWorks.ModelDoc2
   Set swApp = Application.SldWorks
   Set swModel = swApp.ActiveDoc
   RécupModelDoc = GetSelectedDoc(swApp.ActiveDoc)
End Sub

Function GetSelectedDoc(swModel As ModelDoc2)
   Dim swApp As SldWorks.SldWorks
   Dim swModelDoc As SldWorks.ModelDoc2
   Set swApp = Application.SldWorks
   Set swModel = swApp.ActiveDoc
   retVal = swModel.GetType()

   If retVal = 1 Then 'PIECE
       Set swModel = swApp.ActiveDoc
   End If
   If retVal = 2 Then 'ASSEMBLAGE
       Set swSelMgr = swModel.SelectionManager
       nselcount = swSelMgr.GetSelectedObjectCount2(-1)
       If nselcount = 0 Then
           Set swModel = swApp.ActiveDoc
       End If
       If nselcount > 1 Then
           MsgBox "Veuillez sélectionner la pièce à laquelle appliquer les propriétés"
           GoTo fin
       End If
       If nselcount = 1 Then
           Set swComp = swSelMgr.GetSelectedObjectsComponent2(1)
           Set swModel = swComp.GetModelDoc
       End If
   End If
   If retVal = 3 Then 'MISE EN PLAN   
       Set swModel = swApp.ActiveDoc
   End If
fin:

GetSelectedDoc = swModel
End Function


Mais ca ne fonctionne pas j'ai une erreur "Code 438 - Propriété non-gérée par cette objet." sur la dernière ligne de la fonction.

Est-ce que quelqu'un pourrait m'aider dans cette fonction svp

Merci.
Projeteur
Ewok SolidWorks
 
Messages: 1
Inscription: Mar 07 Nov 2017, 14:23

Re: Fonction avec ModelDoc en argument

Messagepar MarcS » Mar 14 Nov 2017, 22:34

4 Corrections à faire , voir image attaché
Fichiers joints
MACRO.JPG
MACRO.JPG (75.33 Kio) Vu 122 fois

Si je te donne un poisson tu pourras manger Aujourd’hui
mais si je t’apprend a pêcher tu pourras manger toute ta vie !!!
Salut !

Marc S.
Avatar de l’utilisateur
MarcS
Chevalier Jedi SolidWorks
 
Messages: 311
Inscription: Mar 06 Jan 2009, 20:10
Localisation: Quebec, Quebec SolidWorks 2017 SP 1.0 & SolidWorks 2014 SP 2.0


Retourner vers Questions générales sur les API

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités

banniere