Macro assemblage simplifié sans visseries

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 »

Oui @remrem j'ai vu ça entre temps, j'avais la 2019 je vient de la désinstaller et d'installer la 2015 et cela fonctionne parfaitement maintenant, j'arrive à éditer depuis Solidworks et donc à débugger.

Pour les changements souhaités comme évoqué dans mon message précédent:

- Création de la configuration si et seulement si certain composant IsToolboxStandard sont présent et si la propriété "Categorie" de l'assemblage est "Assemblage"

- Traiter l'assemblage ouvert et tout les sous-assemblage concerné (suivant critères ci-dessus)

- Modifier toute les configs de sous assemblage par la config simplifié "Fastener enabled" uniquement dans la config simplifié de l'assemblage principale "Fastener enabled", mais pas dans la config par defaut qui doit rester tel quel.

Je commence à découvrir les macros via Visual Studio et cela me semble très prometteur, même si je comprends pas encore l'intégralité!

Pour le point 2 je vient de voir que j'ai une erreur: La classe n’a pas de licence d’utilisation.

Peut-être que je n'ai pas collé la bonne clé?

Peut-on la modifier?

Que faut-il coller dans l'email reçu une clé de cette forme (changé les N° par des 0 pour confidentialité):

swdocmgr_general-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-0,swdocmgr_previews-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-0,swdocmgr_dimxpert-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-0,swdocmgr_geometry-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-0,swdocmgr_xml-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-0,swdocmgr_tessellation-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-0

 

Pour ma part j'ai collé ceci:

swdocmgr_general-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-0

J'ai fait en sorte que la macro stocke ses paramètres dans un fichier Xml situé dans ce dossier : C:\Users\NomUtilisateur\AppData\Local\Suppression_visserie

Le fichier est composé comme suit :

<?xml version="1.0" encoding="utf-8"?>
<Parametres xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Version>1.0.0.0</Version>
  <DocMgrLicence>NomEntreprise:swdocmgr_general-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-000000-00000-000,swdocmgr_xml-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-00000-000</DocMgrLicence>
</Parametres>