Publish Text and Custom Properties from Theme to MBD 3D PDF Example (VB.NET)
This example shows how to publish text and custom properties from a theme to
SOLIDWORKS MBD 3D PDF.
'--------------------------------------------------------------
' Preconditions:
' 1. Verify that:
' * specified part,
' * SOLIDWORKS MBD 3D PDF theme, and
' * c:\temp exist.
' 2. Open the Immediate window.
'
' Postconditions:
' 1. Opens the specified part.
' 2. Gets the MBD3DPdfData object.
' 3. Sets the path and file name for the SOLIDWORKS MBD 3D PDF.
' 4. Sets to display SOLIDWORKS MBD 3D PDF after publishing.
' 5. Sets the theme for the SOLIDWORKS MBD 3D PDF.
' 6. Sets standard views for the SOLIDWORKS MBD 3D PDF.
' 7. Creates and sets custom views for the SOLIDWORKS MBD 3D PDF.
' 8. Gets the text and custom properties from the specified
' theme for the SOLIDWORKS MBD 3D PDF and sets the custom
' property names.
' 9. Creates the SOLIDWORKS MBD 3D PDF.
' 10. Examine the Immediate window and c:\temp\MBDPart1.PDF.
'
' NOTE: Because the part is used elsewhere, do not save changes.
'---------------------------------------------------------------
Imports SolidWorks.Interop.sldworks
Imports SolidWorks.Interop.swconst
Imports System.Runtime.InteropServices
Imports System
Imports System.Diagnostics
Partial Class SolidWorksMacro
Public Sub main()
Dim swModel As ModelDoc2
Dim swModelDocExt As ModelDocExtension
Dim swMBDPdfData As MBD3DPdfData
Dim swTextAndCustomProperty As TextAndCustomProperty
Dim fileName As String
Dim standardViews As Object
Dim viewIDs(2) As Integer
Dim viewNames(1) As String
Dim textAndCustomProperties As Object
Dim nbrTextAndCustomProperties As Integer
Dim status As Integer
Dim errors As Integer
Dim warnings As Integer
Dim custProp As String
Dim i As Integer
fileName = "C:\temp\box.sldprt"
swModel = swApp.OpenDoc6(fileName, swDocumentTypes_e.swDocPART, swOpenDocOptions_e.swOpenDocOptions_Silent, "", errors, warnings)
swModelDocExt = swModel.Extension
'Get MBD3DPdfData object
swMBDPdfData = swModelDocExt.GetMBD3DPdfData
'Set path and file name for SOLIDWORKS MBD 3D PDF
swMBDPdfData.FilePath = "c:\temp\MBDPart1.PDF"
'Display SOLIDWORKS MBD 3D PDF
swMBDPdfData.ViewPdfAfterSaving = True
'Set SOLIDWORKS MBD 3D PDF theme
swMBDPdfData.ThemeName = "C:\Program Files\SolidWorks Corp\SOLIDWORKS\data\themes\simple part (a4, portrait)\theme.xml"
'Set standard views for SOLIDWORKS MBD 3D PDF
viewIDs(0) = swStandardViews_e.swFrontView
viewIDs(1) = swStandardViews_e.swTopView
viewIDs(2) = swStandardViews_e.swDimetricView
standardViews = viewIDs
swMBDPdfData.SetStandardViews(standardViews)
'Create and set custom views for SOLIDWORKS MBD 3D PDF
swModel.NameView("CustomView1")
swModel.NameView("CustomView2")
viewNames(0) = "CustomView1"
viewNames(1) = "CustomView2"
swMBDPdfData.SetMoreViews(viewNames)
'Get text and custom properties from theme for SOLIDWORKS MBD
'3D PDF
textAndCustomProperties = swMBDPdfData.GetTextAndCustomProperties
If Not IsNothing(textAndCustomProperties) Then
nbrTextAndCustomProperties = UBound(textAndCustomProperties)
Debug.Print("Text and custom properties from theme:")
For i = 0 To nbrTextAndCustomProperties
swTextAndCustomProperty = textAndCustomProperties(i)
If swTextAndCustomProperty.IsCustomProperty = False Then
Debug.Print(" Text:")
Debug.Print(" Description: " & swTextAndCustomProperty.Description)
Debug.Print(" Field name: " & swTextAndCustomProperty.Name)
Else
Debug.Print(" Custom property:")
custProp = "CustomProperty " + CStr(i)
swTextAndCustomProperty.CustomPropertyName = custProp
Debug.Print(" Custom property name: " & swTextAndCustomProperty.CustomPropertyName)
Debug.Print(" Description: " & swTextAndCustomProperty.Description)
Debug.Print(" Field name: " & swTextAndCustomProperty.Name)
Debug.Print(" Value: " & swTextAndCustomProperty.Value)
End If
Next i
Else
Debug.Print("No text or custom properties in theme.")
End If
'Create SOLIDWORKS MBD 3D PDF
status = swModelDocExt.PublishTo3DPDF(swMBDPdfData)
Debug.Print("Status of publishing part to SOLIDWORKS MBD 3D PDF (0 = success): " & status)
End Sub
''' <summary>
''' The SldWorks swApp variable is pre-assigned for you.
''' </summary>
Public swApp As SldWorks
End Class