Comment récupérer des pièces a l'aide d'une macro

Bonjour, je voudrais pouvoir récupérer une pièce dans un document, pour se faire j'ai fait mon programme qui marche, mais je voudrais maintenant pouvoir prendre une autre pièce d'un autre nom dans se même document. Il est à noté qu'il n'y aura toujours q'une pièce dans ce document. Est-il possible d'avoir une macro qui prenne toutes les pièces d'un même document ?

Avec par exemple:  boolstatus = swApp.LoadFile2("C:\Users\Desktop\nouveau dossier\ (all ou nom du fichier) ", "")

Bonjour,

Est ce que tu peux partager ta macro actuelle?

pas de soucies:


macro_ouverture_dossier.swp

Est ce que tu peux expliquer ce que tu veux faire? Je pensais que la macro me ferait comprendre ce que tu entends par "récupérer une pièce" et "prenne toutes les pièces", mais ce n'est pas le cas.

Également la macro utilise "SelectByRay" qui est un peu aléatoire

SI tu essaye de sélectionner des arrêtes, il faut mieux le faire avec GetBodies2  puis GetFirstFace / GetNextFace puis GetEdges

 

Merci beaucoup pour la réponse. Je suis un petit nouveau dans ce domaine alors il me manque quelques notions alors merci beaucoup :). 

En fait, je voudrais que le logiciel fasse un outillage automatiquement par rapport à une pièce d'un fichier, imaginons que j'ai une pièce A et une pièce B. Si je crée ma macro avec la pièce A comme base, ça marche mais maintenant si j'enlève la pièce A du dossier et que je la remplace par B, là ça ne marche plus puisqu'elles n'ont pas le même nom. Y a-t-il un moyen de faire en sorte de pallier ce problème ?

Tu peux sélectionner le fichier avec une boite de dialogue:

' cliquer dans le menu de la fenêtre VBA: Tools > References > sélectionner: "microsoft Excel xx.0 object library"
Sub main()
    Dim xlsObject As Excel.Application
    Dim fdFolder As Office.FileDialog

    Set xlsObject = New Excel.Application
    xlsObject.Visible = False
    Set fdFolder = xlsObject.Application.FileDialog(msoFileDialogFilePicker)
       fdFolder.Filters.Clear
    fdFolder.Filters.Add "SolidWorks Files", "*.sld*"
    fdFolder.Show
    Debug.Print "fichier sélectionné: " & fdFolder.SelectedItems(1)
    xlsObject.Quit
    Set xlsObject = Nothing
End Sub

ou parcourir tous les fichiers d'un dossier avec:

Sub main()
Dim oFSO As Object
Dim oFolder As Object
Dim oFile As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder("C:\Users\...")
For Each oFile In oFolder.Files
    Debug.Print oFile.Name
Next oFile
End Sub

 

Bonjour,

Si, comme c'est marqué plus haut, tu n'as toujours qu'un seul fichier dans le dossier concerné tu peux récupérer son nom avec la fonction DIR :

    Dim Dossier As String
    Dossier = "C:\Temp\divers\" 'Ligne à modifier pour mettre le nom de ton dossier
    Dim Fichier As String
    Fichier = Dir(Dossier)
    Debug.Print Dossier & Fichier
    boolstatus = swApp.LoadFile2(Dossier & Fichier, "")

 

Cordialement,

Je vous remercie beaucoup pour vos réponses je vais tester ca. 

Attention toutefois au type de fichier que tu veux ouvrir, tu utilises la fonction LoadFile2 (prendre LoadFile4 pour être à jour) qui est pour les fichiers non natif Solidworks, si c'est pour un fichier natif Solidworks il faut utiliser la fonction OpenDoc6 et du coup faire une vérification sur le type de fichier (asm, prt ou drw).

Cordialement,

1 « J'aime »

ca marche, merci.

OK, il ne te reste plus qu'à valider la réponse qui a solutionnée ta question...

Cordialement,