Ik maak een macro om notities toe te voegen en ze bij te werken op basis van gegevens die in een gebruikersformulier zijn ingevoerd. Ik stap er dan uit om de notities toe te voegen en ze op te maken, maar om bestaande notities op een plan te vinden, droog ik op.
Door de naam van de voorbeeldnotitie (DetailItem300) te vervangen door mijn eigen naam (Annotation219). Er gebeurt niets. Zonder deze stap kan ik niet verder met mijn macro
Als je bovendien alleen de naam van de annotatie in het tweede deel van het voorbeeld hebt gewijzigd, is het normaal dat deze niet werkt. Meestal moet u hier de naam van uw blad invoeren:
DetailItem300@Sheet Format1
Edit: En na het testen geeft SW via de swNote.Getname methode niet de naam terug die in de eigenschappen wordt weergegeven, maar eerder iets als "Detail objectxxx"
Door de macro is het object dat wordt geretourneerd door SwNote.GetName DetailItem300 (in feite worden alle notities in hun voorbeeld geretourneerd in het formaat DetailItemmxxx) Dus hun voorbeeldmacro is geweldig, maar het is gewoon onmogelijk om van tevoren de naam van de annotatie te weten. De eenvoudigste manier is om de notities te scannen, en als u zich in " vaste " notities bevindt van het ene clipformaat naar het andere (in het geval van een titelblok, bijvoorbeeld als ze allemaal oorspronkelijk uit hetzelfde sjabloon komen), kunt u de code vereenvoudigen om de gewenste notities direct te targeten. Van mijn kant heb ik altijd met de notitiescanner gespeeld en die is niet bijzonder langzamer (vooral op het achtergrondplan in het algemeen zijn er geen 250).
Bedankt voor deze antwoorden, ik zie duidelijker. Ik had inderdaad details weggelaten, de notities zitten in een achtergrondplan (in de cartridge), dus ik zou in staat moeten zijn om de betreffende notities te richten... Voor de code heb ik het voorbeeld gekopieerd en geplakt door enkele aanpassingen aan te brengen alleen.
Voor de "scan"-methode: Met het eerste deel van de code. Er gebeurt niets door de naam te veranderen
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
Hallo Weet u zeker dat uw annotaties DetailItem zijn gecodeerd? Als uw SW in het Frans is en uw sjablonen zijn gemaakt op de FR-versie, tenzij ik me vergis, zijn alle annotaties gecodificeerd Detailobject.
Na een paar mislukte pogingen is het me gelukt. In feite is de naam "Annotatie219" niet erg handig door een macro-opname te maken en de betreffende notitie te selecteren, ik kon de naam ervan kennen (Object van détail1130@Fond van plan1 in dit geval). Als gevolg hiervan werkt het met de "gerichte" methode, maar niet met de scan... Maar voorlopig heb ik er geen last van.
Nu het briefje gevonden is, kan ik ermee doen wat ik wil.