Ouverture userform à la création d'une nouvelle pièce

Bonjour à tous,

Je cherche le moyen d’ouvrir un userform à la l’ouverture d’un nouveau fichier pièce.

Un peu comme dans Excel avec WorkbookOpen(), mais je ne vois pas quelque chose qui ressemblerait à partOpen().

Quelqu’un aurait une idée

Bonjour,

Ce sujet en traite par contre la contrainte est que ça ne s’appliquera qu’aux nouveaux fichiers.
Run VBA macro on model load using macro feature and SOLIDWORKS API (codestack.net)
Une autre méthode serait de jouer avec les événements SW pour capturer les informations d’ouverture de fichier mais pour ça il faut modifier l’exécutable de lancement de SW pour avoir une macro qui se lance en tâche de fond

2 « J'aime »

Merci @Cyril.f , oui c’est exactement ce que je veux, que ça s"exécute uniquement à la création d’un nouveau fichier pour forcer le dessinateur à choisir un matériau prédéfinit dans un combobox du userform.

Ce qui fait que l’on en a besoin qu’a la création de la nouvelle pièce.

Je vais l’étudier, mais le code à première vue à l’air assez hard !!

Il y a peut-être moyen de faire un poil plus simple que le code proposé par Codestack, je regarde ça car j’ai déjà des codes qui utilisent les événements SW mais je ne le gère pas pour le moment au lancement direct de SW (je lance SW et une macro depuis Excel)

Merci c’est sympa de me donner un coup de main sur ce sujet un peu spécifique.

En attendant je vais regarder le code de Codestack.

Je ne comprends pas comment créer une macro Feature, apparemment il faut ouvrir une esquisse dans le modèle.
Mais je vois pas ce qu’il faut faire après.

EDIT : Désolé, j’aurais du regarder la vidéo !!!

Après plusieurs essai, le code de Codestack ne fonctionne pas pour mon usage.

La macro s’exécute avant que le fichier soit ouvert et donc je ne peux pas modifier la matière puis que le dossier du feature manager n’est pas actif.

Une autre idée pour résoudre mon problème ?

Bonjour @treza88

Je ne vais pas répondre à la question mais un peu plus au problème. Une alternative pourrait le régler différemment ;
La création de modèles de document pour les nouveaux documents. Avec un modèle pour chaque matériau, et en supprimant le modèle par défaut d’origine puisqu’il est question de forcer le choix du dessinateur, il ne pourra ouvrir que de nouveaux documents avec l’un des modèles prédéfinis, donc qu’avec l’un des matériaux prédéfinis. Et ce, directement depuis la fenêtre d’ouverture SW.

2 « J'aime »

Bonjour et merci @Sylk,

Le problème et que ça me ferait une trentaine de modèle au moins, car ma matière définit le type de matière mais également l’épaisseur de ma tôle, du type « Inox_2.0 ».

Ce qui me permet de récupérer ces infos pour mes exportation DXF.

Par contre j’ai une solution qui me convient et qui est assez simpliste, c’est de créer une macro qui crée une nouvelle pièce et après la création ouvre mon userform.

Ou plutôt dans cet ordre : Une macro qui ouvre la userform puis crée une nouvelle pièce avec les options choisies dans la userform.

1 « J'aime »

En gros, ce que je ferais, a priori, c’est :

  • créer la macro qui doit être exécutée à la création d’un nouveau doc,
  • créer un nouveau doc, qui servira de modèle de nouveau document,
  • ajouter un appel de macro aux équations de ce doc (pour lancer la macro à la création d’un nouveau doc), enregistrer le doc.
  • ajouter en fin de macro, une suppression de l’équation (pour ne l’exécuter que la 1ere fois), enregistrer la macro.
  • ajouter ce doc comme modèle de nouveau document, et le définir par défaut,
  • retirer le modèle original par défaut de la liste des modèles (pour imposer le modèle macro).

PS: en cas de paramètres incorrects ou de fermeture (cancel) de la userform/macro, une fermeture du doc « en création » sans le sauvegarder me semble nécessaire pour éviter les docs sans configuration viable.

