@jkotowicz1 .
We tried our hand at "displaying at full size".
The following script creates a sketch in a new document, draws a rectangle of 50 mm on each side, and displays it full-size.
# Fusion360API Python script
import traceback
import adsk.fusion
import adsk.core
from tkinter import *
def run(context):
ui = adsk.core.UserInterface.cast(None)
try:
app: adsk.core.Application = adsk.core.Application.get()
ui = app.userInterface
app.documents.add(adsk.core.DocumentTypes.FusionDesignDocumentType)
des: adsk.fusion.Design = app.activeProduct
root: adsk.fusion.Component = des.rootComponent
# sketch
skt: adsk.fusion.Sketch = root.sketches.add(
root.xYConstructionPlane
)
skt.sketchCurves.sketchLines.addTwoPointRectangle(
adsk.core.Point3D.create(-2.5,-2.5,0),
adsk.core.Point3D.create(2.5,2.5,0),
)
# full size
execFullSize()
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
def execFullSize():
validation_Length = 254
app: adsk.core.Application = adsk.core.Application.get()
ui: adsk.core.UserInterface = app.userInterface
def get_dpi():
screen = Tk()
return screen.winfo_fpixels('1i')
def getViewLength():
app: adsk.core.Application = adsk.core.Application.get()
vp: adsk.core.Viewport = app.activeViewport
p0 = adsk.core.Point3D.create(0,0,0)
p1 = adsk.core.Point3D.create(validation_Length*0.1,0,0)
m0 = vp.modelToViewSpace(p0)
m1= vp.modelToViewSpace(p1)
return m0.distanceTo(m1)
def dumpmsg(s):
adsk.core.Application.get().log(s)
print(s)
try:
vp: adsk.core.Viewport = app.activeViewport
cam: adsk.core.Camera = vp.camera
cam.eye = adsk.core.Point3D.create(0,0,1)
cam.target = adsk.core.Point3D.create(0,0,0)
cam.upVector = adsk.core.Vector3D.create(0,1,0)
cam.cameraType = adsk.core.CameraTypes.OrthographicCameraType
vp.camera = cam
vp.refresh()
pixel2millimeter = 25.4 / get_dpi()
dumpmsg(f'DPI {get_dpi()}')
dist = getViewLength()
dumpmsg(f'ViewSpace Dist {dist}-{dist * pixel2millimeter}')
viewLength = dist * pixel2millimeter
ratio = (viewLength / validation_Length) ** 2
cam = vp.camera
cam.viewExtents = cam.viewExtents * ratio
vp.camera = cam
vp.refresh()
dist = getViewLength()
dumpmsg(f'ViewSpace Dist {dist}-{dist * pixel2millimeter}')
dumpmsg('**')
except:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
Try running the script in Fusion360 with different window sizes.
It is displayed full-size on my PC at work, but a little smaller on my laptop at home. The cause is unknown.