Manipulation von Makro-Notizen auf MEP

Hallo an alle

Ich erstelle ein Makro, um Notizen hinzuzufügen und sie entsprechend den in einem Benutzerformular eingegebenen Daten zu aktualisieren. Ich komme dann raus, um die Notizen hinzuzufügen und zu formatieren, aber um vorhandene Notizen auf einem Plan zu finden, trockne ich aus.

Ich habe versucht, das Beispiel hier zu verwenden == > 2020 API - Get Note By Name Example (VBA)

Indem ich den Namen der Beispielnotiz (DetailItem300) durch meinen eigenen (Annotation219) ersetze. Nichts passiert. Ohne diesen Schritt kann ich mein Makro nicht fortsetzen :frowning:

Wird jemand von Ihnen in der Lage sein, dieses Problem zu lösen?

Vielen Dank :slight_smile:

Guten Abend
Könnten Sie Ihren Code posten und angeben, ob sich die Notiz im Hintergrund befindet, ob sie von einer Eigenschaft stammt ...

Hallo

Wenn Sie den Namen der Anmerkung nur im zweiten Teil des Beispiels geändert haben, ist es normal, dass dies nicht funktioniert.
In der Regel müssen Sie hier den Namen Ihres Blattes eingeben:

DetailItem300@Sheet Format1

Bearbeiten: Und nach dem Testen gibt SW über die swNote.Getname-Methode nicht den in den Eigenschaften angezeigten Namen zurück, sondern so etwas wie "Detail objectxxx"

Darüber hinaus wird die Anmerkung in der SW-Beispieldatei zum Testen des Makros als Annotation11 bezeichnet.

Durch das Makro ist das von SwNote.GetName zurückgegebene Objekt DetailItem300 (tatsächlich werden alle Notizen in ihrem Beispiel im Format DetailItemmcx zurückgegeben)
image
Ihr Beispielmakro ist also großartig, aber es ist einfach unmöglich, den Namen der Anmerkung im Voraus zu kennen.
Der einfachste Weg besteht darin, die Notizen zu scannen, und wenn Sie sich in " festen " Notizen von einem Clipformat in ein anderes befinden (im Falle eines Schriftfelds, z. B. wenn sie alle ursprünglich aus derselben Vorlage stammen), können Sie den Code so vereinfachen, dass er direkt auf die gewünschten Notizen abzielt.
Ich für meinen Teil habe immer mit dem Notenscanner gespielt und er ist nicht besonders langsamer (vor allem auf dem Hintergrundplan im Allgemeinen gibt es keine 250 davon).

Hallo Cyril.f,

Danke für diese Antworten, ich sehe klarer. In der Tat hatte ich Details weggelassen, die Notizen befinden sich in einem Hintergrundplan (in der Patrone), so dass ich in der Lage sein sollte, die betreffenden Notizen gezielt zu machen... Für den Code habe ich das Beispiel kopiert und eingefügt, indem ich einige Änderungen vorgenommen habe
nur.

Für die "scan"-Methode: Mit dem ersten Teil des Codes. Durch die Änderung des Namens geschieht nichts

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDrawing As SldWorks.DrawingDoc
Dim swSelMgr As SldWorks.SelectionMgr
Dim swNote As SldWorks.Note
Dim swView As SldWorks.View
Dim swSelObj As Object
Dim theCurrentRev As String
Dim foundNote As Boolean
Dim ret As Boolean
Dim descriptionText As String

Const swSelNOTES = 15
Const swDocDRAWING = 3

Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
' Verify that the document is a drawing
If (swModel Is Nothing) Or (swModel.GetType <> swDocDRAWING) Then
    Exit Sub
End If
Set swDrawing = swModel
' Edit the current drawing template
swDrawing.EditTemplate
' This is the template
Set swView = swDrawing.GetFirstView
' This section shows a slower method for
' selecting a note by name by using note
' traversal (swView::GetFirstNote and SwView::GetNext)
' Get the first note object
Set swNote = swView.GetFirstNote

' While you have a valid note
Do While Not swNote Is Nothing
    ' Verify if you have the desired note by checking its name
    ' This can also be done by checking the position or the existing
    ' text string in the note
    If (swNote.GetName = "DetailItem219") Then


        foundNote = True
        theCurrentRev = swNote.GetText
        swApp.SendMsgToUser ("Note found")


    End If
    'Set swNote = swNote.GetNext
    ' Continue until no more notes
Loop

Es gibt also etwas, das ich nicht richtig mache. Aber was?? :thinking:

Hallo
Sind Sie sicher, dass Ihre Anmerkungen mit DetailItem codiert sind?
Wenn Ihre SW auf Französisch ist und Ihre Vorlagen in der FR-Version erstellt werden, werden alle Anmerkungen, sofern ich mich nicht irre, als Detailobjekt kodiert.

Nein, in der Tat, es ist in FR, gut gesehen :wink:

Ich teste es sofort.

Nach einigen erfolglosen Versuchen gelang es mir.
In der Tat ist der Name "Annotation219" nicht sehr nützlich, indem ich eine Makroaufnahme mache und die betreffende Notiz auswähle, ich konnte ihren Namen kennen (in diesem Fall Objekt der détail1130@Fond von plan1). Infolgedessen funktioniert es mit der "gezielten" Methode, aber nicht mit dem Scan... Aber im Moment stört es mich nicht.

Jetzt, da die Notiz gefunden ist, kann ich damit machen, was ich will. :slight_smile:

Vielen Dank für Ihre Hilfe Cyril.f

:metal:

Bitte.
Für den Scan normal mit nur "Detail object1130" sollte es funktionieren.