Macro Select Hovering/it: Difference between revisions
(Created page with "==Vincolo==") |
(Updating to match new version of source page) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<languages/> |
<languages/> |
||
<div class="mw-translate-fuzzy"> |
|||
{{Macro/it |
{{Macro/it |
||
|Name=Macro Select Hovering |
|Name=Macro Select Hovering |
||
Line 11: | Line 12: | ||
|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 ToolBar Icon] |
||
}} |
}} |
||
</div> |
|||
<span id="Description"></span> |
|||
[[File:Select_Hovering00.gif|Macro Select Hovering]] |
|||
[[File:Macro Select Hovering 00.png|Macro Select Hovering]] |
|||
==Descrizione== |
==Descrizione== |
||
Questa macro seleziona a scelta una Faccia, Bordo, Vertice passando sopra con il mouse |
Questa macro seleziona a scelta una Faccia, Bordo, Vertice passando sopra con il mouse |
||
PS: Per deselezionare una faccia (o altro) cliccare {{KEY | Pause grab}} e usare la procedura standard: CTRL + Click |
|||
[[File:Select_Hovering00.gif|Macro Select Hovering]] |
|||
== Utilizzo == |
|||
Passare sopra agli elementi con il mouse |
|||
===Icone=== |
|||
L'icona deve essere copiata nella stessa directory della macro |
|||
==Script== |
|||
L'icona per la barra degli strumenti [[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 |
|||
<div class="mw-translate-fuzzy"> |
|||
global ui ; ui = "" |
|||
PS: Per deselezionare una faccia (o altro) cliccare {{KEY | Pause grab}} e usare la procedura standard: CTRL + Click |
|||
global s ; s = "" |
|||
</div> |
|||
<span id="How_To_Use"></span> |
|||
try: |
|||
== Utilizzo == |
|||
_fromUtf8 = QtCore.QString.fromUtf8 |
|||
except AttributeError: |
|||
def _fromUtf8(s): |
|||
return s |
|||
Passare sopra agli elementi con il mouse |
|||
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 number of face(s) |
|||
def __init__(self, MainWindow): |
|||
{{LineEdit|300.0}} area total of selections |
|||
self.window = MainWindow |
|||
{{LineEdit|100.0}} area of the latest selection |
|||
################################################################################# |
|||
#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 number of edge(s) |
|||
def setupUi(self, MainWindow): |
|||
{{LineEdit|40.0}} length total of selections |
|||
MainWindow.resize(197, 307) |
|||
{{LineEdit|10.0}} length of the latest selection |
|||
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 number of vertex(s) |
|||
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")) |
|||
Title display info of the : |
|||
self.CB_01_Sel_Face = QtGui.QCheckBox(self.GBOX_01_Face) |
|||
*( Obj: 1 ) : number object(s) selected |
|||
self.CB_01_Sel_Face.setGeometry(QtCore.QRect(10, 20, 91, 17)) |
|||
*( Sub: 8 ) : number of Sub object(s) selected |
|||
self.CB_01_Sel_Face.setFont(self.fontGlobal_08) # pour W L |
|||
*( Tot: 9 ) : Somme 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")) |
|||
* display little info and info below the cursor mouse |
|||
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")) |
|||
*Name of document |
|||
*8 selections |
|||
*Obj. 1 object |
|||
*Fa. 3 faces |
|||
*Ed. 4 edges |
|||
*Ve. 1 vertex |
|||
*If you use several document the macro restores only the selection in the document open (to work) |
|||
*The toolTip display the listing of the selected document Name and subObject |
|||
[[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")) |
|||
*if you select by the Box selection this button select all objects checked of the selection |
|||
self.CB_02_Sel_Edge = QtGui.QCheckBox(self.GBOX_02_Edge) |
|||
*Other think you check the vertex option and you want selected all vertexes of the object ... click this button |
|||
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 in the macro (not the memo) |
|||
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 |
|||
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}} |
|||
*Remove the selections in the current document |
|||
self.GBOX_03_Vertex = QtGui.QGroupBox(self.centralwidget) |
|||
''('''PS:''' if several document are open on click mouse in the 3D view remove all selection in all 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 the 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 the macro for ex: deselect on of many object |
|||
self.GBOX_04_Main = QtGui.QGroupBox(self.centralwidget) |
|||
*after pause click for return on macro and upgrade al info in the macro |
|||
self.GBOX_04_Main.setGeometry(QtCore.QRect(10, 250, 176, 51)) |
|||
*Can be use for upgrade the selections in the macro (all time) |
|||
self.GBOX_04_Main.setFont(self.fontGlobal_08) # pour W L |
|||
*Ex: many object are selected before run the macro |
|||
self.GBOX_04_Main.setObjectName(_fromUtf8("GBOX_04_Main")) |
|||
*The macro adapts and detect all change of document |
|||
<span id="Icons"></span> |
|||
self.PB_02_Stop_Grab = QtGui.QPushButton(self.GBOX_04_Main) |
|||
===Icone=== |
|||
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'icona deve essere copiata nella stessa directory della 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) |
|||
The icon ToolBar [[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") |
|||
<span id="Version"></span> |
|||
self.GBOX_04_Main.setTitle("Main") |
|||
==Versioni== |
|||
self.PB_01_Quit.setText("Quit") |
|||
self.PB_02_Stop_Grab.setText("Pause grab") |
|||
ver 00.04 (11/01/2024) : add: |
|||
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 |
|||
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() |
|||
}} |
|||
==Versioni== |
|||
ver 00.03b (28/10/2020) : add print'''()''' for Python 3 |
ver 00.03b (28/10/2020) : add print'''()''' for Python 3 |
||
Line 402: | Line 140: | ||
ver 00.01 (25/12/2017) : |
ver 00.01 (25/12/2017) : |
||
<span id="Link"></span> |
|||
==Vincolo== |
==Vincolo== |
||
Latest revision as of 20:30, 11 January 2024
Descrizione |
---|
Questa macro seleziona a scelta una Faccia, Bordo, Vertice passando il mouse. PS: Per deselezionare una faccia (o altro) cliccare Pause grab e usare la procedura standard: CTRL + Click Versione macro: 00.03b Ultima modifica: 2020-10-28 Versione FreeCAD: All Download: ToolBar Icon Autore: Mario52 |
Autore |
Mario52 |
Download |
ToolBar Icon |
Link |
Raccolta di macro Come installare le macro Personalizzare la toolbar |
Versione macro |
00.03b |
Data ultima modifica |
2020-10-28 |
Versioni di FreeCAD |
All |
Scorciatoia |
Nessuna |
Vedere anche |
Nessuno |
Descrizione
Questa macro seleziona a scelta una Faccia, Bordo, Vertice passando sopra con il mouse
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: Per deselezionare una faccia (o altro) cliccare Pause grab e usare la procedura standard: CTRL + Click
Utilizzo
Passare sopra agli elementi con il mouse
Section Face
Select Face → 3 number of face(s) 300.0 area total of selections 100.0 area of the latest selection
Section Edge
Select Edge → 4 number of edge(s) 40.0 length total of selections 10.0 length of the latest selection
Section Vertex
Select Vertex → 1 number of vertex(s)
Section Main
Title display info of the :
- ( Obj: 1 ) : number object(s) selected
- ( Sub: 8 ) : number of Sub object(s) selected
- ( Tot: 9 ) : Somme Obj + Sub
Unnamed: Box. Face6 (1.34,2.64,10.0)
- display little info and info below the cursor mouse
Unnamed: 1 : (8 sel.) (Obj. 1, Fa. 3, Ed. 4, Ve. 1)
- Name of document
- 8 selections
- Obj. 1 object
- Fa. 3 faces
- Ed. 4 edges
- Ve. 1 vertex
- If you use several document the macro restores only the selection in the document open (to work)
- The toolTip display the listing of the selected document Name and subObject
Selected by Box
- if you select by the Box selection this button select all objects checked of the selection
- Other think you check the vertex option and you want selected all vertexes of the object ... click this button
Reset Data
- Reset all data in the macro (not the memo)
Reset Memo
- Reset the memo
Remove selection
- Remove the selections in the current document
(PS: if several document are open on click mouse in the 3D view remove all selection in all documents)
Quit
- Quit the macro
Pause grab/Refresh
- Pause the macro for ex: deselect on of many object
- after pause click for return on macro and upgrade al info in the macro
- Can be use for upgrade the selections in the macro (all time)
- Ex: many object are selected before run the macro
- The macro adapts and detect all change of document
Icone
L'icona deve essere copiata nella stessa directory della macro
Script
Macro_Select_Hovering.FCMacro
Versioni
ver 00.04 (11/01/2024) : add:
- 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) : add print() for 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) :