Bonjour,
Le problème des macros qui ne se lancent pas de manière autonome c’est que ça reste dépendant de l’utilisateur (j’en ai quelques unes bien utiles que les utilisateurs n’utilisent pas et qui de temps en temps leur éviterait de rencontrer quelques problèmes sur leurs fichiers).
Donc le fait d’avoir une macro feature aurait pu être la solution mais le problème reste que celle-ci doit être dans tous les modèles de documents.
Le plus « simple » pour forcer l’utilisation c’est de lancer une macro à l’ouverture de SW qui intercepte les événements SW et permettrait ainsi de paramétrer le comportement que l’on souhaite.
Ceci étant, cette solution impose de modifier la façon de lancer SW en ajoutant des arguments à la ligne de commande ouvrant SW afin qu’il lance la macro à l’ouverture et un code bien robuste pour palier à tous les cas de figures que l’on pourrait rencontrer.

Peut-être plus facile à gérer et moins contraignant pour l’utilisateur (dès fois on a besoin d’une pièce pour poser une idée) : vérifier à l’enregistrement que le matériaux est dans la liste et si nécessaire ouvrir le userform.

1 « J'aime »

Avec un add-in on peut intercepter les évènements Solidworks, il suffit de l’installer sur tous les postes.

1 « J'aime »

Perso je trouve étonnant d’incorporer l’épaisseur dans la matière.
Il existe d’autre moyen de récupérer cette épaisseur automatiquement. (tout comme la matière)
Exemple note dans la pièce puis la MEP:
Dans la pièce:
« Epaisseur@Pièce1.SLDPRT »
Dans la MEP:
Ep $PRPSHEET:« Epaisseur » mm
Le résultat:


Et il serait même possible de mettre à suivre la matière et l’épaisseur dans le cartouche sans avoir à modifier la matière

2 « J'aime »

=> Gros soupir … cela dit je me sent moins seul tout à coup…

Pour répondre à la question de @treza88 :
je suis globalement opposé aux « Macro Feature » c’est souvent lourd (pour le poids du fichier), elles sont compliquées à partager (surtout avec des externes n’ayant pas la même version de Solidworks ou tout simplement des restrictions d’administrations sur leur poste)…
Pour éviter tout cela, selon la version Solidworks que vous utilisez (A partir de Solidworks 2019):
regardez du coté de l’onglet « Tôlerie » lors de l’édition des matériaux…je pense que cela répond à votre demande:

https://help.solidworks.com/2022/french/Solidworks/sldworks/t_material_db_sheet_metal_tab.htm?rid=183648

Bon je m’avance peut-être un peu puisque , comme vous le voyez, je ne m’en sert pas…(Solidworks 2022).

2 « J'aime »

@treza88 … Je ne suis pas du tout opposé à la multiplication des sources d’informations (bien au contraire), seulement il serait fair-play de poster les résultats (en cas de résolution ) sur les différents forums où vous avez fait vos demandes: :wink:

Ci dessous copie d’écran du forum Solidworks


Cordialement.

3 « J'aime »

La réponse du forum SW ne résout pas le problème de « c’est dépendant de l’utilisateur ».
Créer une macro qui lance un userform et la création d’un fichier c’est basique mais encore faut il que les utilisateurs daignent cliquer sur l’icône.

1 « J'aime »

@Cyril.f , exactement la remarque que je me faisais.

La solution proposé par @sbadenis me parait être intéressante (au delà du fait que le dessin semble être un grand majeur :rofl:)

Perso, c’est que nous utlisons. Lorsque la matière n’est pas renseignée, Sldw nous insulte sur la mise en plan, ce qui alerte l’œil

image

Tu peux, en plus, agrémenter de repères visuels. Tous ce qui doit être vérifier par l’utilisateur est mis en rouge par défault dans ton fichier natif. Et l’utilisateur les passes en noir pour valider le fait d’avoir vérifier.

3 « J'aime »

On a beau avoir mis des éléments en rouge et gras ça saute aux yeux de personne. Je dois avoir des aveugles dans mes utilisateurs :smiley:

[HS On] La seule fois où l’on a eu un résultat c’est sur des fichiers de notre PDM qui sont dans un dossier corbeille, quand les assemblages pointent dessus on avait remplacé le 3D par un texte extrudé du type « Ce n’est pas le bon fichier ». Comme ils ont du mal avec le « obtenir la version » et non « obtenir la dernière version » bizarrement ils se sont retrouvé avec un ASM avec des beaux textes et des erreurs de contraintes et là ça a fait réagir [HS Off]

2 « J'aime »