Bonjour.
J'ai souvent besoin de récupérer des fichiers 3D (step) de fournisseur industriel. Ceux-ci m'envoi la plupart du temps des fichiers step qui quand je les ouvres via solidworks sont composés d'assemblage, composés aux même d'autres assemblages et de pièces. Bref...
Aujourd'hui, pour chacun de ces fichiers, je suis obligé de rentrer dans les sous-assemblage, ouvrir toutes les pièces pour : 1- Supprimer leur apparence. 2-Attribuer une matière 3-l'enregistrer. 4- Le rendre Virtuel.
Je voudrai in finé, lorsque l'assemblage de tête est ouvert, avoir juste à cliquer sur une macro qui me transforme tous les fichiers pièces sous la racine, et tous les autres inclus dans des sous-assemblages de tous les niveaux inférieurs.
Je penses qu'il est possible via une macro, de faire toutes ces opérations à la fois, et très rapidement.
Malheureusement je ne maîtrise pas du tout les macro Solidworks, et je ne suis pas capable de créer le code adéquat.
Quelqu'un a t-il déjà fait quelquechose de similaire, et pourrai m'aider.
Merci.
Jérémy
Solidworks PDM 2015
Bonjour Jérémy,
Pour rendre virtuel une pièce, il y a la méthode MakeVirtual2 (lien).
Pour appliquer une matière il y a la méthode SetMaterialProperty (lien). Mais comment savoir laquelle appliquer ?
Je voulais aussi faire cela pour mon boulot mais avec les variantes suivantes :
- - Sans gestion de la matière ;
- - Avec suppression des sous-ensembles qui ne contiennent qu'un seul sous ensemble ou pièce.
Je n'ai pour ma part jamais réussi car la première étape pour moi était de casser la dépendance au fichier STEP d'origine. Et à ma connaissance, il n'existe aucune fonction dans l'API pour ça (ni pendant l'import ni après). Quand on réalise cette opération manuellement pendant l'enregistrement d'une macro, il ne met rien dans le fichier.
M.
Voici une ébauche qui convertis un Step en sldprt, supprime l'apparance, assigne le matériel "AISI 304" et sauve dans le même répertoire.
Option Explicit
Sub main()
Dim FilePath As String
FilePath = "C:\MyFiles\PartTest.step"
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Set swApp = Application.SldWorks
Set swModel = swApp.LoadFile4(FilePath, Empty, Nothing, Empty)
swModel.SetMaterialPropertyName2 "Default", Empty, "AISI 304"
swModel.Extension.RemoveMaterialProperty swInConfigurationOpts_e.swAllConfiguration, Nothing
FilePath = Replace(FilePath, ".step", ".sldprt")
swModel.Extension.SaveAs FilePath, swSaveAsVersion_e.swSaveAsCurrentVersion, swSaveAsOptions_e.swSaveAsOptions_Silent, Nothing, Empty, Empty
End Sub
2 « J'aime »
Ça ne me dérange pas d'ouvrir le step dans solidworks. Et a ma connaissance le fichier sldasm ne garde pas de lien avec le step.
Le problème également c'est que lorsque j'ouvre le step dans solidworks, dans le fichier sldasm que j'obtiens il y'a soit d'autre assemblage soit des pièces. Et que si je veux les rendre virtuel, je suis obligé de les ouvrir préalablement. Ce qui me fait perdre un temps considérable.
Une macro est-elle capable d'ouvrir le fichier, de modifier son apparence, sa matière, puis de le fermer. Puis d'ouvrir un autre fichier appartenant a l'assemblage de tête, de refaire les mêmes opération, et ainsi de suite, jusqu'au dernier fichier. Et enfin de supprimer tout les fichiers temporaires appartenant au fichier step d'origine générées lors de l'ouverture du fichier via solidworks, et également de supprimer le step.
Merci pour votre aide.
Jérémy
Oui , c'est possible de faire une macro pour ca
Bonjour, j'ai une macro de base pour renommer les pièce et sous ensemble qui sont déjà en virtuel.en 1 2 3 etc
en SW2018 les ensembles provenant de step sont déjà en virtuel donc je n'ai pas cette étapes de comme en sw 2015
renommer_virtuel.swp
2 « J'aime »
Il y a bien un lien qui est gardé avec le STEP d'origine, pour les pièces ou les assemblages. Cela est vrai à partir de Solidworks 2017 toutefois :
http://help.solidworks.com/2019/french/SolidWorks/sldworks/t_break_link_from_original_file.htm
Par contre, ce n'est peut-être pas un problème pour votre activité. Le seul risque étant que le STEP fasse lien entre deux pièces/assemblages bien distinctes dans deux projets et qu'il y ai des modifications croisées (j'ai eu le cas).
Merci pour vos réponses.
Je ne vais peut être pas aller plus loin pour le moment. Nous sommes censé passé en Solidworks 2019 d'ici quelques mois (Oui je sais nous sommes en 2020 !!!) et donc d'après ce que dit G.casters, nous n'aurons plus le problème concernant la transformation des fichier pièces/assemblages temporaires en fichier Virtuel.
Ensuite je vais récupérer les quelques ligne de code de Jérome.P et de mgauroy pour essayer de bricoler quelque chose qui peit fonctionner.