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.

Liens connexes

Obtenez des services SOLIDWORKS certifiés de Javelin

Javelin Experts peut vous aider à :

Samony Riyaz