Favoriten für Anmerkungen zum Einfügen von Makros

Hallo an alle

Ich möchte eine Anmerkung aus der SOLIDWORKS Konstruktionsbibliothek einfügen.

Ich lade ständig die Notizen der Bibliothek und verwende ein Benutzerformular, um die gewünschte Notiz auszuwählen 

 

Ich komme beim Einfügen der Notiz nicht weiter, ich habe die InsertAnnotationFavourite-Methode  verwendet

Ich müsste in der Lage sein, es in eine bestimmte  Ebene einzufügen : Ebenen werden in der Makroebene erstellt

Eine tiefgestellte Notiz in einer tiefgestellten Ebene

B tiefgestellte Notiz in B tiefgestellte Nachzeichnung

C-Index-Notiz in der C-Index-Schicht

Hat jemand eine Idee?

Vielen Dank im Voraus für Ihre Hilfe

 

Herzliche Grüße

 

Yannick

 


note.zip

Hallo Versuchen Sie das:

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

oder:

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

 

Hallo Jerome,

Vielen Dank für Ihr Feedback

Ich habe dein Makro in meine Schleife integriert. Die Notiz wird nicht eingefügt.

Wenn ich das Makro durchlaufe, lädt Set swAnn nichts.

Wenn Vorlage = "Indiz B" dann 

Set swAnn = swModel.Extension.InsertAnnotationFavorite("C:\sw-parameter\Blocks\Revision Index\B.sldnotestl Index", 0.2, 0.2, 0)
swAnn.layer = "B-Index"
swModel.WindowRedraw

 

Wissen Sie, woher das kommen kann?

Vielen Dank im Voraus

 

Yannick


insert_indice.swp

swModel ist nicht als globale Variable deklariert.
Obwohl es also in Layer() zugewiesen ist, saugt  es ChgtComboBox1() ein
Wir müssen hinzufügen: Dim swModel als sldworks.modeldoc2 vor main()

Tatsächlich gibt es eine Menge nicht deklarierter Variablen.
Mein Vorschlag, fügt hinzu: Explizite Option
ganz am Anfang des Makros und korrigiert alle Reporting-Fehler.

Deklarieren Sie auch Layer() mit: Sub Layer(void)
und ruft es auf mit: Call Layer(Empty) oder: Layer Empty
Gleiches gilt für ChgtComboBox1()
Es wird gezwungen, das Makro von main() zu starten.

Danke Jerome, das Makro funktioniert perfekt, wenn Sie alle Variablen deklarieren

Zu meiner Information, was bedeutet (ungültig) und (leer)?

Danke für alles.

 

void = > leer, leer = > nichts

Es ist wichtig, dass ein Makro nur eine Hauptfunktion ist (normalerweise main()).

Eine Funktion ist sekundär, wenn sie einen Parameter wie (ByVal swModel As ModelDoc2) hat. Wenn eine Funktion sekundär ist, aber keinen Parameter benötigt, besteht die Konvention darin, ihr einen leeren Parameter zuzuweisen. (Ungültig)