Last active
June 15, 2020 20:39
-
-
Save AmenJlili/3999f3106088286adef5e938ca13e843 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'www.bluebyte.biz | |
Public Enum swVerticalJustification_e | |
swVerticalJustificationNone = 0 | |
swVerticalJustificationBottom = 3 | |
swVerticalJustificationMiddle = 2 | |
swVerticalJustificationTop = 1 | |
End Enum | |
Public Enum swTextJustification_e | |
swTextJustificationCenter = 2 | |
swTextJustificationLeft = 1 | |
swTextJustificationNone = 0 | |
swTextJustificationRight = 3 | |
End Enum | |
Public Enum swDocumentTypes_e | |
swDocASSEMBLY = 2 | |
swDocDRAWING = 3 | |
swDocIMPORTED_ASSEMBLY = 7 | |
swDocIMPORTED_PART = 6 | |
swDocLAYOUT = 5 | |
swDocNONE = 0 | |
swDocPART = 1 | |
swDocSDM = 4 | |
End Enum | |
Public Enum swLeaderStyle_e | |
swNO_LEADER = 0 | |
End Enum | |
Option Explicit | |
Sub main() | |
'''''''''''''''''''' | |
Dim watermarkText As String | |
'set watermark text here | |
watermarkText = "DRAFT" | |
'''''''''''''''''''' | |
Dim swApp As Object | |
Dim swModel As Object | |
Dim swDraw As Object | |
Dim swSheet As Object | |
Set swApp = Application.SldWorks | |
If swApp Is Nothing Then | |
MsgBox ("Failed to get the solidworks application.") | |
Exit Sub | |
End If | |
Set swModel = swApp.ActiveDoc | |
If swModel Is Nothing Then | |
swApp.SendMsgToUser "No document open." | |
Exit Sub | |
End If | |
If swModel.GetType() <> swDocumentTypes_e.swDocDRAWING Then | |
swApp.SendMsgToUser "Macro only runs on drawing documents." | |
Exit Sub | |
End If | |
Set swDraw = swModel | |
Dim addRet As Boolean | |
addRet = AddWatermark(swDraw, watermarkText) | |
If addRet = False Then | |
swApp.SendMsgToUser "Failed to get add watermark" | |
End If | |
End Sub | |
Private Function AddWatermark(ByVal swModel As Object, ByVal watermarkText As String) As Boolean | |
On Error GoTo handler: | |
Dim swWidth As Double | |
Dim swHeight As Double | |
Dim swDrawingDoc As Object | |
Dim selectionMgr As Object | |
Dim swSheet As Object | |
Dim swAnn As Object | |
Dim swNote As Object | |
Dim swTextFormat As Object | |
Set swDrawingDoc = swModel | |
Set swSheet = swDrawingDoc.GetCurrentSheet() | |
Dim props As Variant | |
props = swSheet.GetProperties2() | |
swWidth = props(5) | |
swHeight = props(6) | |
swDrawingDoc.EditTemplate | |
swModel.ClearSelection2 (True) | |
'attempt to get existing note and delete if it exists in the same position | |
Dim selectionRet As Boolean | |
selectionRet = swModel.Extension.SelectByID2("", "NOTE", swWidth * 0.5, swHeight * 0.5, False, -1, 0, Nothing, 0) | |
If (selectionRet) Then | |
swModel.DeleteSelection False | |
End If | |
Set swNote = swModel.InsertNote("<FONT color=0x000000ff><FONT style=B>" + watermarkText) | |
swNote.BehindSheet = True | |
If Not swNote Is Nothing Then | |
swNote.SetBalloon 0, 0 | |
Set swAnn = swNote.GetAnnotation() | |
swAnn.SetLeader3 swLeaderStyle_e.swNO_LEADER, 0, True, False, False, False | |
Set swTextFormat = swModel.GetUserPreferenceTextFormat(0) | |
swTextFormat.Escapement = 0.4 | |
swTextFormat.CharHeight = 0.04 | |
swAnn.SetTextFormat 0, False, swTextFormat | |
swAnn.SetPosition swWidth * 0.5, swHeight * 0.5, 0 | |
swNote.SetTextJustification (swTextJustification_e.swTextJustificationCenter) | |
swNote.SetTextVerticalJustification (swVerticalJustification_e.swVerticalJustificationMiddle) | |
End If | |
swModel.ClearSelection2 (True) | |
swDrawingDoc.EditTemplate | |
swDrawingDoc.EditSheet | |
AddWatermark = True | |
swModel.ForceRebuild3 False | |
Exit Function | |
handler: | |
AddWatermark = False | |
End Function |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment