Macro enregistrer sous un assemblage STEP en le transformant en pièce

Bonjour je suis à la recherche d'une option en VBA pour enregistrer un assemblage en STEP mais que avant d'enregistrer il transforme l'assemblage en pièce surface externe

Bonjour,

Je n'ai pas SW sous la main à l'instant pour vérifier mais tu dois pouvoir utiliser la fonction SaveAs3 Method (IModelDocExtension) avec l'option "ISldWorks::SetUserPreferenceIntegerValue" comme indiqué un peu plus bas sur cette même page :

Cordialement,

je viens d'essayer avec ça : 

        If CheckBoxSTEP.Value = True Then

               filename = LblCheminSTEP & ActiveConfig & ".STEP"
            
                boolstatus = swApp.SetUserPreferenceIntegerValue(swStepAP, 214)
                boolstatus = swApp.SetUserPreferenceIntegerValue(swSaveAssemblyAsPartOptions, swSaveAsmAsPart_ExteriorFaces)
                boolstatus = swModelDocExt.SaveAs(filename, 0, 0, swExportData, lErrors, lWarnings)
                
                If boolstatus Then
                    MsgBox "Enregistrement au format STEP réussi" & vbNewLine & filename
                Else
                    MsgBox "Echec de l'enregistrement au format STEP, Error code:" & lErrors, vbCritical, "AVERTISSEMENT"
                End If
        End If

mais ça ne change rien ? il enregistre en STEP mais il me créer les différentes pièces séparément dans le STEP.

Je crois que tu est obligé de le faire en plusieurs étape comme sous solidworks

1- enregistrer l'assemblage en pièce avec surface externe

2-ouvrir la pièce

3-Exporter en step la pièce

4-Effacer ou pas la pièce avec surface externe

1 « J'aime »

Sépare tes étapes comme l'a indiqué sbadenis.

d'accord je vais partir sur ça, merci. 
Mais je me demande comment je vais faire pour qu'il me supprime la pièce enregistrer automatiquement une fois le STEP crée.

ce que je suis entrain de faire ne fonctionne pas. Quand j'enregistre l'assemblage en pièce il me créer autant de corp/solide que de pièce dans l'assemblage. et moi je voudrais que tout sois "fusionné" en 1 seul corp quand j'enregistre l'assemblage en pièce ou directement en STEP si c'est possible.

Je viens de voir ce post sur le forum solidworks qui date de 2012.

A tester et fais nous un retour:

https://forum.solidworks.com/thread/55589

 

Voici la 1ère partie pour enregistrer l'assemblage en pièce

Dim swApp               As SldWorks.SldWorks
Dim swModel             As SldWorks.ModelDoc2
Dim swModelDocExt       As SldWorks.ModelDocExtension
Dim FilePath            As String
Dim sFilePath           As String
Dim PathSize            As Long
Dim PathNoExtension     As String
Dim NewFilePath         As String
Dim nErrors             As Long
Dim nWarnings           As Long

Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension

FilePath = swModel.GetPathName
PathSize = Strings.Len(FilePath)
PathNoExtension = Strings.Left(FilePath, PathSize - 6)
NewFilePath = PathNoExtension & "SLDPRT"

swApp.SetUserPreferenceIntegerValue swSaveAssemblyAsPartOptions, swSaveAsmAsPart_ExteriorFaces
swModelDocExt.SaveAs NewFilePath, swSaveAsCurrentVersion, swSaveAsOptions_Silent, Nothing, nErrors, nWarnings

swApp.CloseDoc swModel.GetTitle

Set swModel = swApp.OpenDoc(NewFilePath, swDocPART)
Set swModel = swApp.ActiveDoc

sFilePath = PathNoExtension & "STEP"
 
swModel.SaveAs (sFilePath)

swApp.CloseDoc swModel.GetTitle

End Sub
'------------------

Ensuite avec open doc6 tu dois pouvoir l'ouvrir pour ensuite l'exporter en step

Pour la supression du fichier peut-être qu'avec FSO  cela est faisable

Edit: pour la supression du fichier:

https://forum.solidworks.com/thread/61273

 

Pour open doc6:

http://help.solidworks.com/2018/English/api/sldworksapi/Open_Document_Example_VB.htm

cela fonctionne le seul problème c'est que il transforme l'assemblage en pièce surfacique comme demandé, et après quand on enregistre cette pièce en en STEP il me recréer des corps.

 

Ce n'est pas possible d'enregistrer pour qu'il n'y ai que 1 seul corps (que tout soit fusionné/regroupé en 1 seul bloc Importée) ?

Bonjour,

Il te faut faire :

- Ouverture de l'assemblage.

- Sauvegarde de cet assemblage en part.

- Ouverture du part nouvellement créé.

- Combiner les corps avec la fonction InsertCombineFeature Method (IFeatureManager) avec le swBodyOperationType_e Enumeration mis sur 15903 (SWBODYADD). Tu as un exemple ICI.

- Sauvegarder en step.

Cordialement,

2 « J'aime »

je viens de faire un essai juste comme ça avant de me lancer dans la macro et dès que je suis sur des assemblages un peu "complexe" j'ai ce message d'erreur quand je combine..

 

Bonjour,

Les corps que tu essaye de combiner en 1 corps unique ont-ils une intersection ?

Si ce n'est pas le cas alors ce message est normal.

Cordialement,

1 « J'aime »

oui c'est ça, c'est de la quincaillerie (vérins ou vis). Il n'y à pas un moyen pour qu'il combine tout ce qu'il peu combiner ensemble, et ce qu'il ne peut pas combiner tant pis il le laisse comme ça et automatiquement bien sur ?

Ben si, en faisant des boucles et de la gestion d'erreur dans ta macro ...