AnsweredAssumed Answered

Zoom the screen 1:1

Question asked by Eric Snyder on Aug 3, 2018
Latest reply on Dec 18, 2019 by Paine Zeng

There are other posts about this general issue, both in the Solidworks forum and at other places. I have been using those as a guide.

The kind of work we do needs to be viewed and considered in real size. We have need to calibrate the screen display of the part or assembly to 1:1 display on screen. The way that people solve this is to use modelView.Scale2 to manipulate the screen display. The code is simple:


Option Explicit

Sub main()

    Dim swApp As SldWorks.SldWorks

    Dim swModel As SldWorks.ModelDoc2

    Dim swModView As SldWorks.modelView


    Set swApp = Application.SldWorks

    Set swModel = swApp.ActiveDoc

    Set swModView = swModel.ActiveView


    swModView.Scale2 = 1




End Sub


The procedure is:

Draw a 10" line.

Run the macro

Measure the line length on screen (Say the line is 13")

Change the line to swModView.Scale2 = 10 / 13


This procedure is working fine but has one limitation:


You have to use the macro with your app sized to the same size as it was calibrated at. If you resize the Solidworks windows then the result will be wrong.



We are having a weird issue though. On one workstation locally the scale number keeps needing to change for some reason. We recalibrate the macro and it is good for a while and then the operator does something like opening a different file or perhaps closes and reopens Solidworks and suddenly the calibration is not accurate anymore. We have not been able to track that event down. The operator is using the macro with the app maximized (same way it was calibrated) to make sure that the window being the wrong size is not the issue.


A few questions...

1) What might be causing the one workstation to be changing in a seeming random way where it works reliably with the others?

2) Is there a better way that does not depend on calibrating with the application window always at the same size?


It would be easy to enter the pixel number for the width of the screen (1920 or whatever the resolution is) and enter an actual measurement of the screen width. The scale2 function just seems to be somewhat arbitrary. I am not opposed to an app from rather than VBA in order to use some windows API that might not be available in VBA.


Any help would be appreciated. This seems like a common issue out there.