[SolidWorks] Macro de filtre (VBA)

Bonjour,

 

j'aimerais créer une macro de filtre (Dans mon entreprise, tous les assemblages sont composés sur le même modèle). J'aimerais donc pouvoir créer une macro qui cache tout et affiche seulement certaines pièces (En fonction du NOM du fichier).

Egalement une macro qui réafficherais tout ..

 

En vous remerciant.

 

[edit] Le problème surtout est de "parser" tous les composants dans l'assemblage .. Y a t'il un moyen de le faire dans une boucle for ?

Bonjour,

Si vous possédez les utilitaires Mycadtools il y a l'application TreeManager qui pourrait bien t'aider à faire cela.

Bonne journée.

1 « J'aime »

Merci,

 

Je ne pourrai malheureusement pas avoir accès au utilitaires MyCadTools.

Il faudrait vraiment donc que je puisse le faire avec une macro, et comme je l'ai dit le gros soucis est actuellement de prendre tous les éléments dans un assemblages.

Bonjour, dans les tutoriels que j'ai postés sur Lynkoa, il y a un ou deux exemples pour traverser tous les composants d'un assemblage. Sinon, pour filtrer, voir du côté de la sélection avancée de SolidWorks.
1 « J'aime »

Bonjour, merci.

Pourriez-vous me donner un lien d'un de vos tutoriels ou vous parlez de cela ?

C'est vrai que c'est impossible de trouver les tutoriels faits par une personne, désolé. Je parlais de ce tutoriel mais en fait il concerne toutes les configurations d'un assemblage :

http://www.lynkoa.com/tutos/solidworks/macro-pour-toutes-les-configurations-d-un-assemblage-pour-activer-l-option-“promouv Je cherche la macro que j'ai faire mais qui n'es pas sur Lynkoa.

1 « J'aime »

J'ai trouvé quelque chose sur internet qui me permet de parcourir les composants d'un assemblages, le problème est que je n'arrive pas les masqué. Pourquoi ?

 

Sub main()
    Dim swModel As ModelDoc2
   
    Dim vComps As Variant
    Dim swComp As SldWorks.Component2
    Dim swAssy As SldWorks.AssemblyDoc
    Dim i As Integer
   
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
   
    If swModel.GetType = swDocASSEMBLY Then
        Set swAssy = swModel
        vComps = swAssy.GetComponents(False)
        For i = 0 To UBound(vComps)
            Set swComp = vComps(i)
            Set swModel = swComp.GetModelDoc2
            Debug.Print swModel.GetTitle
            swModel.HideComponent2 'Ne fonctionne pas...
            swModel.ClearSelection2 True
        Next i
    End If
End Sub

 

[edit]

J'ai trouvé le moyen de reprendre l'ID avec:

            Debug.Print swComp.GetSelectByIDString
            boolstatus = Part.Extension.SelectByID2(swComp.GetSelectByIDString, "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
            Part.HideComponent2

 

Donc pour le moment je pense que mon problème devrait être résolu. Je vais encore un peu attendre avec de le mettre en résolu. Merci !

1 « J'aime »

En effet, comme indiqué dans le lien ci-dessous il faut sélectionner le composant avec HideComponent2 , ou sinon ils proposent une autre méthode avec la visibilité (visibility) :

https://books.google.fr/books?id=ftVsBgAAQBAJ&pg=PA39&lpg=PA39&dq=HideComponent2&source=bl&ots=11v9gfMep9&sig=Kdp-G1le6iPqcbxSFNSueTQXQs4&hl=fr&sa=X&ved=0CCwQ6AEwAmoVChMI-6DIiZuyxwIVAr0aCh3dXQmW#v=onepage&q=HideComponent2&f=false

 

1 « J'aime »

Merci à vous, je considère donc le problème comme résolu.