Hallo allemaal,
Ik ben op zoek naar een macro waarmee ik een bestaande tekst in een SolidWorks-blauwdruk kan wijzigen.
Tot nu toe zijn mijn Google-zoekopdrachten niet succesvol geweest, en de SolidWorks-macrorecorder helpt ook niet veel.
We kunnen ook niet zeggen dat de SolidWorks API's een verstrekte, nauwkeurige en toegankelijke literatuur zijn.
Heb je een voorbeeld of een idee om me een beetje te begeleiden?
Bij voorbaat dank
Bedankt
Maar ik had deze twee codes al gevonden, niets te maken met wat ik wil doen
Kun je in dit geval meer zeggen of de notitie laten zien die je wilt veranderen en waar?
Maar in feite is het een eenvoudige tekst op de vlakke achtergrond waar "AAA" staat en ik wil deze tekst veranderen in "BBB" met een macro, waar het ook is.
Als ik de objectnaam weet, namelijk: "Plan detail331@fond object1"
Hier is hoe je de tekst van een notitie kunt bewerken via de naam van die notitie, als ik het goed heb begrepen:
https://help.solidworks.com/2020/English/api/sldworksapi/Get_Note_By_Name_Example_VB.htm
1 like
Nou, hier is een stukje code dat werkt, aan de andere kant moet ik er nu voor zorgen dat het de formaten herkent omdat de naam van de notitie niet identiek is op elk tekenformaat.
Sub hoofd()
Dim swApp als SldWorks.SldWorks
Dim swModel als SldWorks.ModelDoc
Dim swDraw als SldWorks.DrawingDoc
Dim swView als SldWorks.Bekijk
Dim swNote als SldWorks.Note
Dim sNoteText als tekenreeks
Dim nTextCount zo lang
Zon i Zo lang
Dim NoteDescript als snaar
Set swApp = Application.SldWorks 'CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
Set swDraw = swModel
Set swView = swDraw.GetFirstView ' This is the drawing template
While Not swView Is Nothing
Set swNote = swView.GetFirstNote
While Not swNote Is Nothing
If swNote.GetName = "Objet de détail160" Then
NoteDescript = "$PRPSHEET:" & Chr(34) & "DESCRIPTION_EN" & Chr(34)
swNote.SetTextAtIndex 1, NoteDescript
End If
'If swNote.IsCompoundNote Then
' nTextCount = swNote.GetTextCount
' For i = 1 To nTextCount
' sNoteText = swNote.GetTextAtIndex(i)
' DoReplaceString sNoteText
' swNote.SetTextAtIndex i, sNoteText
' Next i
'Else
' sNoteText = swNote.GetText
' DoReplaceString sNoteText
' swNote.SetText sNoteText
'End If
Set swNote = swNote.GetNext
Wend
Set swView = swView.GetNextView
Wend
Einde Sub
Als de inhoud identiek is of dezelfde basis heeft, geef dan de voorkeur aan erkenning via inhoud, als dit niet mogelijk is, zie dan effectief voor erkenning via een lijst met namen.
Wetende dat de naam over het algemeen riskanter is dan de inhoud.
1 like
Hallo
Is de notitie gebonden aan een bestandseigenschap of is het gewoon een niet-gekoppeld object?
1 like