Macro Select Hovering/fr: Difference between revisions
mNo edit summary |
mNo edit summary |
||
(27 intermediate revisions by 3 users not shown) | |||
Line 3: | Line 3: | ||
|Name=Macro Select Hovering |
|Name=Macro Select Hovering |
||
|Icon=Macro_Select_Hovering.png |
|Icon=Macro_Select_Hovering.png |
||
|Description=Cette macro sélectionne au choix Face, Bord, Sommet juste en survolant la souris sur les objets.<br/>PS: |
|Description=Cette macro sélectionne au choix Face, Bord, Sommet juste en survolant la souris sur les objets.<br/>PS : pour désélectionner une face (ou autre) cliquez sur le bouton {{KEY|Pause grab}} et utiliser la procédure standard : CTRL + Click |
||
|Author=Mario52 |
|Author=Mario52 |
||
|Version=00. |
|Version=00.04 |
||
|Date= |
|Date=2024-01-11 |
||
|FCVersion= |
|FCVersion=Toutes |
||
|Download=[https://www.freecadweb.org/wiki/images/d/d8/Macro_Select_Hovering.png |
|Download=[https://www.freecadweb.org/wiki/images/d/d8/Macro_Select_Hovering.png Icône de la barre d'outils] |
||
}} |
}} |
||
[[File:Select_Hovering00.gif|Macro Select Hovering]] |
|||
[[File:Macro Select Hovering 00.png|Macro Select Hovering]] |
|||
==Description== |
==Description== |
||
Cette macro sélectionne au choix Face, Edge, Vertex se trouvant sous la souris. |
|||
PS: Pour désélectionner une face (ou autre) cliquez sur le bouton {{KEY|Pause grab}} et utiliser la procédure standard : CTRL + Click |
|||
[[File:Select_Hovering00.gif|Macro Select Hovering]] |
|||
==Utilisation== |
|||
Survoler l'objet avec la souris |
|||
===Icône=== |
|||
L'icône doit être copiée dans le même répertoire que la macro |
|||
==Script== |
|||
L'icône pour la barre d'outils [[File:Macro Select Hovering.png|Macro Select Hovering]] |
|||
'''Macro_Select_Hovering.FCMacro''' |
|||
{{Codeextralink|https://gist.githubusercontent.com/mario52a/7ebe6b3fd047441114d9d0e08ceddd63/raw/f9dea03a0327b48c76a7c3e9d7cd391b5093a8cf/Macro%2520Select%2520Hovering.FCMacro}} |
|||
{{MacroCode|code= |
|||
# -*- coding: utf-8 -*- |
|||
from __future__ import unicode_literals |
|||
# |
|||
""" |
|||
*************************************************************************** |
|||
* Copyright (c) 2017 2018 2019 2020 <mario52> * |
|||
* * |
|||
* This file is a supplement to the FreeCAD CAx development system. * |
|||
* * |
|||
* This program is free software; you can redistribute it and/or modify * |
|||
* it under the terms of the GNU Lesser General Public License (LGPL) * |
|||
* as published by the Free Software Foundation; either version 2 of * |
|||
* the License, or (at your option) any later version. * |
|||
* for detail see the LICENCE text file. * |
|||
* * |
|||
* This software is distributed in the hope that it will be useful, * |
|||
* but WITHOUT ANY WARRANTY; without even the implied warranty of * |
|||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * |
|||
* GNU Library General Public License for more details. * |
|||
* * |
|||
* You should have received a copy of the GNU Library General Public * |
|||
* License along with this macro; if not, write to the Free Software * |
|||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * |
|||
* USA * |
|||
*************************************************************************** |
|||
* WARNING! All changes in this file will be lost and * |
|||
* may cause malfunction of the program * |
|||
*************************************************************************** |
|||
""" |
|||
# |
|||
#Macro_ _01-25/12/2017 02-26/12/2017 03-26/12/2017 03b-28/10/2020 |
|||
# |
|||
#OS: Windows 10 |
|||
#Word size of OS: 64-bit |
|||
#Word size of FreeCAD: 64-bit |
|||
#Version: 0.16.6712 (Git) |
|||
#Build type: Release |
|||
#Branch: releases/FreeCAD-0-16 |
|||
#Hash: da2d364457257a7a8c6fb2137cea12c45becd71a |
|||
#Python version: 2.7.8 |
|||
#Qt version: 4.8.7 |
|||
#Coin version: 4.0.0a |
|||
#OCC version: 6.8.0.oce-0.17 |
|||
# |
|||
__title__ = "Macro_Select_Hovering" |
|||
__author__ = "Mario52" |
|||
__url__ = "http://www.freecadweb.org/index-fr.html" |
|||
__Wiki__ = "http://www.freecadweb.org/wiki/index.php?title=Macro_Select_Hovering" |
|||
__version__ = "00.03b" |
|||
__date__ = "28/10/2020" |
|||
import PySide |
|||
from PySide import QtGui ,QtCore |
|||
from PySide.QtGui import * |
|||
from PySide.QtCore import * |
|||
import Draft, Part, PartGui, FreeCADGui, FreeCAD |
|||
[[File:Macro Select Hovering 00.png|Macro Select Hovering]] |
|||
Gui = FreeCADGui |
|||
App = FreeCAD |
|||
PS : pour désélectionner une face (ou autre) cliquez sur le bouton {{KEY|Pause grab}} et utiliser la procédure standard : CTRL + Click |
|||
global ui ; ui = "" |
|||
global s ; s = "" |
|||
<span id="How_To_Use"></span> |
|||
try: |
|||
==Utilisation== |
|||
_fromUtf8 = QtCore.QString.fromUtf8 |
|||
except AttributeError: |
|||
def _fromUtf8(s): |
|||
return s |
|||
Survoler l'objet avec la souris. |
|||
try: |
|||
_encoding = QtGui.QApplication.UnicodeUTF8 |
|||
def _translate(context, text, disambig): |
|||
return QtGui.QApplication.translate(context, text, disambig, _encoding) |
|||
except AttributeError: |
|||
def _translate(context, text, disambig): |
|||
return QtGui.QApplication.translate(context, text, disambig) |
|||
====Section Face==== |
|||
class Ui_MainWindow(object): |
|||
{{CheckBox}} Select Face → 3 nombre de face(s) |
|||
def __init__(self, MainWindow): |
|||
{{LineEdit|300.0}} surface totale des sélections |
|||
self.window = MainWindow |
|||
{{LineEdit|100.0}} surface de la dernière face sélectionnée |
|||
################################################################################# |
|||
#self.path = FreeCAD.ConfigGet("AppHomePath") |
|||
#self.path = FreeCAD.ConfigGet("UserAppData") |
|||
#self.path = "your path" |
|||
param = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macro")# macro path |
|||
self.path = param.GetString("MacroPath","") + "/" # macro path |
|||
self.path = self.path.replace("\\","/") |
|||
# print( "Path for the icons : " , self.path) |
|||
################################################################################# |
|||
self.FontImpost = "Arial" |
|||
self.fontGlobal_08 = QtGui.QFont() # pour compatibilite Windows Linux |
|||
self.fontGlobal_08.setFamily(self.FontImpost) # pour compatibilite Windows Linux |
|||
self.fontGlobal_08.setPointSize(8.0) # pour compatibilite Windows Linux |
|||
#self.xxxx.setFont(self.fontGlobal_08) # pour W L |
|||
#self.xxxx.setFont(QtGui.QFont(self.FontImpost,weight=QtGui.QFont.Bold)) # Bold |
|||
################################################################################# |
|||
====Section Edge==== |
|||
self.comptFace = 0 |
|||
self.comptEdge = 0 |
|||
self.comptVertex = 0 |
|||
self.Stop_Grab = 1 |
|||
self.comptSurfaceFace = 0.0 |
|||
self.comptSurfaceTotal = 0.0 |
|||
self.comptLengthObject = 0.0 |
|||
self.comptLengthTotal = 0.0 |
|||
{{CheckBox}} Select Edge → 4 nombre de bord(s) sélectionné(s) |
|||
def setupUi(self, MainWindow): |
|||
{{LineEdit|40.0}} longueur totale des sélections |
|||
MainWindow.resize(197, 307) |
|||
{{LineEdit|10.0}} longueur de la dernière sélection |
|||
MainWindow.setMinimumSize(QtCore.QSize(197, 307)) |
|||
MainWindow.setMaximumSize(QtCore.QSize(197, 307)) |
|||
self.centralwidget = QtGui.QWidget(MainWindow) |
|||
self.centralwidget.setObjectName(_fromUtf8("centralwidget")) |
|||
====Section Vertex==== |
|||
self.GBOX_01_Face = QtGui.QGroupBox(self.centralwidget) |
|||
self.GBOX_01_Face.setGeometry(QtCore.QRect(10, 10, 176, 91)) |
|||
self.GBOX_01_Face.setFont(self.fontGlobal_08) # pour W L |
|||
self.GBOX_01_Face.setObjectName(_fromUtf8("GBOX_01_Face")) |
|||
{{CheckBox}} Select Vertex → 1 nombre de vertex |
|||
self.LE_02_Area_Object = QtGui.QLineEdit(self.GBOX_01_Face) |
|||
self.LE_02_Area_Object.setGeometry(QtCore.QRect(90, 60, 75, 20)) |
|||
self.LE_02_Area_Object.setFont(self.fontGlobal_08) # pour W L |
|||
self.LE_02_Area_Object.setObjectName(_fromUtf8("LE_02_Area_Object")) |
|||
====Section Main==== |
|||
self.LAB_05_Area_Object = QtGui.QLabel(self.GBOX_01_Face) |
|||
self.LAB_05_Area_Object.setGeometry(QtCore.QRect(90, 40, 71, 16)) |
|||
self.LAB_05_Area_Object.setFont(self.fontGlobal_08) # pour W L |
|||
self.LAB_05_Area_Object.setObjectName(_fromUtf8("LAB_05_Area_Object")) |
|||
Le titre affiche l'information de : |
|||
self.CB_01_Sel_Face = QtGui.QCheckBox(self.GBOX_01_Face) |
|||
*( Obj: 1 ) : nombre d'objet(s) sélectionné(s) |
|||
self.CB_01_Sel_Face.setGeometry(QtCore.QRect(10, 20, 91, 17)) |
|||
*( Sub: 8 ) : nombre de Sub objet(s) sélectionné(s) |
|||
self.CB_01_Sel_Face.setFont(self.fontGlobal_08) # pour W L |
|||
*( Tot: 9 ) : Somme de Obj + Sub |
|||
self.CB_01_Sel_Face.setObjectName(_fromUtf8("CB_01_Sel_Face")) |
|||
{{LineEdit|Unnamed: Box. Face6 (1.34,2.64,10.0)}} |
|||
self.LE_01_Area_Total = QtGui.QLineEdit(self.GBOX_01_Face) |
|||
self.LE_01_Area_Total.setGeometry(QtCore.QRect(10, 60, 75, 20)) |
|||
self.LE_01_Area_Total.setFont(self.fontGlobal_08) # pour W L |
|||
self.LE_01_Area_Total.setObjectName(_fromUtf8("LE_01_Area_Total")) |
|||
*Affiche une petite info sur les objets sous le curseur |
|||
self.LAB_01_Face = QtGui.QLabel(self.GBOX_01_Face) |
|||
self.LAB_01_Face.setGeometry(QtCore.QRect(110, 23, 56, 16)) |
|||
self.LAB_01_Face.setFont(self.fontGlobal_08) # pour W L |
|||
self.LAB_01_Face.setObjectName(_fromUtf8("LAB_01_Face")) |
|||
{{ComboBox|Unnamed: 1 : (8 sel.) (Obj. 1, Fa. 3, Ed. 4, Ve. 1) }} |
|||
self.LAB_04_Area_Total = QtGui.QLabel(self.GBOX_01_Face) |
|||
self.LAB_04_Area_Total.setGeometry(QtCore.QRect(10, 40, 56, 16)) |
|||
self.LAB_04_Area_Total.setFont(self.fontGlobal_08) # pour W L |
|||
self.LAB_04_Area_Total.setObjectName(_fromUtf8("LAB_04_Area_Total")) |
|||
*Nom du document |
|||
*8 sélections |
|||
*Obj. 1 objet |
|||
*Fa. 3 faces |
|||
*Ed. 4 bords |
|||
*Ve. 1 vertex |
|||
*Si vous utilisez plusieurs documents la macro restaure uniquement la sélection dans le document ouvert (document actif) |
|||
*L'info-bulle affiche la liste du nom et du sous-objet du document travaillé. |
|||
[[File:Macro_Select_Hovering_01.png|Info objects memorized displayed]] |
|||
self.GBOX_02_Edge = QtGui.QGroupBox(self.centralwidget) |
|||
self.GBOX_02_Edge.setGeometry(QtCore.QRect(10, 105, 176, 91)) |
|||
self.GBOX_02_Edge.setFont(self.fontGlobal_08) # pour W L |
|||
self.GBOX_02_Edge.setObjectName(_fromUtf8("GBOX_02_Edge")) |
|||
{{Button|Selected by Box}} |
|||
self.LAB_02_Edge = QtGui.QLabel(self.GBOX_02_Edge) |
|||
self.LAB_02_Edge.setGeometry(QtCore.QRect(110, 25, 56, 16)) |
|||
self.LAB_02_Edge.setFont(self.fontGlobal_08) # pour W L |
|||
self.LAB_02_Edge.setObjectName(_fromUtf8("LAB_02_Edge")) |
|||
*si vous faites une sélection avec boîte englobante ce bouton sélectionne tous les objets dont la case de sélection est cochée |
|||
self.CB_02_Sel_Edge = QtGui.QCheckBox(self.GBOX_02_Edge) |
|||
*Autre utilité si vous avez coché l'option sommet et que vous souhaitez sélectionner tous les sommets de l'objet... cliquez sur ce bouton |
|||
self.CB_02_Sel_Edge.setGeometry(QtCore.QRect(10, 20, 91, 17)) |
|||
self.CB_02_Sel_Edge.setFont(self.fontGlobal_08) # pour W L |
|||
self.CB_02_Sel_Edge.setObjectName(_fromUtf8("CB_02_Sel_Edge")) |
|||
{{Button|Reset Data}} |
|||
self.LE_03_Length_Total = QtGui.QLineEdit(self.GBOX_02_Edge) |
|||
self.LE_03_Length_Total.setGeometry(QtCore.QRect(10, 60, 75, 20)) |
|||
self.LE_03_Length_Total.setFont(self.fontGlobal_08) # pour W L |
|||
self.LE_03_Length_Total.setObjectName(_fromUtf8("LE_03_Length_Total")) |
|||
*Reset all data efface toutes les données de la macro (pas le mémo) |
|||
self.LE_04_Length_Object = QtGui.QLineEdit(self.GBOX_02_Edge) |
|||
self.LE_04_Length_Object.setGeometry(QtCore.QRect(90, 60, 75, 20)) |
|||
self.LE_04_Length_Object.setFont(self.fontGlobal_08) # pour W L |
|||
self.LE_04_Length_Object.setObjectName(_fromUtf8("LE_04_Length_Object")) |
|||
{{Button|Reset Memo}} |
|||
self.LAB_06_Length_Total = QtGui.QLabel(self.GBOX_02_Edge) |
|||
self.LAB_06_Length_Total.setGeometry(QtCore.QRect(10, 40, 71, 16)) |
|||
self.LAB_06_Length_Total.setFont(self.fontGlobal_08) # pour W L |
|||
self.LAB_06_Length_Total.setObjectName(_fromUtf8("LAB_06_Length_Total")) |
|||
*Reset the memo efface les données mémorisées |
|||
self.LAB_07_Length_Obgect = QtGui.QLabel(self.GBOX_02_Edge) |
|||
self.LAB_07_Length_Obgect.setGeometry(QtCore.QRect(90, 40, 71, 16)) |
|||
self.LAB_07_Length_Obgect.setFont(self.fontGlobal_08) # pour W L |
|||
self.LAB_07_Length_Obgect.setObjectName(_fromUtf8("LAB_07_Length_Obgect")) |
|||
{{Button|Remove selection}} |
|||
*Désélectionne les objets du le document actuel |
|||
self.GBOX_03_Vertex = QtGui.QGroupBox(self.centralwidget) |
|||
''('''PS:''' si plusieurs documents sont ouverts, un clic de souris dans la vue 3D, désélectionne toutes les sélections dans tous les documents)'' |
|||
self.GBOX_03_Vertex.setGeometry(QtCore.QRect(10, 200, 176, 46)) |
|||
self.GBOX_03_Vertex.setFont(self.fontGlobal_08) # pour W L |
|||
self.GBOX_03_Vertex.setObjectName(_fromUtf8("GBOX_03_Vertex")) |
|||
{{Button|Quit}} |
|||
self.LAB_03_Vertex = QtGui.QLabel(self.GBOX_03_Vertex) |
|||
self.LAB_03_Vertex.setGeometry(QtCore.QRect(110, 25, 56, 16)) |
|||
self.LAB_03_Vertex.setFont(self.fontGlobal_08) # pour W L |
|||
self.LAB_03_Vertex.setObjectName(_fromUtf8("LAB_03_Vertex")) |
|||
*Quit quitte la macro |
|||
self.CB_03_Sel_Vertex = QtGui.QCheckBox(self.GBOX_03_Vertex) |
|||
self.CB_03_Sel_Vertex.setGeometry(QtCore.QRect(10, 22, 91, 17)) |
|||
self.CB_03_Sel_Vertex.setFont(self.fontGlobal_08) # pour W L |
|||
self.CB_03_Sel_Vertex.setObjectName(_fromUtf8("CB_03_Sel_Vertex")) |
|||
{{Button|Pause grab/Refresh}} |
|||
*Pause la macro par exemple : désélectionnez plusieurs objets |
|||
self.GBOX_04_Main = QtGui.QGroupBox(self.centralwidget) |
|||
*après la pause, cliquez pour revenir sur la macro et mettre à jour toutes les informations dans la macro |
|||
self.GBOX_04_Main.setGeometry(QtCore.QRect(10, 250, 176, 51)) |
|||
*Peut être utilisé pour mettre à niveau les sélections dans la macro (tous le temps) |
|||
self.GBOX_04_Main.setFont(self.fontGlobal_08) # pour W L |
|||
*Ex : plusieurs objets sont sélectionnés avant d'exécuter la macro |
|||
self.GBOX_04_Main.setObjectName(_fromUtf8("GBOX_04_Main")) |
|||
*La macro s'adapte et détecte tout changement de document |
|||
<span id="Icons"></span> |
|||
self.PB_02_Stop_Grab = QtGui.QPushButton(self.GBOX_04_Main) |
|||
===Icône=== |
|||
self.PB_02_Stop_Grab.setGeometry(QtCore.QRect(90, 20, 75, 23)) |
|||
self.PB_02_Stop_Grab.setFont(self.fontGlobal_08) # pour W L |
|||
self.PB_02_Stop_Grab.setObjectName(_fromUtf8("PB_02_Stop_Grab")) |
|||
self.PB_02_Stop_Grab.clicked.connect(self.on_PB_02_Stop_Grab_clicked) |
|||
L'icône doit être copiée dans le même répertoire que la macro. |
|||
self.PB_01_Quit = QtGui.QPushButton(self.GBOX_04_Main) |
|||
self.PB_01_Quit.setGeometry(QtCore.QRect(5, 20, 75, 23)) |
|||
self.PB_01_Quit.setFont(self.fontGlobal_08) # pour W L |
|||
self.PB_01_Quit.setObjectName(_fromUtf8("PB_01_Quit")) |
|||
self.PB_01_Quit.clicked.connect(self.on_PB_Quit_clicked) |
|||
l'icône de la barre d'outils [[File:Macro Select Hovering.png|Macro Select Hovering]] |
|||
MainWindow.setCentralWidget(self.centralwidget) |
|||
self.retranslateUi(MainWindow) |
|||
QtCore.QMetaObject.connectSlotsByName(MainWindow) |
|||
==Script== |
|||
def retranslateUi(self, MainWindow): |
|||
MainWindow.setWindowTitle("Select_Hovering") |
|||
MainWindow.setWindowIcon(QtGui.QIcon(self.path + __title__ +".png"))# |
|||
self.GBOX_01_Face.setTitle("Face") |
|||
self.CB_01_Sel_Face.setText("Select Face") |
|||
self.LAB_01_Face.setText("0") |
|||
self.LAB_04_Area_Total.setText("Area Total") |
|||
self.LAB_05_Area_Object.setText("Area Object") |
|||
'''Macro_Select_Hovering.FCMacro''' |
|||
self.GBOX_02_Edge.setTitle("Edge") |
|||
self.CB_02_Sel_Edge.setText("Select Edge") |
|||
self.LAB_02_Edge.setText("0") |
|||
self.LAB_06_Length_Total.setText("Length Total") |
|||
self.LAB_07_Length_Obgect.setText("Length Object") |
|||
{{CodeDownload|https://gist.github.com/mario52a/7ebe6b3fd047441114d9d0e08ceddd63| Download latest version of the macro}} |
|||
self.GBOX_03_Vertex.setTitle("Vertex") |
|||
self.CB_03_Sel_Vertex.setText("Select Vertex") |
|||
self.LAB_03_Vertex.setText("0") |
|||
==Version== |
|||
self.GBOX_04_Main.setTitle("Main") |
|||
self.PB_01_Quit.setText("Quit") |
|||
self.PB_02_Stop_Grab.setText("Pause grab") |
|||
ver 00.04 (11/01/2024) : ajout: |
|||
MainWindow.setWindowFlags(PySide.QtCore.Qt.WindowStaysOnTopHint) # PySide cette fonction met la fenetre en avant |
|||
*LineEdit info, |
|||
*ComboBox memo selection, |
|||
*Button Memo selection, |
|||
*Button Selected by body |
|||
*Button Reset Data |
|||
*Button Reset Memo |
|||
*Button Remove Selection |
|||
ver 00.03b (28/10/2020) : ajout parenthèses print'''()''' pour Python 3 |
|||
def on_PB_02_Stop_Grab_clicked(self): |
|||
global s |
|||
if self.Stop_Grab == 1: |
|||
FreeCADGui.Selection.removeObserver(s) # desinstalle la fonction residente SelObserver |
|||
self.Stop_Grab = 0 |
|||
self.PB_02_Stop_Grab.setText("Active grab") |
|||
print( "Grab pause") |
|||
else: |
|||
s=SelObserver() |
|||
FreeCADGui.Selection.addObserver(s) # installe la fonction en mode resident |
|||
self.Stop_Grab = 1 |
|||
self.PB_02_Stop_Grab.setText("Pause grab") |
|||
print( "Grab active") |
|||
def on_PB_Quit_clicked(self): |
|||
global s |
|||
FreeCADGui.Selection.removeObserver(s) # desinstalle la fonction residente SelObserver |
|||
self.window.hide() # hide the window and close the macro |
|||
print( "Quit ",__title__) |
|||
################################################################################################## |
|||
class SelObserver: |
|||
global ui |
|||
def setPreselection(self,doc,obj,sub): # preselection |
|||
global ui |
|||
if ui.CB_01_Sel_Face.isChecked(): |
|||
if (sub[:4] == "Face") and (Gui.Selection.isSelected (FreeCAD.ActiveDocument.getObject(obj), sub) == False): |
|||
Gui.Selection.addSelection(FreeCAD.ActiveDocument.getObject(obj), sub) |
|||
ui.comptFace += 1 |
|||
ui.LAB_01_Face.setText(str(ui.comptFace)) |
|||
ui.comptSurfaceFace = FreeCAD.ActiveDocument.getObject(obj).Shape.Faces[int(sub[4:])-1].Area |
|||
ui.comptSurfaceTotal += ui.comptSurfaceFace |
|||
ui.LE_01_Area_Total.setText(str(ui.comptSurfaceTotal)) |
|||
ui.LE_02_Area_Object.setText(str(ui.comptSurfaceFace)) |
|||
if ui.CB_02_Sel_Edge.isChecked(): |
|||
if (sub[:4] == "Edge") and (Gui.Selection.isSelected (FreeCAD.ActiveDocument.getObject(obj), sub) == False): |
|||
objetSelect = Gui.Selection.addSelection(FreeCAD.ActiveDocument.getObject(obj), sub) |
|||
ui.comptEdge += 1 |
|||
ui.LAB_02_Edge.setText(str(ui.comptEdge)) |
|||
ui.comptLengthObject = FreeCAD.ActiveDocument.getObject(obj).Shape.Edges[int(sub[4:])-1].Length |
|||
ui.comptLengthTotal += ui.comptLengthObject |
|||
ui.LE_03_Length_Total.setText(str(ui.comptLengthTotal)) |
|||
ui.LE_04_Length_Object.setText(str(ui.comptLengthObject)) |
|||
if ui.CB_03_Sel_Vertex.isChecked(): |
|||
if sub[:6] == "Vertex" and (Gui.Selection.isSelected (FreeCAD.ActiveDocument.getObject(obj), sub) == False): |
|||
Gui.Selection.addSelection(FreeCAD.ActiveDocument.getObject(obj), sub) |
|||
ui.comptVertex += 1 |
|||
ui.LAB_03_Vertex.setText(str(ui.comptVertex)) |
|||
# def removePreselection(self,doc,obj,sub) # |
|||
# print( "removePreselection") |
|||
# def addSelection(self,doc,obj,sub,pnt): # Selection |
|||
# print( "addSelection") |
|||
# def removeSelection(self,doc,obj,sub): # Effacer l'objet selectionne |
|||
# print( "removeSelection") |
|||
# def setSelection(self,doc): # Selection dans ComboView |
|||
# FreeCADGui.Selection.removeObserver(s) |
|||
# print( "setSelection quit") |
|||
def clearSelection(self,doc): # Si clic sur l'ecran, effacer la selection |
|||
global ui |
|||
ui.comptFace = 0 |
|||
ui.comptEdge = 0 |
|||
ui.comptVertex = 0 |
|||
ui.comptSurfaceFace = 0.0 |
|||
ui.comptSurfaceTotal = 0.0 |
|||
ui.comptLengthObject = 0.0 |
|||
ui.comptLengthTotal = 0.0 |
|||
ui.LAB_01_Face.setText(str(ui.comptFace)) |
|||
ui.LAB_02_Edge.setText(str(ui.comptEdge)) |
|||
ui.LAB_03_Vertex.setText(str(ui.comptVertex)) |
|||
ui.LE_01_Area_Total.setText(str(ui.comptSurfaceTotal)) |
|||
ui.LE_02_Area_Object.setText(str(ui.comptSurfaceFace)) |
|||
ui.LE_03_Length_Total.setText(str(ui.comptLengthTotal)) |
|||
ui.LE_04_Length_Object.setText(str(ui.comptLengthObject)) |
|||
# print( "clearSelection") |
|||
s=SelObserver() |
|||
FreeCADGui.Selection.addObserver(s) # installe la fonction en mode resident |
|||
################################################################################################### |
|||
doc = FreeCAD.ActiveDocument |
|||
if doc == None: |
|||
doc = FreeCAD.newDocument() |
|||
MainWindow = QtGui.QMainWindow() |
|||
ui = Ui_MainWindow(MainWindow) |
|||
ui.setupUi(MainWindow) |
|||
MainWindow.show() |
|||
}} |
|||
==Version== |
|||
ver 00.03b (28/10/2020) : add print'''()''' for Python 3 |
|||
ver 00.03 (26/12/2017) : replace test with (FreeCAD.ActiveDocument.getObject(obj), sub) == False) |
ver 00.03 (26/12/2017) : replace test with (FreeCAD.ActiveDocument.getObject(obj), sub) == False) |
||
Line 401: | Line 133: | ||
ver 00.01 (25/12/2017) : |
ver 00.01 (25/12/2017) : |
||
= |
<span id="Link"></span> |
||
==Lien== |
|||
[https://forum.freecadweb.org/viewtopic.php?f=3&t=26370 Multiple face selection to convert a shape to a solid] |
[https://forum.freecadweb.org/viewtopic.php?f=3&t=26370 Multiple face selection to convert a shape to a solid] |
Latest revision as of 20:33, 11 January 2024
Description |
---|
Cette macro sélectionne au choix Face, Bord, Sommet juste en survolant la souris sur les objets. PS : pour désélectionner une face (ou autre) cliquez sur le bouton Pause grab et utiliser la procédure standard : CTRL + Click Version macro : 00.04 Date dernière modification : 2024-01-11 Version FreeCAD : Toutes Téléchargement : Icône de la barre d'outils Auteur: Mario52 |
Auteur |
Mario52 |
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 |
00.04 |
Dernière modification |
2024-01-11 |
Version(s) FreeCAD |
Toutes |
Raccourci clavier |
None |
Voir aussi |
None |
Description
Cette macro sélectionne au choix Face, Edge, Vertex se trouvant sous la souris.
Temporary code for external macro link. Do not use this code. This code is used exclusively by Addon Manager. Link for optional manual installation: Macro
# This code is copied instead of the original macro code # to guide the user to the online download page. # Use it if the code of the macro is larger than 64 KB and cannot be included in the wiki # or if the RAW code URL is somewhere else in the wiki. from PySide import QtGui, QtCore diag = QtGui.QMessageBox(QtGui.QMessageBox.Information, "Information", "This macro must be downloaded from this link\n" "\n" "https://gist.githubusercontent.com/mario52a/7ebe6b3fd047441114d9d0e08ceddd63/raw/f9dea03a0327b48c76a7c3e9d7cd391b5093a8cf/Macro%2520Select%2520Hovering.FCMacro" + "\n" "\n" "Quit this window to access the download page") diag.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) diag.setWindowModality(QtCore.Qt.ApplicationModal) diag.exec_() import webbrowser webbrowser.open("https://gist.githubusercontent.com/mario52a/7ebe6b3fd047441114d9d0e08ceddd63/raw/f9dea03a0327b48c76a7c3e9d7cd391b5093a8cf/Macro%2520Select%2520Hovering.FCMacro")
PS : pour désélectionner une face (ou autre) cliquez sur le bouton Pause grab et utiliser la procédure standard : CTRL + Click
Utilisation
Survoler l'objet avec la souris.
Section Face
Select Face → 3 nombre de face(s) 300.0 surface totale des sélections 100.0 surface de la dernière face sélectionnée
Section Edge
Select Edge → 4 nombre de bord(s) sélectionné(s) 40.0 longueur totale des sélections 10.0 longueur de la dernière sélection
Section Vertex
Select Vertex → 1 nombre de vertex
Section Main
Le titre affiche l'information de :
- ( Obj: 1 ) : nombre d'objet(s) sélectionné(s)
- ( Sub: 8 ) : nombre de Sub objet(s) sélectionné(s)
- ( Tot: 9 ) : Somme de Obj + Sub
Unnamed: Box. Face6 (1.34,2.64,10.0)
- Affiche une petite info sur les objets sous le curseur
Unnamed: 1 : (8 sel.) (Obj. 1, Fa. 3, Ed. 4, Ve. 1)
- Nom du document
- 8 sélections
- Obj. 1 objet
- Fa. 3 faces
- Ed. 4 bords
- Ve. 1 vertex
- Si vous utilisez plusieurs documents la macro restaure uniquement la sélection dans le document ouvert (document actif)
- L'info-bulle affiche la liste du nom et du sous-objet du document travaillé.
Selected by Box
- si vous faites une sélection avec boîte englobante ce bouton sélectionne tous les objets dont la case de sélection est cochée
- Autre utilité si vous avez coché l'option sommet et que vous souhaitez sélectionner tous les sommets de l'objet... cliquez sur ce bouton
Reset Data
- Reset all data efface toutes les données de la macro (pas le mémo)
Reset Memo
- Reset the memo efface les données mémorisées
Remove selection
- Désélectionne les objets du le document actuel
(PS: si plusieurs documents sont ouverts, un clic de souris dans la vue 3D, désélectionne toutes les sélections dans tous les documents)
Quit
- Quit quitte la macro
Pause grab/Refresh
- Pause la macro par exemple : désélectionnez plusieurs objets
- après la pause, cliquez pour revenir sur la macro et mettre à jour toutes les informations dans la macro
- Peut être utilisé pour mettre à niveau les sélections dans la macro (tous le temps)
- Ex : plusieurs objets sont sélectionnés avant d'exécuter la macro
- La macro s'adapte et détecte tout changement de document
Icône
L'icône doit être copiée dans le même répertoire que la macro.
Script
Macro_Select_Hovering.FCMacro
Version
ver 00.04 (11/01/2024) : ajout:
- LineEdit info,
- ComboBox memo selection,
- Button Memo selection,
- Button Selected by body
- Button Reset Data
- Button Reset Memo
- Button Remove Selection
ver 00.03b (28/10/2020) : ajout parenthèses print() pour Python 3
ver 00.03 (26/12/2017) : replace test with (FreeCAD.ActiveDocument.getObject(obj), sub) == False)
ver 00.02 (26/12/2017) :
ver 00.01 (25/12/2017) :