| Descrizione |
|---|
| Zoom 1:1 per visualizzare gli oggetti sullo schermo alle loro dimensioni reali. Versione macro: 1.1 Ultima modifica: 05-03-2025 Versione FreeCAD: Python3+ Download: ToolBar Icon Autore: TheMarkster |
| Autore |
| TheMarkster |
| Download |
| ToolBar Icon |
| Link |
| Raccolta di macro Come installare le macro Personalizzare la toolbar |
| Versione macro |
| 1.1 |
| Data ultima modifica |
| 05-03-2025 |
| Versioni di FreeCAD |
| Python3+ |
| Scorciatoia |
| Nessuna |
| Vedere anche |
| Nessuno |
Ingrandisce l'immagine in modo che gli oggetti appaiano sullo schermo nelle loro dimensioni reali. Ad esempio, si dovrebbe essere in grado di misurare un cubo da 100 mm e rilevare una misura di 100 mm appoggiando un righello allo schermo.
Eseguire la macro per ingrandire la visualizzazione fino alle dimensioni reali degli oggetti. A volte, a causa di limitazioni di Qt, le informazioni hardware fornite alla macro potrebbero risultare errate (ad esempio, la larghezza dello schermo in millimetri). Per questi casi è disponibile una finestra di dialogo per la calibrazione. Per visualizzarla, tenere premuto il tasto Ctrl mentre si esegue la macro. Verrà creato un cubo temporaneo di 100 mm. Misurare il cubo visualizzato sullo schermo con un righello o un calibro e inserire le misure (in mm) nella finestra di dialogo; il sistema calcolerà il parametro di correzione appropriato per il tuo hardware.
Questo parametro di regolazione è memorizzato nei parametri utente in Plugins/Zoom1_1_Macro/Tweak.
La dimensione dello schermo (della vista MDI, ovvero la vista 3D) viene ricavata da Qt in millimetri. L'altezza della telecamera viene quindi impostata sul valore minore tra la larghezza e l'altezza dello schermo. Ad esempio, se le dimensioni dello schermo sono 800 x 600, l'altezza della telecamera viene fissata a 600 unità sopra la scena.
Bisogna prestare attenzione quando si avvicinano oggetti allo schermo o si tenta di misurare qualcosa su di esso, per evitare di graffiarne fisicamente la superficie.
Zoom1_1.FCMacro
# -*- coding: utf-8 -*-
#Zoom 1:1 macro
#2021, by <TheMarkster>, based on work of kisolre
#Attempts to zoom 3D view such that objects on the screen
#appear to be their actual size
#For example, a 100mm cube should measure 100mm on your screen
#This relies on information provided by Qt about the underlying
#hardware, which Qt admits is not always reliable
#Thus we have a Tweak parameter to workaround such cases.
#Press Ctrl key while executing the macro to bring up the
#calibration dialog and set the tweak for your hardware.
import FreeCAD, FreeCADGui
from PySide import QtGui, QtCore
from pivy import coin
__version__ = "1.1"
def zoomActual(tweak=1.0):
gv = av.graphicsView()
height = gv.heightMM()
width = gv.widthMM()
node = av.getCameraNode()
node.height.setValue(tweak*min(width,height))
doc = FreeCAD.ActiveDocument
if not doc:
doc = FreeCAD.newDocument()
FreeCAD.Console.PrintMessage("No document, creating one.\n")
av = FreeCADGui.activeView()
pg = FreeCAD.ParamGet("User parameter:Plugins/Zoom1_1_Macro")
tweak = pg.GetFloat("Tweak",1.0)
if hasattr(av,"graphicsView") and hasattr(av.getCameraNode(),"height"):
zoomActual(tweak)
modifiers = QtGui.QApplication.keyboardModifiers()
if modifiers == QtCore.Qt.ControlModifier:
visible = [obj for obj in doc.Objects if hasattr(obj,"ViewObject") and obj.ViewObject.Visibility == True]
for obj in doc.Objects:
if hasattr(obj,"ViewObject"):
obj.ViewObject.Visibility = False
cube = doc.addObject("Part::Box","TemporaryCalibrationCube")
cube.Length = cube.Height = cube.Width = 100
cube.ViewObject.DisplayMode = "Shaded"
av.viewFront()
doc.recompute()
zoomActual(1.0)
text = "\
Calibration dialog\n\
\n\
A temporary 100x100x100 mm cube has been created for this\n\
calibration. Measure this cube and enter your measurements.\n\
A tweak value will be calculated based on what you enter and \n\
will be stored in user parameters / Plugins / Zoom1_1_Macro\n\
\n\
You can move this dialog if necessary, but be sure not to zoom\n\
in or out before measuring the cube. If the cube does not fit\n\
cancel this dialog, resize the 3D view, and try again.\n\
\n\
Enter measured Cube Width or Height (in MM):\n"
win = FreeCADGui.getMainWindow()
title = "Zoom1_1 macro v"+__version__
dlg = QtGui.QInputDialog()
usertweak,ok = dlg.getDouble(win,title,text,100.0)
doc.removeObject(cube.Name)
for obj in visible:
obj.ViewObject.Visibility = True
if not ok:
FreeCAD.Console.PrintMessage("Canceled, keeping current tweak value\n")
else:
tweak = usertweak/100.0
pg.SetFloat("Tweak", tweak)
zoomActual(tweak)
FreeCAD.Console.PrintMessage("Zoom 1:1 macro -- Ctrl + execute to calibrate, if necessary\n")
FreeCAD.Console.PrintMessage("Tweak = "+str(tweak)+"\n")
elif not hasattr(av.getCameraNode(),"height"):
FreeCAD.Console.PrintError("Error: Only orthographic camera types are supported.\n")
else:
FreeCAD.Console.PrintError("Error acquiring QGraphicsView. You might need to update your version of FreeCAD.\n")