Macro Align View to Face/cs: Difference between revisions

From FreeCAD Documentation
mNo edit summary
(Updating to match new version of source page)
Line 16: Line 16:
Toto makro otočí aktuální pohled na bod kolmo na vybranou plochu existujícího objektu.
Toto makro otočí aktuální pohled na bod kolmo na vybranou plochu existujícího objektu.


<div class="mw-translate-fuzzy">
== Jak používat ==
== Jak používat ==
# Vyberte objekt na objektu
# Vyberte objekt na objektu
# Spusťte makro
# Spusťte makro
</div>


==Script==
==Script==
Line 25: Line 27:


'''Macro_Align_View_to_Face.FCMacro'''
'''Macro_Align_View_to_Face.FCMacro'''
{{Code|code=
{{MacroCode|code=


# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-

Revision as of 09:43, 23 May 2020

Macro Align View to Face

Popis
This macro aligns the current view to a selected face

Version macro : 1.0
Date last modification : 2014-03-12
FreeCAD version : All
Download : ToolBar Icon
Autor: Rockn
Autor
Rockn
Download
ToolBar Icon
Odkazy
Verze
1.0
Datum poslední úpravy
2014-03-12
Verze FreeCAD
All
Výchozí zástupce
None
Viz též
None

Popis

Toto makro otočí aktuální pohled na bod kolmo na vybranou plochu existujícího objektu.

Jak používat

  1. Vyberte objekt na objektu
  2. Spusťte makro

Script

ToolBar Icon

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

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

s=Gui.Selection.getSelectionEx()
obj=s[0]
faceSel = obj.SubObjects[0]
dir = faceSel.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))

cam.orientation.setValue(rot.Q)
Gui.SendMsgToActiveView("ViewSelection")