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.
Indem ich den Namen der Beispielnotiz (DetailItem300) durch meinen eigenen (Annotation219) ersetze. Nichts passiert. Ohne diesen Schritt kann ich mein Makro nicht fortsetzen
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"
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)
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).
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??
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.
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.