Macro Duplicate Selection
| Description | 
|---|
| This macro changes the mouse cursor to "ForbiddenCursor" if a selection is duplicated. Macro version: 00.00 Last modified: 2016-06-06 FreeCAD version: 0.16 Download: ToolBar Icon Author: Mario52 | 
| Author | 
| Mario52 | 
| Download | 
| ToolBar Icon | 
| Links | 
| Macros recipes How to install macros How to customize toolbars | 
| Macro Version | 
| 00.00 | 
| Date last modified | 
| 2016-06-06 | 
| FreeCAD Version(s) | 
| 0.16 | 
| Default shortcut | 
| None | 
| See also | 
| None | 
Description
This macro changes the mouse cursor to "ForbiddenCursor" if a selection is duplicated.
Usage
Run the macro, the macro stays resident in memory.
Select your objects. If a selected objects is a duplicate the "ForbiddenCursor" mouse cursor is displayed.
Script
Macro_Duplicate_Selection.FCMacro
# -*- coding: utf-8 -*-
import FreeCADGui
import PySide
from PySide import QtGui ,QtCore
from PySide.QtGui import *
from PySide.QtCore import *
__title__   = "Macro_Duplicate_Selection"
__author__  = "Mario52"
__url__     = "http://www.freecadweb.org/index-fr.html"
__version__ = "00.00"
__date__    = "06/06/2016"
__Help__    = "Start the macro select the object IN THE 3D VIEW the ForbiddenCursor stay if the selection is duplicate"
def selectionObject():
    sel = FreeCADGui.Selection.getSelection() 
    x  = []
    del x[:]
    for a in range(len(sel)):
       x.append(sel[a].Name)
    doublet = 0
    for i in range(len(sel)):
        for ii in range((i+1),len(sel)):
            if x[i] == x[ii]:
                doublet = 1
                break
    if doublet == 1:
        QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ForbiddenCursor))
#        FreeCAD.Console.PrintError("HELP "+sel[-1].Name+" duplicate selection"+"\n")
    else:
        QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
class SelObserver:
    def addSelection(self,doc,obj,sub,pnt):   # Selection
        selectionObject()
    def removeSelection(self,doc,obj,sub):    # Effacer l'objet salectionne
        selectionObject()
    def setPreselection(self, doc, obj, sub):
        selectionObject()
    def clearSelection(self,doc):             # Si clic sur l'ecran, effacer la selection
        selectionObject()
#    def setSelection(self,doc):               # Selection dans Combo View pour quitter la fonction
#        App.Console.PrintMessage("Fin Macro_Duplicate"+"\n")
#        QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
#        FreeCADGui.Selection.removeObserver(s)# desinstalle la fonction residente
s=SelObserver()
FreeCADGui.Selection.addObserver(s)    # installe la fonction en mode resident
Links
The forum discussion Duplicate Objects when more than one face selected

