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
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,
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,
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 ...