Macro Align View to Face/cs: Difference between revisions
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''' |
||
{{ |
{{MacroCode|code= |
||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
Revision as of 09:43, 23 May 2020
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 |
Makro recepty| Jak nainstalovat makra Jak přizpůsobit panely nástrojů |
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
- Vyberte objekt na objektu
- Spusťte makro
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 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")