1 Reply Latest reply on Aug 12, 2015 2:24 AM by Sean Fan

    PV360  swRayTraceRenderOptions.ContourEnabled NOT working from Solidworks 2012 to 2015

    Sean Fan

      Hi,

      I need to render hundreds of full colour JPG for website as well as contour only images for printed instructions.

      so I used this macro which is pretty much a slightly modified version of the official api online example.

      I intented to call this fuction a coule of times, and use Contour Options to alter the render result.

      the debug line prints parameter as expected, but the parameter has no influence on the render result.

       

      Is this a bug or my mistake?

      apreciate your help

       

      Sub swRenderImage(ImageHeight, ImageWidth As Integer, ImageFormat As Integer, ContourOption As Boolean, Suffix As String)
      Dim swRayTraceRenderer As SldWorks.RayTraceRenderer
      Dim swRayTraceRenderOptions As SldWorks.RayTraceRendererOptions
      Dim Errors As Long
      Dim Warnings As Long
      Dim sfile As String 'dim source file
      Dim tfile As String 'dim target file
      Dim status As Boolean
      'Set swApp = Application.SldWorks
      'Set swModel = swApp.ActiveDoc
      'OpenDoc6(sfile, swDocPART, swOpenDocOptions_Silent, "", errors, warnings)
      ' Access PhotoView 360
      Set swRayTraceRenderer = swApp.GetRayTraceRenderer(swPhotoView)
      ' Get and set rendering options
      Set swRayTraceRenderOptions = swRayTraceRenderer.RayTraceRendererOptions
      'Get current rendering values
      Debug.Print "Current rendering values"
      Debug.Print "  ImageHeight          = " & swRayTraceRenderOptions.ImageHeight
      Debug.Print "  ImageWidth           = " & swRayTraceRenderOptions.ImageWidth
      Debug.Print "  ImageFormat          = " & swRayTraceRenderOptions.ImageFormat
      Debug.Print "  PreviewRenderQuality = " & swRayTraceRenderOptions.PreviewRenderQuality
      Debug.Print "  FinalRenderQuality   = " & swRayTraceRenderOptions.FinalRenderQuality
      Debug.Print "  BloomEnabled         = " & swRayTraceRenderOptions.BloomEnabled
      Debug.Print "  BloomThreshold       = " & swRayTraceRenderOptions.BloomThreshold
      Debug.Print "  BloomRadius          = " & swRayTraceRenderOptions.BloomRadius
      Debug.Print "  ContourEnabled       = " & swRayTraceRenderOptions.ContourEnabled
      Debug.Print "  ShadedContour        = " & swRayTraceRenderOptions.ShadedContour
      Debug.Print "  ContourLineThickness = " & swRayTraceRenderOptions.ContourLineThickness
      Debug.Print "  ContourLineColor     = " & swRayTraceRenderOptions.ContourLineColor
      Debug.Print " "
      ' Change rendering values
      Debug.Print "New rendering values"
      swRayTraceRenderOptions.UseSolidWorksViewAspectRatio = False
      swRayTraceRenderOptions.UseSceneBackgroundImageAspectRatio = False
      swRayTraceRenderOptions.ImageHeight = ImageHeight
      Debug.Print "  ImageHeight          = " & swRayTraceRenderOptions.ImageHeight
      swRayTraceRenderOptions.ImageWidth = ImageWidth
      Debug.Print "  ImageWidth           = " & swRayTraceRenderOptions.ImageWidth
      swRayTraceRenderOptions.ImageFormat = ImageFormat
      Debug.Print "  ImageFormat          = " & swRayTraceRenderOptions.ImageFormat
      swRayTraceRenderOptions.PreviewRenderQuality = swRenderQuality_Good
      Debug.Print "  PreviewRenderQuality = " & swRayTraceRenderOptions.PreviewRenderQuality
      swRayTraceRenderOptions.FinalRenderQuality = swRenderQuality_Best
      Debug.Print "  FinalRenderQuality   = " & swRayTraceRenderOptions.FinalRenderQuality
      'BloomOption
      swRayTraceRenderOptions.BloomEnabled = False
      Debug.Print "  BloomEnabled         = " & swRayTraceRenderOptions.BloomEnabled
      swRayTraceRenderOptions.BloomThreshold = 70
      Debug.Print "  BloomThreshold       = " & swRayTraceRenderOptions.BloomThreshold
      swRayTraceRenderOptions.BloomRadius = 4
      Debug.Print "  BloomRadius          = " & swRayTraceRenderOptions.BloomRadius
      'ContourOption ( I think setting contour Options reset Shaded Contour option )
             
            swRayTraceRenderOptions.ContourEnabled = ContourOption
             Debug.Print "  ContourEnabled       = " & swRayTraceRenderOptions.ContourEnabled
          ' it seems this is not working in 2012
             
            swRayTraceRenderOptions.ShadedContour = False
            Debug.Print "  ShadedContour        = " & swRayTraceRenderOptions.ShadedContour
            
      swRayTraceRenderOptions.ContourLineThickness = 5
      Debug.Print "  ContourLineThickness = " & swRayTraceRenderOptions.ContourLineThickness
      swRayTraceRenderOptions.ContourLineColor = RGB(0, 0, 0)
      Debug.Print "  ContourLineColor     = " & swRayTraceRenderOptions.ContourLineColor
      ' Display the preview window
      'status = swRayTraceRenderer.DisplayPreviewWindow
      ' Close render
      'status = swRayTraceRenderer.CloseRayTraceRender
      If ContourOption = True Then
      ' Invoke final render window
       status = swRayTraceRenderer.InvokeFinalRender
      End If
      ' Abort final render window
      'status = swRayTraceRenderer.AbortFinalRender
      ' Render to  format
      Dim FSO As FileSystemObject
      Set FSO = CreateObject("Scripting.FileSystemObject")
      Debug.Print FSO.GetBaseName(sfile)
      Debug.Print FSO.GetFileName(sfile)
      Debug.Print FSO.GetParentFolderName(sfile)
      'Assign a Target File Name
      sfile = swModel.GetPathName
      tfile = FSO.GetParentFolderName(sfile) & "\" & FSO.GetBaseName(sfile) & Suffix
      Debug.Print "Target = " & tfile
      status = swRayTraceRenderer.RenderToFile(tfile, 0, 0)
      
      Set swRayTraceRenderOptions = Nothing
      ' Close render
      status = swRayTraceRenderer.CloseRayTraceRender
      End Sub