Macro assemblage simplifié sans visseries

Bonjour,

Il y a quelques années on m'avait montré une macro pour simplifié un assemblage.

Cette macro que l'on lançait depuis un assemblage créait une config "Simplified" or "Fastener" (je ne me rappelle plus le nom, dans laquelle toute les vis étaient passé à l'état supprimés (ISfastener=1)

Et même chose dans tout les sous assemblage de l'assemblage principale.

Cela permettait d'avoir une configuration allégé (sans les vis d'un assemblage complexe) afin de pouvoir l'insérer dans mon implantation ensuite.

Quelqu'un a -til sous la main une macro à partager qui s'approche de cette demande?

Sinon je vais être obligé d'essayer de trouver du temps pour la ré écrire, mêm si cela me parait un poil complexe avec mon niveau limiter en codage SW.

Bonjour @sbadenis 

si tu y parviens je serais bien intéressé par une telle macro : soit pour pouvoir simplifié dans Motion, soit simplifier dans Simulation

Cordialement

 

2 « J'aime »

Intéressant.

C'est clair que ça doit être chipouille, vu qu'il faut aussi aller dans les répétitions et supprimer les composants mais pas la répétition.

1 « J'aime »

Il ne s'agirait pas de l'option "defeature" qui permet de simplifier une géométrie? (Defeature - 2022 - Aide de SOLIDWORKS)

1 « J'aime »

@mdelbecq, oui deafeature permet de simplifier un assemblage en créant une copie simplifié en une pièce.

Là le but est de conserver le même assemblage, avec un configuration allégé sans la visserie.

Le but est de faire des implantations avec beaucoup de machine, et en allégeant un peu l'assemblage grâce à cette configuration.

Deafeature à été testé et fonctionne mais il faut la nuit voir plus pour obtenir quelque chose de correct, rapporté à plusieurs machine, cela devient impossible.

D'où la demande de macro.

1 « J'aime »

Bonjour;

Pourquoi ne passeriez-vous pas par les "Sélection intelligentes" ?
-> Sélection avancée de Composant / Définir critères de recherches....
https://help.solidworks.com/2021/french/SolidWorks/sldworks/t_utilities_running_power_select.htm


Avec le Filtre ISfastener=1
C'est plus simple Non ?
D'autant que vous pouvez cumuler plusieurs Filtres, les inverser ou les annuler. (Et les Sauvegarder aussi...)

Cordialement

3 « J'aime »

Bonjour dear @Maclane

cela sous entend que les visseries soient issus de la toolbox.

