C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

画面を原寸大にする5

こちらの続きです。
画面を原寸大にする4 - C#ATIA

多くの方に試して頂いて、ありがたい限りです。

DPIの数値だけが原因じゃないような・・・。
もう一つネックになる部分が、Viewport.camera.viewExtentsです。
画面のズーム率と言いますか、3D空間の見える範囲のプロパティです。
Fusion 360 Help
試した所、球体の半径と書いてありますね。

φ100の円をスケッチに描き、ズームさせ画面ぴったりになるか
どうかをテストしました。

# Fusion360API Python script

import traceback
import adsk.fusion
import adsk.core

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

        skt: adsk.fusion.Sketch = root.sketches.add(
            root.xYConstructionPlane
        )

        skt.sketchCurves.sketchCircles.addByCenterRadius(
            adsk.core.Point3D.create(0,0,0),
            10 * 0.5,
        )
        sels: adsk.core.Selections = ui.activeSelections
        sels.clear()
        sels.add(skt)
        app.executeTextCommand(u'Commands.Start SketchActivate') 

        vp: adsk.core.Viewport = app.activeViewport
        vp.fit()
        cam: adsk.core.Camera = vp.camera 
        cam.target = adsk.core.Point3D.create(0,0,0)
        cam.viewExtents = 100 * 0.8 # <-ここ!!!
        vp.camera = cam
        vp.refresh()

    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))

φ100の円に対し、cam.viewExtentsは80でピッタリでした。

ん?スケッチの単位はCmだけどviewExtentsの半径の単位は何だろう?