Macro SOLIDWORKS permettant de créer des mises en plan pour toutes les configurations avec une nomenclature actualisée

Article par Samony Riyaz mis à jour le 21 novembre 2019

Article

Avez-vous déjà eu une pièce avec des dizaines, des centaines ou des milliers de configurations ? Et vous êtes responsable de la création d'un dessin pour CHACUNE de ces configurations avec une nomenclature correcte ?

Et bien n'ayez plus peur ! Nous avons une macro SOLIDWORKS pour vous, dans laquelle tout ce que vous avez à faire est de... changer deux lignes, cliquer sur un bouton, vous asseoir et vous détendre pendant que SOLIDWORKS génère les fichiers automatiquement.

Commençons.

  1. Créer une nouvelle macro
    • Utilisez le bouton Nouvelle macro dans la barre d'outils des macros (ou sélectionnez Outils > Macro > Nouvelle).
  2. Assurez-vous que les références dans SOLIDWORKS Visual Basic Editor (VBA) sont correctes avec votre version de SOLIDWORKS.
  3. Copiez le code ci-dessous et modifiez le texte orange surligné pour l'adapter à votre environnement :
  4. Enregistrer le code
  5. Exécuter

Conditions préalables: Assurez-vous que vous exécutez le code ci-dessous sur un DESSIN contenant un MODÈLE, qui contient des configurations multiples.

Résultats: Dans le dossier OUTPUT_FOLDER de votre choix, vous devriez voir les fichiers de dessin pour CHAQUE configuration avec une nomenclature mise à jour.

Const OUTPUT_FOLDER = "C:\Out\"
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swRefModel As SldWorks.ModelDoc2
Sub main()
Dim i As Integer
Dim vConfs As Variant
Dim swView As SldWorks.View
Dim confName As String
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Set swView = swDraw.GetFirstView().GetNextView
Set swRefModel = swView.ReferencedDocument
vConfs = swRefModel.GetConfigurationNames
Pour i = 0 à UBound(vConfs)
confName = vConfs(i)
ProcessViews confName
swModel.ForceRebuild3 False
boolstatus = swModel.Extension.SaveAs(OUTPUT_FOLDER + confName + ".slddrw", swSaveAsVersion_e.swSaveAsCurrentVersion, swSaveAsOptions_e.swSaveAsOptions_Copy, Nothing, 0, 0)
Suivant i
MsgBox "Completed" (terminé)
Set swApp = Rien
Set swModel = Rien
Set swDraw = Rien
Set swRefModel = Rien
End Sub
Sub ProcessViews(confName As String)
Dim i As Integer
Dim vSheets As Variant
Dim j As Integer
Dim vViews As Variant
Dim swFeat As SldWorks.Feature
Dim swView As SldWorks.View
vFeat = swDraw.GetViews
Pour i = 0 à UBound(vSheets)
vViews = vSheets(i)
For j = 0 To UBound(vViews)
Set swView = vViews(j)
swView.ReferencedConfiguration = confName
Suivant j
Suppression de la nomenclature
Set swFeat = swDraw.FirstFeature
Debug.Print swFeat.Name + " - " + swFeat.GetTypeName
While Not swFeat Is Nothing
Debug.Print swFeat.Name + " - " + swFeat.GetTypeName
Si "BomFeat" = swFeat.GetTypeName Alors
swFeat.Select2 False, -1
swDraw.Extension.DeleteSelection2 swDeleteSelectionOptions_e.swDelete_Absorbed
End If
Set swFeat = swFeat.GetNextFeature
Wend
boolstatus = swModel.Extension.SelectByID2(swView.Name, "DRAWINGVIEW", 0, 0, 0, False, 0, Nothing, 0)
AnchorType = swBOMConfigurationAnchorType_e.swBOMConfigurationAnchor_TopLeft
BomType = swBomType_e.swBomType_PartsOnly
Configuration = confName
TableTemplate = ""
' Insertion d'une table de nomenclature
Set swBomAnn = swView.InsertBomTable2(True, 0.4, 0.3, AnchorType, BomType, Configuration, TableTemplate)
swModel.ClearSelection2 True
' Mise à jour de l'arbre de conception FeatureManager
swDraw.ForceRebuild
Suivant i
Set swFeat = Rien
Set swView = Rien
End Sub

NOTE: Les exemples d'API sont fournis tels quels et ne doivent être utilisés qu'à titre de référence. Vous pouvez les utiliser dans votre environnement, les modifier ou les distribuer, mais Javelin n'est pas responsable des types de dommages quels qu'ils soient (y compris, mais sans s'y limiter, les dommages résultant de la perte d'utilisation, de données, de bénéfices ou d'affaires) découlant de l'utilisation de ces informations, applications ou services.

En savoir plus sur les macros/API de SOLIDWORKS

Javelin propose des cours de formation SOLIDWORKS VB for Applications et SOLIDWORKS API, que vous pouvez suivre en ligne ou dans l'une de nos salles de classe canadiennes. Consultez notre calendrier pour en savoir plus.

Samony Riyaz