La plupart du temps je télécharge des vis (souvent en step d'ailleurs ) et j'ai plus que des doutes que SW les reconnaissent comme des vis de rondelles ou des boulons.

Comment déclarer ce type de pièce pour qu'elles soient identifiable par SW comme boulonnerie visserie    ;-)

Je me doute que @sbadenis ne doit pas avoir ce type d'interrogation ;-) ;)

Cordialement

2 « J'aime »

Ta solution @Maclane  fonctionne effectivement très bien quand toute les vis sont dans l'assemblage de tête.

Moi le problème c'est que j'ai des vis dans des un tas de sous assemblages, et je dois conserver ces vis dans la config par défaut pour que les commandes (de vis) soit passé en automatique lors du lancement.

Le seul moyen c'est de faire cette satané macro.

Après pour la macro la solution du filtre est peut-être à envisager.

1 « J'aime »

Salut,

La solution Maclane est interessante.

J'utilise une methoide similaire:
-Je créé une configuration "Light"
-J'utilise la touche "S", puis selection toolbox, je maintiens "Ctrl" + clic droit sur une vis -> Supprimer

Ce la me donne donc 2 config, dont une sans visserie...

A+

1 « J'aime »

@Zozo_mp : pas besoin que la pièce soit issue de la toolbox. Il faut juste qu'elle contienne la propriété ISfastener

J'avais mis ça en place à la création de notre base visserie en 2005 (totalement différente de la Toolbox) et cela fonctionne parfaitement.

Merci @Maclane qui m'a permit de découvrir (ou redécouvrir) cet outil de sélection qui est somme toute ultra puissant.

3 « J'aime »

Merci @froussel je vais regarder ça de près je sent que cela va me faire gagner du temps avec les nouvelles fonctionnalités d'assemblages des vis depuis la SW2020.

Cordialement

Zozo_mp : 2015 pour cette "Nouvelle" fonction (Comme quoi Solidworks ne communique pas très bien sur leurs nouveautées...utiles)
Quand à l'horrible ToolBox (Beurk) je ne m'en sert Jamais (Sauf pour créer des perçages/Taraudages/Lumiéres... utilisables avec l'assistant de perçages).
J'ai créé mes propres bibliothèques personnalisée (avec la propriété IsFastener à 0 ou 1).


-> Pour info : cette Proriété (IsFastener) est celle utilisée pour les sections de mises en plan  ou pour la détection de collision (option : Exclure la boulonnerie).
sbadenis : L'utilisation des Macro semble en effet inévitable pour créer chaque configurations "Allegées" de tout les Sous-Assemblages...
(La fonction VBA est : "PowerSelec" pour la Sélection intelligente mais pour l'instant je n'en sais pas plus -desolé-

Aide Solidworks (API)-> https://help.solidworks.com/...Interop.gtswutilities.IUtilities~PowerSelect.html


Cordialement.

4 « J'aime »

Salut à tous,
J'ai fait une macro qui créé une configuration sans visserie pour l'assemblage et ses sous ensembles.

Pour qu'elle fonctionne il est nécessaire d'utiliser les API Document Manager. Notamment pour lire la propriété invisible "IsToolboxStandard" permettant de définir si la pièce est une visserie. Une licence est demandée au premier lancement. Afin d'obtenir cette licence il faut en faire la demande sur le portail client de SolidWorks, selon la procédure suivante :

To request a SOLIDWORKS Document Manager API license key:

  1. Log into the SOLIDWORKS customer portal.
  2. Click API Support in My Support
  3. Click Document Manager Key Request.
  4. Follow the online instructions to request your license key.

A SOLIDWORKS Document Manager API license key is emailed to you upon approval of your request.  

 

Elle fonctionne avec les composants de la Toolbox et les bibliothèques personnalisés dont les composants possède la propriété "IsToolboxStandard".

Vous pouvez ajouter cette propriété facilement avec l'utilitaire prévu à cet effet : "sldsetdocprop.exe" situé dans le dossier : "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\Toolbox\data utilities"

 

Je vous invite à tester la macro sur des assemblages de test et à me faire vos retours.

Bonne journée.


suppression_visserie.zip
2 « J'aime »

Demande de clé réalisé, plus qu'a attendre l'email.

Par contre je ne connais pas trop le principe pour lancer un projet vb sous cette forme (via Visual Studio)

Pour une macro en vba pas de soucis , je commence à connaître.

Mais sous cette forme, j'avoue avoir installer Visual Studio il y a bien 1 ou 2 ans sans jamais avoir pris trop le temps d'approfondir.

Pour ouvrir le projet pas de soucis, mais comment faire pour lancer le programme? Je pense qu'il me faudra un peu d'aide supplémentaire @remrem  si tu veux bien.

Et si tu as un site d'aide en plus ce serait- top.

Sinon le code me semble pas mal du tout après lecture rapide, plus qu'a attendre ce fameux code!

Tu renseignes le bouton de la macro comme pour un fichier au format .swb sauf que tu choisis le format dll :

Puis tu cliques parcourir et tu change le type en sélectionnant "SW VSTA Macros (*.dll)" et tu choisis le fichier "Suppression_visserie.dll"

3 « J'aime »

Salut,
Cela fonctionne ?

1 « J'aime »

Merci @remrem , je viens seulement de tester après quelques galères pour récupérer la fameuse clé.

Le mail partait en Spam il m'a fallut le faire sur ma boite perso, et attendre quelques jours...

Sinon pour le fonctionnement, maintenant que j'ai pu tester! Cela s'approche fortement de mon besoin, merci pour cette très bonne base.

Les configurations sont bien créer pour l'ensemble des assemblages.

Par contre dans ces configurations, les vis ne sont pas supprimés (même si l'option ISFastener est bien à 1)

De plus je souhaiterais qu'il ne créer la configuration que si l'assemblage contient des vis avec ISFastener=1 et qu'une propriété "Categorie" est "Assemblage".

Dans les sous assemblages la configuration active reste defaut au lieu de Fasteners enabled dans la configuration fasteneres enable de l'assemblage principal.

Je tenterais bien quelques modifications dans le code qui est une très bonne base, pour l'améliorer à ma sauce, mais j'ai toujours développé via des macros VBA (sans passer par les dll) et je ne sais pas comment faire pour débugger si c'est possible via visual studio pour voir là ou ça coince et voir les modifications en direct si cela est possible.

Faut-il obligatoirement compiler le projet pour pour le tester ensuite?

Peut-on exécuter en pas à pas et voir là ou ça coince?

 

 

Attention il y a méprise.
La propriété "IsFastener" ne sert juste qu'a caché les éléments de visserie dans les MEP.
La macro n'utilise pas cette propriété mais comme je l'ai indiqué dans mon précédent post :

Elle fonctionne avec les composants de la Toolbox et les bibliothèques personnalisés dont les composants possède la propriété "IsToolboxStandard".

Vous pouvez ajouter cette propriété facilement avec l'utilitaire prévu à cet effet : "sldsetdocprop.exe" situé dans le dossier : "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\Toolbox\data utilities"

 

La propriété "IsToolboxStandard" est cachée. Elle n'est donc pas visible dans l'éditeur de propriété de SolidWorks. C'est pour cela que j'ai du utiliser la bibliothèque Document Manager.

2 « J'aime »

Effectivement @remrem, il y avait méprise, je vais regarder comment améliorer le projet qui est une très bonne base. Peut-tu si tu as un peu de temps me répondre sur la méthode utilisé pour compiler et débugger les projet via une dll.

Comme tu as joint l'intégralité du projet avec une peu de temps et de travail je devrait finir par réussir à modifier ce  projet pour mon utilité.

Salut sbadenis,

SolidWorks n'est compatible qu'avec Visual Studio 2015. Regarde ici.

Quelles sont les modifications que tu souhaites ?

1 « J'aime »