Macro Select Hovering/fr: Difference between revisions

From FreeCAD Documentation
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: Pour désélectionner une face (ou autre) cliquez sur le bouton {{KEY|Pause grab}} et utiliser la procédure standard : CTRL + Click
|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.03b
|Version=00.04
|Date=2020-10-28
|Date=2024-01-11
|FCVersion=All
|FCVersion=Toutes
|Download=[https://www.freecadweb.org/wiki/images/d/d8/Macro_Select_Hovering.png ToolBar Icon]
|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 un choix Face, Edge, Vertex se trouvant sous la souris.
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) :


==Link==
<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

Other languages:

Macro Select Hovering

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
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.


Macro Select Hovering


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")


Macro Select Hovering

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é.

Info objects memorized displayed

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.

l'icône de la barre d'outils Macro Select Hovering

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)  :

Lien

Multiple face selection to convert a shape to a solid