Macro Align View to Face/fr: Difference between revisions
No edit summary |
(Updating to match new version of source page) |
||
Line 1: | Line 1: | ||
<languages/> |
<languages/> |
||
<div class="mw-translate-fuzzy"> |
|||
{{Macro/fr |
{{Macro/fr |
||
|Name=Macro Align View to Face |
|Name=Macro Align View to Face |
||
Line 11: | Line 12: | ||
|Download=[https://www.freecadweb.org/wiki/images/d/d7/Macro_Align_View_to_Face.png Icône de la barre d'outils] |
|Download=[https://www.freecadweb.org/wiki/images/d/d7/Macro_Align_View_to_Face.png Icône de la barre d'outils] |
||
}} |
}} |
||
</div> |
|||
==Description== |
==Description== |
||
Line 31: | Line 33: | ||
# Set the current view perpendicular to the selected face |
# Set the current view perpendicular to the selected face |
||
# Place la vue perpendiculairement a la face selectionnee |
# Place la vue perpendiculairement a la face selectionnee |
||
# 2013 Jonathan Wiedemann, |
# 2013 Jonathan Wiedemann, |
||
# 2016 Werner Mayer, |
|||
# 2022 tchernomax, https://forum.freecadweb.org/viewtopic.php?p=630019#p630019 |
|||
# |
|||
__title__ = "Align_View_to_Face" |
|||
__author__ = "Jonathan Wiedemann (Rockn)" |
|||
__url__ = "https://www.freecadweb.org/" |
|||
__Wiki__ = "https://wiki.freecadweb.org/Macro_Align_View_to_Face" |
|||
__version__ = "3.0" |
|||
__date__ = "2022/10/08" #YYYY/MM/DD |
|||
# |
|||
from pivy import coin |
from pivy import coin |
||
Line 56: | Line 67: | ||
return App.Placement(rot).Rotation |
return App.Placement(rot).Rotation |
||
sel=Gui.Selection.getSelectionEx()[0] |
|||
obj= |
obj=sel.Object |
||
face=sel.SubObjects[0] |
|||
dir = |
dir = face.normalAt(0,0) |
||
cam = FreeCADGui.ActiveDocument.ActiveView.getCameraNode() |
cam = FreeCADGui.ActiveDocument.ActiveView.getCameraNode() |
||
Line 69: | Line 80: | ||
rot = pointAt(dir, App.Vector(0.0,0.0,1.0)) |
rot = pointAt(dir, App.Vector(0.0,0.0,1.0)) |
||
def computeRotation(obj): |
|||
⚫ | |||
if not obj.Parents: |
|||
# the object has no parent |
|||
return obj.Placement.Rotation |
|||
# the object has parent |
|||
# we compute the rotation of it's parent and multiply it with it's rotation |
|||
return parentRotate(obj.Parents[0][0]).multiply(obj.Placement.Rotation) |
|||
if obj.Parents: |
|||
obj_par = obj.Parents[0][0] |
|||
rot_par = computeRotation(obj_par) |
|||
cam.orientation.setValue(rot_par.multiply(rot).Q) |
|||
else: |
|||
⚫ | |||
Gui.SendMsgToActiveView("ViewSelection") |
Gui.SendMsgToActiveView("ViewSelection") |
||
Revision as of 09:51, 8 October 2022
Description |
---|
Cette macro aligne la vue en cours sur la face sélectionnée Version macro : 2.0 Date dernière modification : 2016-03-06 Version FreeCAD : Toutes Téléchargement : Icône de la barre d'outils Auteur: Rockn |
Auteur |
Rockn |
Téléchargement |
Icône de la barre d'outils |
Liens |
Page des macros Comment installer une macro Comment créer une barre d'outils |
Version Macro |
2.0 |
Dernière modification |
2016-03-06 |
Version(s) FreeCAD |
Toutes |
Raccourci clavier |
None |
Voir aussi |
None |
Description
Cette macro fait pivoter la vue en courspour la faire pointer perpendiculairement sur une face sélectionnée d'un objet existant.
Utilisation
- Sélectionnez la face d'un objet
- Lancez la macro
Script
Macro_Align_View_to_Face.FCMacro
# -*- coding: utf-8 -*- # Set the current view perpendicular to the selected face # Place la vue perpendiculairement a la face selectionnee # 2013 Jonathan Wiedemann, # 2016 Werner Mayer, # 2022 tchernomax, https://forum.freecadweb.org/viewtopic.php?p=630019#p630019 # __title__ = "Align_View_to_Face" __author__ = "Jonathan Wiedemann (Rockn)" __url__ = "https://www.freecadweb.org/" __Wiki__ = "https://wiki.freecadweb.org/Macro_Align_View_to_Face" __version__ = "3.0" __date__ = "2022/10/08" #YYYY/MM/DD # from pivy import coin def pointAt(normal, up): z = normal y = up x = y.cross(z) y = z.cross(x) rot = App.Matrix() rot.A11 = x.x rot.A21 = x.y rot.A31 = x.z rot.A12 = y.x rot.A22 = y.y rot.A32 = y.z rot.A13 = z.x rot.A23 = z.y rot.A33 = z.z return App.Placement(rot).Rotation sel=Gui.Selection.getSelectionEx()[0] obj=sel.Object face=sel.SubObjects[0] dir = face.normalAt(0,0) cam = FreeCADGui.ActiveDocument.ActiveView.getCameraNode() if dir.z == 1 : rot = pointAt(dir, App.Vector(0.0,1.0,0.0)) elif dir.z == -1 : rot = pointAt(dir, App.Vector(0.0,1.0,0.0)) else : rot = pointAt(dir, App.Vector(0.0,0.0,1.0)) def computeRotation(obj): if not obj.Parents: # the object has no parent return obj.Placement.Rotation # the object has parent # we compute the rotation of it's parent and multiply it with it's rotation return parentRotate(obj.Parents[0][0]).multiply(obj.Placement.Rotation) if obj.Parents: obj_par = obj.Parents[0][0] rot_par = computeRotation(obj_par) cam.orientation.setValue(rot_par.multiply(rot).Q) else: cam.orientation.setValue(rot.Q) Gui.SendMsgToActiveView("ViewSelection")