Macro permettant de fixer les pièces d'un assemblage ainsi que les sous-niveaux

Bonjour,

nous sommes amenés à travailler sur des assemblages extrait de fichier STEP ou IGES.

Par défaut, les pièces, assemblages et sous niveaux sont libres.

Avez vous ou connaissez vous un moyen rapide de fixer l'ensemble des composants de l'assemblage principal.

Merci.

Davy

Salut,

Essaye ceci :

Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAssy As SldWorks.AssemblyDoc
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swComp As SldWorks.Component2
Dim swSelMgr As SldWorks.SelectionMgr
Dim errors As Long
Dim warnings As Long
Dim status As Boolean
Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swAssy = swModel
    Set swModelDocExt = swModel.Extension
    Set swSelMgr = swModel.SelectionManager
    
    ' Resolve all lightweight components
    errors = swAssy.ResolveAllLightWeightComponents(True)
    Debug.Print ("All lightweight components resolved (0 = All components resolved)? " & errors)
    
    ' Fix the selected component
    status = swModelDocExt.SelectByID2("Pad_1-1@key pad_1", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
    swAssy.FixComponent
    status = swModelDocExt.SelectByID2("Pad_1-1@key pad_1", "COMPONENT", 0, 0, 0, False, 0, Nothing, 0)
    Set swComp = swSelMgr.GetSelectedObjectsComponent3(1, -1)
    Debug.Print ("Selected component fixed? " & swComp.IsFixed)
    
End Sub

 

Sources : http://help.solidworks.com/2015/english/api/sldworksapi/resolve_all_components_fix_a_component_example_vb.htm

Edit : Je joins le fichier txt car la présentation est automatiquement supprimée

 

 


macro_resoud_et_fixe_les_composants.txt
2 « J'aime »

Bonjour,

Est-il possible comme document ci-joint, avec clic droit et de "fixer" tous les éléménts!!?


capture.png
1 « J'aime »

Merci remrem, je vais essayer.

Le problème, dessin6, c'est que cette manipulation ne permet pas de fixer les sous niveaux. Mais merci quand même!

Davy

1 « J'aime »

Remrem,

je n'arrive pas a mettre en oeuvre la macro que tu m'as envoyé.

As-tu quelques informations complémentaires à me fournir stp.

Merci.

Bonjour,

Il faut traverser tous les composants de l'assemblage, comme indiqué dans cette macro :

http://help.solidworks.com/2012/english/api/sldworksapi/traverse_assembly_at_component_level_example_vb.htm

Puis les fixer tous comme indiqué dans un de ces deux liens :

http://help.solidworks.com/2014/English/api/sldworksapi/Resolve_All_Components_Fix_A_Component_Example_VB.htm

http://help.solidworks.com/2016/English/api/sldworksapi/Temporarily_Fix_and_Group_Components_Example_VB.htm

 

2 « J'aime »

La, honnêtement, je suis dépassé.

Je n'arrive pas a concilier les exemples que vous proposez avec le cas que je suis en train de traiter.

 

Un collègue a trouvé une macro fonctionnelle cependant, elle est verrouillée et je n'ai pas le mot de passe.

Le principal, c'est qu'elle fonctionne.

Je partage, au cas ou d'autres aurait les mêmes besoins.

Merci à tous pour vos réponses.

@+ sur le forum.

Davy


fixer_ensembles_et_sous_ensembles.swp
3 « J'aime »

Bonjour,

- Le 1er lien permet de lister et travailler sur toutes les pièces d'un assemblage une par une (traverse assembly). Ce serait le premier bout de code à mettre en place dans une macro : il créée la boucle. A première vue, seule le premier sub est à utiliser

- Le 2° lien rejoint celui de @remrem : il contient les commandes pour fixer le composant sur lequel on travaille et la partie "'fix the selected component" à insérer au milieu de la boucle (au niveau du debug.print)

- Le 3° lien doit être une macro réalisant les opérations précédentes mais sous SW2016 : je ne trouve pas la fonction FixGroup sous 2015

 

 

3 « J'aime »

Merci pour cette précison glaffont!

C'est toujours bon à prendre.

Du coup tu n'aurais pas du choisir ma réponse comme la meilleure ! Puisque je n'ai pas fait grand chose du coup.

J'étais en train de bidouiller le code pour la faire fonctionner. Mais tu as répondu avant.

Merci d'avoir mis la macro.

Je vais m'en servir. :-)

2 « J'aime »

Je ne pouvais pas mettre ma réponse contenant la macro comme la solution.

Ta réponse est donc pour moi la plus proche.

De rien pour la macro. Il n'empêche que je serais quand même curieux de pourvoir l'éditer.

1 « J'aime »

Bon en récompense, voici le fichier sans mot de passe.

Du coup cela m'a permi de voir mon erreur.

:-)


fixer_ensembles_et_sous_ensembles.swp
1 « J'aime »

@remrem, Merci!

C'est ta macro? Ou bien tu as trouvé le mdp...

Il faut savoir que le mot de passe d'une macro n'est pas une protection très efficace.

On peut annuler la protection avec un simple lecteur héxadécimal.

4 « J'aime »

Super ! Merci remrem!

En revanche, impossible de la télécharger.

Bonjour @davy,

Il y a un bug sur Lynkoa qui fait que lorsque l'on télécharge la pièce jointe d'une réponse, il faut ressaisir l'extension du fichier à la place de ".htm" comme proposé dans la boîte de dialogue. Dans votre cas, il faut écrire ".swp" pour le dernier fichier de @remrem.

Il y a des chances que votre souci de téléchargement vienne de là.

(à signaler aussi, mais je pense que vous le savez, que les fichiers .swp ne se lancent pas directement depuis un explorateur, il faut aller dans Outils/Macro/Exécuter)

1 « J'aime »

Je ne rencontre pas de soucis.

J'utilise Firefox et W7.

1 « J'aime »

Merci pour l'information Benoit!