Manipulacja notatkami makr w programie MEP

Witam wszystkich,

Tworzę makro do dodawania notatek i aktualizowania ich zgodnie z danymi wprowadzonymi w formularzu użytkownika. Następnie wychodzę z niego, aby dodać notatki i je sformatować, ale aby znaleźć istniejące notatki na planie, wysuszam.

Próbowałem użyć przykładu tutaj ==> 2020 API - Pobierz przykład notatki według nazwy (VBA)

Zastępując nazwę przykładowej notatki (DetailItem300) moją własną (Annotation219). Nic się nie dzieje. Bez tego kroku nie mogę kontynuować mojego makra :frowning:

Czy ktoś z Was będzie w stanie rozwiązać ten problem?

Dziękuję :slight_smile:

Dobry wieczór
Czy mógłbyś opublikować swój kod i określić, czy notatka jest w tle, czy pochodzi z nieruchomości...

Witam

Ponadto, jeśli zmieniłeś tylko nazwę adnotacji w drugiej części przykładu, to normalne, że nie działa.
Zazwyczaj w tym miejscu musisz umieścić nazwę swojego arkusza:

DetailItem300@Sheet Format1

Edycja: A po testach, SW za pomocą metody swNote.Getname nie zwraca nazwy wyświetlanej we właściwościach, ale raczej coś w rodzaju "Detail objectxxx"

Ponadto adnotacja w przykładowym pliku oprogramowania służącym do testowania makra nosi nazwę Annotation11.

Przez makro obiektem zwracanym przez SwNote.GetName jest DetailItem300 (w rzeczywistości wszystkie notatki w ich przykładzie są zwracane w formacie DetailItemmxxx)
image
Tak więc ich przykładowe makro jest świetne, ale znajomość z góry nazwy adnotacji jest po prostu niemożliwa.
Najprostszym sposobem jest zeskanowanie notatek, a jeśli jesteś w " stałych " notatkach z jednego formatu klipu do innego (w przypadku tabelki rysunkowej, na przykład, jeśli wszystkie pochodzą z tego samego szablonu), możesz uprościć kod, aby bezpośrednio kierować żądane notatki.
Ze swojej strony zawsze bawiłem się skanerem notatek i nie jest on szczególnie wolniejszy (zwłaszcza na planie w tle w ogóle nie ma ich 250).

Witaj Cyril.f,

Dziękuję za te odpowiedzi, widzę to wyraźniej. Rzeczywiście, pominąłem szczegóły, notatki są w planie tła (w kartridżu), więc powinienem być w stanie namierzyć te nuty, o których mowa... Do kodu skopiowałem i wkleiłem przykład, dokonując pewnych modyfikacji
tylko.

Dla metody "skanowania": Z pierwszą częścią kodu. Nic się nie dzieje po zmianie nazwy

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

Więc jest coś, czego nie robię dobrze. Ale co?? :thinking:

Witam
Czy masz pewność, że adnotacje są zakodowane jako DetailItem?
Jeśli twoje oprogramowanie jest w języku francuskim, a twoje szablony są tworzone w wersji FR, o ile się nie mylę, wszystkie adnotacje są skodyfikowane obiektem Detail.

Nie, rzeczywiście, jest we Francji, dobrze widziany :wink:

Testuję to od razu.

Po kilku nieudanych próbach udało mi się.
W rzeczywistości nazwa "Adnotacja219" nie jest zbyt przydatna, wykonując nagranie makra i wybierając odpowiednią notatkę, udało mi się poznać jej nazwę (w tym przypadku Obiekt détail1130@Fond planu1). W rezultacie działa z metodą "ukierunkowaną", ale nie ze skanowaniem... Ale na razie mi to nie przeszkadza.

Teraz, gdy notatka została znaleziona, mogę z nią zrobić, co chcę. :slight_smile:

Dziękuję za pomoc Cyril.f

:metal:

Proszę.
W przypadku skanowania normalnie tylko z "Detail object1130" powinno to zadziałać.