C#ATIA

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

画面を原寸大にする1

もう忙しすぎてヘトヘトです。

こちらちょっと面白そうです。
Command Line Camera.dump Height and Width in API? - Autodesk Community

確かに2DのCADの場合は、画面の表示を原寸大にするコマンドが
有ったりしますよね。

調べるためにちょこっと作ったスクリプトです。

# 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

        vp: adsk.core.Viewport = app.activeViewport
        dumpmsg(f'viewport {vp.width} x {vp.height}')

        cam: adsk.core.Camera = vp.camera  
        dumpmsg(f'cam.viewExtents {cam.viewExtents}')
        dumpmsg(f'ratio {cam.viewExtents / vp.height}-{vp.height / cam.viewExtents}')

        ratio = 0.26458333333333
        p0 = adsk.core.Point3D.create(0,0,0)
        p5 = adsk.core.Point3D.create(5,0,0)
        m0 = vp.modelToViewSpace(p0)
        m5 = vp.modelToViewSpace(p5)
        dist = m0.distanceTo(m5)
        dumpmsg(f'ViewSpace Dist {dist}-{dist * ratio}')

        tk = Tk()
        monitor_height = tk.winfo_screenheight()
        monitor_width = tk.winfo_screenwidth()
        dumpmsg(f'width x height = {monitor_width} x {monitor_height} (pixels)')

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

def dumpmsg(s):
    adsk.core.Application.get().log(s)
    print(s)

念の為ですが、全く役に立たないです。

感じた事です。
・ディスプレイの解像度情報は要らないんじゃないのかな?
・Viewport.heightが3D空間サイズに影響している。(widthは無関係)
・Camera.viewExtentsが3D空間サイズを決定させている。
・Viewport.modelToViewSpaceでピクセル値・・・かな?
・平面・正面・側面方向とかじゃないと原寸大って難しいような・・・。

ピクセル値とviewExtentsの関係式作って、調整すれば可能じゃないのかな?
ちっ違うかな?

画面のズームを殺すには、イベント利用すれば出来るはず。