Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAnn As SldWorks.Annotation
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swAnn = swModel.Extension.InsertAnnotationFavorite("C:\monDossierDeNotes\Indice A.sldnotestl", 0.2, 0.2, 0)
swAnn.Layer = "Indice A"
Set swAnn = swModel.Extension.InsertAnnotationFavorite("C:\monDossierDeNotes\Indice B.sldnotestl", 0.2, 0.2, 0)
swAnn.Layer = "Indice B"
Set swAnn = swModel.Extension.InsertAnnotationFavorite("C:\monDossierDeNotes\Indice C.sldnotestl", 0.2, 0.2, 0)
swAnn.Layer = "Indice C"
swModel.WindowRedraw
End Sub
of:
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAnn As SldWorks.Annotation
Dim NoteNames As Variant
Dim NoteFolder As String
Dim i As Integer
NoteNames = Array("Indice A", "Indice B", "Indice C")
NoteFolder = "C:\monDossierDeNotes\"
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
For i = 0 To 2
Set swAnn = swModel.Extension.InsertAnnotationFavorite(NoteFolder & NoteNames(i) & ".sldnotestl", 0.2, 0.2, 0)
swAnn.Layer = NoteNames(i)
Next
swModel.WindowRedraw
End Sub
swModel wordt niet gedeclareerd als een globale variabele. dus ondanks dat het is toegewezen in Layer(), is het waardeloos in ChgtComboBox1() we moeten toevoegen: Dim swModel als sldworks.modeldoc2 voor main()
In feite zijn er veel niet-aangegeven variabelen. Mijn suggestie voegt toe: Expliciete optie helemaal aan het begin van de macro en corrigeert eventuele rapportagefouten.
Declareer ook Layer() met: Sub Layer(void) en roept het aan met: Laag aanroepen (leeg) of: Laag leeg Hetzelfde geldt voor ChgtComboBox1() Het zal de macro dwingen om te starten vanaf main()
Het is belangrijk dat een macro slechts één hoofdfunctie is (meestal hoofd()).
Een functie is secundair als deze een parameter heeft zoals (ByVal swModel As ModelDoc2). Als een functie secundair is maar geen parameter nodig heeft , is het de conventie om er een lege parameter aan toe te wijzen. (Ongeldig)