From febbb0efdb4afe71e298ce5548c784e02a1de1ae Mon Sep 17 00:00:00 2001 From: pgp Date: Thu, 15 May 2025 16:15:40 +0200 Subject: [PATCH] maj --- Align_View_to_Face.FCMacro | 87 ++++++++++++++++++++++++++++ Align_View_to_Face.FCMacro.manifest | 4 ++ Macro_Align_View_to_Face.png | Bin 0 -> 16057 bytes MultiExport.FCMacro | 2 +- 4 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 Align_View_to_Face.FCMacro create mode 100644 Align_View_to_Face.FCMacro.manifest create mode 100644 Macro_Align_View_to_Face.png diff --git a/Align_View_to_Face.FCMacro b/Align_View_to_Face.FCMacro new file mode 100644 index 0000000..973f99f --- /dev/null +++ b/Align_View_to_Face.FCMacro @@ -0,0 +1,87 @@ +# -*- coding: utf-8 -*- +# Set the current view perpendicular to the selected line +# Place la vue perpendiculairement a la line selectionnee +# 2013 Jonathan Wiedemann, +# 2016 Werner Mayer, +# 2022 tchernomax, https://forum.freecadweb.org/viewtopic.php?p=630019#p630019 +# 2023 FreeCutter, modifications towards linked objects like in workbench Assembly 4 , https://forum.freecad.org/viewtopic.php?p=718516#p718516 +# +__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.1" +__date__ = "2023/11/12" #YYYY/MM/DD + +from pivy import coin + +import FreeCAD as app +import FreeCADGui as gui + +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 + +def get_selection_and_turn_view(): + doc = app.activeDocument() + if doc is None: + app.Console.PrintWarning('Align_view_to_face: No file open, nothing to do\n') + return + + selection = gui.Selection.getSelectionEx('', 0) # Returns a vector of selection objects + + if not selection: + app.Console.PrintWarning('Align_view_to_face: Nothing selected, nothing to do\n') + return + + cam = FreeCADGui.ActiveDocument.ActiveView.getCameraNode() + + ''' used to understand the 'getSelection' results + for selection_object in selection: + object_ = selection_object.Object + sub_fullpaths = selection_object.SubElementNames + if not sub_fullpaths: + # An object is selected, not a face, edge, vertex. + print(object_.Name) + for sub_fullpath in sub_fullpaths: + # One or more subelements are selected. + print(object_.Name, sub_fullpath) + ''' + + sel = selection[0] + face = sel.SubObjects[0] + if face.Area == 0: # trying to avoid errors due to wrong selected objects + app.Console.PrintWarning('Align_view_to_face: Please select a face - not an edge or vertex\n') + return + dir = face.normalAt(0,0) + + 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") + app.Console.PrintWarning('Align_view_to_face: Done\n') + +if __name__ == '__main__': + get_selection_and_turn_view() \ No newline at end of file diff --git a/Align_View_to_Face.FCMacro.manifest b/Align_View_to_Face.FCMacro.manifest new file mode 100644 index 0000000..4ff6991 --- /dev/null +++ b/Align_View_to_Face.FCMacro.manifest @@ -0,0 +1,4 @@ +[ + "/home/pgp/.var/app/org.freecad.FreeCAD/data/FreeCAD/Macro/MultiExport-FreeCAD/Macro_Align_View_to_Face.png", + "/home/pgp/.var/app/org.freecad.FreeCAD/data/FreeCAD/Macro/MultiExport-FreeCAD/Align_View_to_Face.FCMacro" +] \ No newline at end of file diff --git a/Macro_Align_View_to_Face.png b/Macro_Align_View_to_Face.png new file mode 100644 index 0000000000000000000000000000000000000000..657340ac24ac65283549e3b7c8cfb1a0a763dbc5 GIT binary patch literal 16057 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 literal 0 HcmV?d00001 diff --git a/MultiExport.FCMacro b/MultiExport.FCMacro index 665a47f..3d1387c 100755 --- a/MultiExport.FCMacro +++ b/MultiExport.FCMacro @@ -4,7 +4,7 @@ import FreeCADGui import Draft import os import Mesh -from PySide2.QtWidgets import QWidget, QLabel, QSpinBox, QHBoxLayout, QListWidgetItem +from PySide.QtWidgets import QWidget, QLabel, QSpinBox, QHBoxLayout, QListWidgetItem from datetime import datetime