Macro_cartoucheFC_Fully.py

Need help, or want to share a macro? Post here!
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
drums488
Posts: 3
Joined: Fri Jan 10, 2020 1:33 pm

Macro_cartoucheFC_Fully.py

Post by drums488 »

Hello

New freecad user under Windows 10 1903 (up to date).
I downloaded freecad version 0.18
Then installed the macro "Macro_cartoucheFC_Fully.py"
and the layer sets A… .FULL.svg.

I open Freecad and make a new drawing. I choose a sheet to make the plan
and launches the "Macro_cartoucheFC_Fully.py" to fill the cartridge.
This returns the following error to me:
(‘Invalid syntax’, (‘G: / freecad macro / Macro_CartoucheFC_Full.py’, 1072, 17, ’print‘ ’run ,,‘ ’\ n’)))

Thanks for your help with a solution.

cordially

Drums
openBrain
Veteran
Posts: 9034
Joined: Fri Nov 09, 2018 5:38 pm
Contact:

Re: Macro_cartoucheFC_Fully.py

Post by openBrain »

Looks like the macro isn't compatible with Python 3.
You can safely edit the macro and delete the faulty line.
Mario52 will probably tell us if he plans to update it. ;)
vocx
Veteran
Posts: 5197
Joined: Thu Oct 18, 2018 9:18 pm

Re: Macro_cartoucheFC_Fully.py

Post by vocx »

Also, if I remember well, this macro was created for the Drawing Workbench which is obsolete since 0.17.

Therefore, I'm not sure if this macro produces a correct template that works with the TechDraw Workbench.

Ask Mario.
Always add the important information to your posts if you need help. Also see Tutorials and Video tutorials.
To support the documentation effort, and code development, your donation is appreciated: liberapay.com/FreeCAD.
mario52
Veteran
Posts: 4673
Joined: Wed May 16, 2012 2:13 pm

Re: Macro_cartoucheFC_Fully.py

Post by mario52 »

hi drums488

here only for FC 0.19 and Drawing Workbench Image

Macro_CartoucheFC_Full_FC019.FCMacro

Code: Select all

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
"""
***************************************************************************
*   Copyright (c) 2014 2016 2017 2018 2019 2020 2021 <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.                                 *
**                                                                       **
*   Use at your own risk. The author assumes no liability for data loss.  *
*              It is advised to backup your data frequently.              *
*             If you do not trust the software do not use it.             *
**                                                                       **
*   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                   *
***************************************************************************
"""
#15/02/2017, 00.10-018, 06/02/2021 0.11

#OS: Windows 10 (10.0)
#Word size of OS: 64-bit
#Word size of FreeCAD: 64-bit
#Version: 0.19.23756 (Git)
#Build type: Release
#Branch: master
#Hash: 9c6e9184930a52b165a0b7274e3a45d1006bfe67
#Python version: 3.6.8
#Qt version: 5.12.1
#Coin version: 4.0.0a
#OCC version: 7.3.0
#Locale: French/Mars (fr_MA)

__title__   = "Macro_CartoucheFC_Full_FC019"
__author__  = "Mario52"
__url__     = "http://www.freecadweb.org/index-fr.html"
__Wiki__    = "http://www.freecadweb.org/wiki/Macro_CartoucheFC_Full"
__version__ = "00.11"
__date__    = "2021/02/06"    #YYYY/MM/DD

__Requires__ = ("version freecad -018 and more " +
" DESIGNED_BY, CREATION_DATE, CHECKED_BY, CHECK_DATE, SIZE, SCALE, WEIGHT, DRAWING_NUMBER, SHEET, " +
" TITLE, DESCRIPTION, COMPANY, COPYRIGHT, Note_A, Note_B, Note_C, Note_D, Note_E, Note_F, Note_G, Note_H, Note_I" )
__Template__ = " A3_Landscape_xx_FULL.svg, A3_Portrait_xx_FULL, A4_Landscape_xx_FULL.svg, A4_Portrait_xx_FULL"
__Template_Link__ = "http://www.freecadweb.org/wiki/index.php?title=Misc_templates_Full"

import PySide
from PySide import QtCore, QtGui

import Draft, Part, FreeCAD, math, PartGui, FreeCADGui
from math import sqrt, pi, sin, cos, asin
from FreeCAD import Base

def utf8(unio):
    return unicode(unio).encode('UTF8')

global path
#path  = FreeCAD.ConfigGet("AppHomePath")
#path  = FreeCAD.ConfigGet("UserAppData")
#path  = "your path"
param = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macro") # macro path
path = param.GetString("MacroPath","") + "/"                         # macro path
path = path.replace("\\","/")
#print("Path for the icons : " , path)

global PageActive      ; PageActive  = "Select your page" # essais 
#global PageActive      ; PageActive  = "Page" # page active
global DESIGNED_BY     ; DESIGNED_BY = ""     # lineEdit01 DESIGNED_BY
global MDESIGNED_BY    ; MDESIGNED_BY = ""    # 
global CREATION_DATE   ; CREATION_DATE = ""   # lineEdit02 CREATION_DATE date
global MCREATION_DATE  ; MCREATION_DATE = ""  # 
global CREA_DATE       ; CREA_DATE = ""       # lineEdit02h date
global MCREA_DATE      ; MCREA_DATE = ""      # 
global CREA_TIME       ; CREA_TIME = ""       # lineEdit02h heure
global MCREA_TIME      ; MCREA_TIME = ""      # 
global CHECKED_BY      ; CHECKED_BY = ""      # lineEdit03
global MCHECKED_BY     ; MCHECKED_BY = ""     # 
global CHECK_DATE      ; CHECK_DATE = ""      # lineEdit04 date
global MCHECK_DATE     ; MCHECK_DATE = ""     # 
global CHEC_DATE       ; CHEC_DATE = ""       # lineEdit04 date
global MCHEC_DATE      ; MCHEC_DATE = ""      # 
global CHEC_TIME       ; CHEC_TIME = ""       # lineEdit04h heure
global MCHEC_TIME      ; MCHEC_TIME = ""      # 
global SIZE            ; SIZE = ""            # lineEdit05
global MSIZE           ; MSIZE = ""           # 
global SCALE           ; SCALE =  ""          # lineEdit06
global MSCALE          ; MSCALE =  ""         # 
global WEIGHT          ; WEIGHT =  ""         # lineEdit07
global MWEIGHT         ; MWEIGHT =  ""        # 
global DRAWING_NUMBER  ; DRAWING_NUMBER = ""  # lineEdit08
global MDRAWING_NUMBER ; MDRAWING_NUMBER = "" # 
global SHEET           ; SHEET =  ""          # lineEdit09
global MSHEET          ; MSHEET =  ""         # 
global TITLE           ; TITLE =  ""          # textEdit_01
global MTITLE          ; MTITLE =  ""         # 
global DESCRIPTION     ; DESCRIPTION =  ""    # textEdit_02
global MDESCRIPTION    ; MDESCRIPTION = ""    # 
global COMPANY         ; COMPANY = ""         # textEdit_02b
global MCOMPANY        ; MCOMPANY = ""        # 
global COPYRIGHT       ; COPYRIGHT = ""       # lineEdit_20
global MCOPYRIGHT      ; MCOPYRIGHT = ""      # 
global Note_A          ; Note_A = ""          # lineEdit_10
global MNote_A         ; MNote_A = ""         # 
global Note_B          ; Note_B = ""          # lineEdit_11
global MNote_B         ; MNote_B = ""         # 
global Note_C          ; Note_C = ""          # lineEdit_12
global MNote_C         ; MNote_C = ""         # 
global Note_D          ; Note_D = ""          # lineEdit_13
global MNote_D         ; MNote_D = ""         # 
global Note_E          ; Note_E = ""          # lineEdit_14
global MNote_E         ; MNote_E = ""         # 
global Note_F          ; Note_F = ""          # lineEdit_15
global MNote_F         ; MNote_F = ""         # 
global Note_G          ; Note_G = ""          # lineEdit_16
global MNote_G         ; MNote_G = ""         # 
global Note_H          ; Note_H = ""          # lineEdit_17
global MNote_H         ; MNote_H = ""         # 
global Note_I          ; Note_I = ""          # lineEdit_18
global MNote_I         ; MNote_I = ""         # 

global SymbolSwitch    ; SymbolSwitch = 1     # 0=US 1=EU
global ui              ; ui     = ""
global switchToPass    ; switchToPass = 0     # passage selection

def heure():
    return QtCore.QTime().currentTime().toString('hh:mm:ss')
def dateEu():
    return QtCore.QDate().currentDate().toString('dd/MM/yyyy') # forme euro
def dateUK():
    return QtCore.QDate().currentDate().toString('yyyy/MM/dd') # forme UK
def dateUs():
    return QtCore.QDate().currentDate().toString('MM/dd/yyyy') # forme US
def dateComp():
    return QtCore.QDate().currentDate().toString('dddd d MMMM yyyy') # Retourne "dimanche 20 Juillet 77"

try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    def _fromUtf8(s):
        return s
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)

def errorDialog(msg):

    diag = QtGui.QMessageBox(QtGui.QMessageBox.Critical,u"Error Message",msg)
    diag.setWindowFlags(PySide.QtCore.Qt.WindowStaysOnTopHint) # cette fonction met la fenetre en avant
    diag.exec_()

def symbol_EU(depx, depy, scale):    #symbol_EU =O
    global PageActive
    global ui
    global switchToPass

    switchToPass = 1    # ne passe pas  a Class SelObserver
    try:
        page = App.activeDocument().getObjectsByLabel(PageActive)[0]
    
        if len(str(page)) != 2:
            comP   = []
            nameL  = []
            del comP[:]
    
            if "Page" in (page.Name):
                for ii in (page.Group):
                    if ((ii.Label) == "Symbol_EU") or ((ii.Label) == "Symbol_US") :
                        App.activeDocument().removeObject(ii.Name)

            #### Symbol_EU
            axisH   = Part.makeLine((-7.5,0.0,0.0), (20.0,0.0,0.0))    # axis H
            axisV   = Part.makeLine((12.5,7.5,0.0), (12.5,-7.5,0.0))   # axis V
            trapeze = Part.makePolygon([(-5,2.5,0.0), (5.0,5.0,0.0), (5.0,-5.0,0.0), (-5.0,-2.5,0.0), (-5,2.5,0.0)]) # trapeze
            circleP = Part.makeCircle(2.50, Base.Vector(12.5,-0.0,0.0), Base.Vector(0, 0, 1))   # circleP
            circleG = Part.makeCircle(5.05, Base.Vector(12.5,-0.0,0.0), Base.Vector(0, 0, 1))   # circleG
            comp    = Part.makeCompound([axisH, axisV, trapeze, circleP, circleG])
            Part.show(comp)
            #### Symbol_EU

            App.ActiveDocument.recompute()
            App.ActiveDocument.ActiveObject.Label = "Symbol_EU"
        
            obj = FreeCAD.ActiveDocument.ActiveObject
            obj.ViewObject.LineColor = (0.0,0.0,0.0)
            obj.ViewObject.Visibility = False
            
            obj2 = Draft.makeDrawingView(obj, page) 
            obj2.X = depx
            obj2.Y = depy
            obj2.Scale = scale #0.8    # A3
            obj2.Label = "Symbol_EU"
        
            App.activeDocument().getObject(page.Name).addObject(obj)
            App.activeDocument().getObject(page.Name).addObject(obj2)
            for i in nameL: App.activeDocument().removeObject(i)
            App.ActiveDocument.recompute()
    
        else:
            ui.pushButton05.setStyleSheet("background-color: red")       # This function gives a color button
            FreeCAD.Console.PrintError("Error selected page [ " + PageActive + " ]" + "\n")
    except Exception:
        None
    switchToPass = 0    # passe pas a Class SelObserver

def symbol_US(depx, depy, scale):    #symbol_US O=
    global PageActive
    global ui
    global switchToPass

    switchToPass = 1    # ne passe pas a Class SelObserver
    try:
        page = App.activeDocument().getObjectsByLabel(PageActive)[0]
    
        if len(str(page)) != 2:
            comP   = []
            nameL  = []
        
            if "Page" in (page.Name):
                for ii in (page.Group):
                    if ((ii.Label) == "Symbol_EU") or ((ii.Label) == "Symbol_US") :
                        App.activeDocument().removeObject(ii.Name)

            #### Symbol_US
            axisH   = Part.makeLine((-7.5,0.0,0.0), (20.0,0.0,0.0))    # axis H
            axisV   = Part.makeLine((0.0,7.5,0.0), (0.0,-7.5,0.0))     # axis V
            trapeze = Part.makePolygon([(7.5,2.5,0.0), (17.5,5.0,0.0), (17.5,-5.0,0.0), (7.5,-2.5,0.0), (7.5,2.5,0.0)]) # trapeze
            circleP = Part.makeCircle(2.50, Base.Vector(0.0,-0.0,0.0), Base.Vector(0, 0, 1))   # circleP
            circleG = Part.makeCircle(5.05, Base.Vector(0.0,-0.0,0.0), Base.Vector(0, 0, 1))   # circleG
            comp    = Part.makeCompound([axisH, axisV, trapeze, circleP, circleG])
            Part.show(comp)
            #### Symbol_US

            App.ActiveDocument.recompute()
            App.ActiveDocument.ActiveObject.Label = "Symbol_US"
        
            obj = FreeCAD.ActiveDocument.ActiveObject
            obj.ViewObject.LineColor = (0.0,0.0,0.0)
            obj.ViewObject.Visibility = False
        
            obj2 = Draft.makeDrawingView(obj, page) 
            obj2.X = depx
            obj2.Y = depy
            obj2.Scale = scale #0.8    # A3
            obj2.Label = "Symbol_US"
    
            App.activeDocument().getObject(page.Name).addObject(obj)
            App.activeDocument().getObject(page.Name).addObject(obj2)
            for i in nameL: App.activeDocument().removeObject(i)
            App.ActiveDocument.recompute()
        else:
            ui.pushButton05.setStyleSheet("background-color: red")       # This function gives a color button
            FreeCAD.Console.PrintError("Error selected page [ " + PageActive + " ]" + "\n")
    except Exception:
        None
    switchToPass = 0    #  passe pas a Class SelObserver

def memoEntree():
    global MDESIGNED_BY, MCREATION_DATE, MCREA_DATE  , MCREA_TIME, MCHECKED_BY, MCHECK_DATE
    global MCHEC_DATE  , MCHEC_TIME    , MSIZE       , MSCALE    , MWEIGHT    ,MDRAWING_NUMBER
    global MSHEET      , MTITLE        , MDESCRIPTION, MCOMPANY  , MCOPYRIGHT
    global MNote_A, MNote_B, MNote_C, MNote_D, MNote_E, MNote_F, MNote_G, MNote_H, MNote_I
    global PageActive

    try:
        page = App.activeDocument().getObjectsByLabel(PageActive.encode('utf-8'))[0].Name
    except Exception:
        page = App.activeDocument().getObjectsByLabel(PageActive)[0].Name

    try:
        MDESIGNED_BY   = App.activeDocument().getObject(page).EditableTexts[0]  # lineEdit01 DESIGNED_BY
        MCREATION_DATE = App.activeDocument().getObject(page).EditableTexts[1]  # lineEdit02 CREATION_DATE date
    
        MCREA_DATE = MCREA_TIME = MCHEC_DATE = MCHEC_TIME = ""
    
        try:
            MCREA_DATE = MCREATION_DATE.split(" - ")[0]                         # lineEdit02h date
        except:
            MCREA_DATE = MCREATION_DATE
        try:
            MCREA_TIME = MCREATION_DATE.split(" - ")[1]                         # lineEdit02h heure
        except: None    
    
        MCHECKED_BY = App.activeDocument().getObject(page).EditableTexts[2]     # lineEdit03
        MCHECK_DATE = App.activeDocument().getObject(page).EditableTexts[3]     # lineEdit04 date
    
        try:
            MCHEC_DATE = MCHECK_DATE.split(" - ")[0]                            # lineEdit04 date
        except:
            MCHEC_DATE = MCHECK_DATE
        try:
            MCHEC_TIME = MCHECK_DATE.split(" - ")[1]                            # lineEdit04h heure
        except: None    
    
        MSIZE = App.activeDocument().getObject(page).EditableTexts[4]           # lineEdit05
        MSCALE = App.activeDocument().getObject(page).EditableTexts[5]          # lineEdit06
        MWEIGHT = App.activeDocument().getObject(page).EditableTexts[6]         # lineEdit07
        MDRAWING_NUMBER = App.activeDocument().getObject(page).EditableTexts[7] # lineEdit08
        MSHEET = App.activeDocument().getObject(page).EditableTexts[8]          # lineEdit09
        MTITLE = App.activeDocument().getObject(page).EditableTexts[9]          # textEdit_01
    
        try:
            MDESCRIPTION = App.activeDocument().getObject(page).EditableTexts[10]   # textEdit_02
            MCOMPANY = App.activeDocument().getObject(page).EditableTexts[11]       # textEdit_02b
            MCOPYRIGHT = App.activeDocument().getObject(page).EditableTexts[12]     # lineEdit_20
            MNote_A = App.activeDocument().getObject(page).EditableTexts[13]        # lineEdit_10
            MNote_B = App.activeDocument().getObject(page).EditableTexts[14]        # lineEdit_11
            MNote_C = App.activeDocument().getObject(page).EditableTexts[15]        # lineEdit_12
            MNote_D = App.activeDocument().getObject(page).EditableTexts[16]        # lineEdit_13
            MNote_E = App.activeDocument().getObject(page).EditableTexts[17]        # lineEdit_14
            MNote_F = App.activeDocument().getObject(page).EditableTexts[18]        # lineEdit_15
            MNote_G = App.activeDocument().getObject(page).EditableTexts[19]        # lineEdit_16
            MNote_H = App.activeDocument().getObject(page).EditableTexts[20]        # lineEdit_17
            MNote_I = App.activeDocument().getObject(page).EditableTexts[21]        # lineEdit_18
        except Exception:
            App.Console.PrintError("Erreur cartouche level DESCRIPTION (Missing field)"+"\n"
                        "You may be using an inadequate template. Try with this template"+"\n")
            App.Console.PrintMessage("http://www.freecadweb.org/wiki/index.php?title=Misc_templates_Full"+"\n\n")
            App.Console.PrintError("Or for the original FreeCAD template use this macro"+"\n")
            App.Console.PrintMessage("http://www.freecadweb.org/wiki/index.php?title=Macro_CartoucheFC"+"\n")
    
            errorDialog("Erreur cartouche level DESCRIPTION (Missing field)"+"\n"
                        "You may be using an inadequate template. Try with this template"+"\n"
                        "http://www.freecadweb.org/wiki/index.php?title=Misc_templates_Full"+"\n\n"
                        "Or for the original FreeCAD template use this macro"+"\n"
                        "http://www.freecadweb.org/wiki/index.php?title=Macro_CartoucheFC"+"\n\n")
    except:
        errorDialog("Erreur cartouche")

class Ui_MainWindow(object):

    def __init__(self, MainWindow):
        global path
        global PageActive
        self.window = MainWindow
        self.path = path                   # macro path

        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(810, 400)
        MainWindow.setMaximumSize(QtCore.QSize(810, 400))
        self.centralWidget = QtGui.QWidget(MainWindow)
        self.centralWidget.setObjectName(_fromUtf8("centralWidget"))

#        self.pushButton01 = QtGui.QPushButton(self.centralWidget)
#        self.pushButton01.setGeometry(QtCore.QRect(115, 360, 93, 28))
#        self.pushButton01.setObjectName(_fromUtf8("pushButton01"))
#        self.pushButton01.clicked.connect(self.on_pushButton01_clicked) #connection pushButton01

        self.pushButton02 = QtGui.QPushButton(self.centralWidget)
        self.pushButton02.setGeometry(QtCore.QRect(225, 360, 93, 28))
        self.pushButton02.setObjectName(_fromUtf8("pushButton02"))
        self.pushButton02.clicked.connect(self.on_pushButton02_clicked) #connection pushButton02

        self.pushButton03 = QtGui.QPushButton(self.centralWidget)
        self.pushButton03.setGeometry(QtCore.QRect(335, 360, 93, 28))
        self.pushButton03.setToolTip("The memo button work only with the first Page")
        self.pushButton03.setObjectName(_fromUtf8("pushButton03"))
        self.pushButton03.clicked.connect(self.on_pushButton03_clicked) #connection pushButton03

        self.pushButton04 = QtGui.QPushButton(self.centralWidget)
        self.pushButton04.setGeometry(QtCore.QRect(445, 360, 93, 28))
        self.pushButton04.setObjectName(_fromUtf8("pushButton04"))
        self.pushButton04.clicked.connect(self.on_pushButton04_clicked) #connection pushButton04

        self.pushButton05 = QtGui.QPushButton(self.centralWidget)
        self.pushButton05.setGeometry(QtCore.QRect(555, 360, 93, 28))
#        self.pushButton05.setStyleSheet("background-color: red")       # This function gives a color button
        self.pushButton05.setObjectName(_fromUtf8("pushButton05"))
        self.pushButton05.clicked.connect(self.on_pushButton05_clicked) #connection pushButton05

        #####
        self.groupBox = QtGui.QGroupBox(self.centralWidget)
        self.groupBox.setGeometry(QtCore.QRect(20, 159, 190, 101))
        self.groupBox.setObjectName(_fromUtf8("groupBox"))

        self.label_20 = QtGui.QLabel(self.groupBox)
        self.label_20.setGeometry(QtCore.QRect(115, 5, 61, 17))
        self.label_20.setObjectName(_fromUtf8("label_20"))
        ############### font and color Label
        font = QtGui.QFont()
        font.setBold(True)
        self.label_20.setFont(font)
        self.label_20.setStyleSheet("color : #ff0000")
        ############### font and color
        self.label_20.setVisible(False)

        self.radioButton_0 = QtGui.QRadioButton(self.groupBox)
        self.radioButton_0.setGeometry(QtCore.QRect(95, 1, 91, 17))
        self.radioButton_0.setChecked(True)
        self.radioButton_0.setEnabled(False)
        self.radioButton_0.setVisible(False)
        self.radioButton_0.setObjectName(_fromUtf8("radioButton_0"))

        self.radioButton_1 = QtGui.QRadioButton(self.groupBox)
        self.radioButton_1.setGeometry(QtCore.QRect(95, 20, 91, 17))
        self.radioButton_1.setObjectName(_fromUtf8("radioButton_1"))
        self.radioButton_1.clicked.connect(self.on_radioButton_A3_clicked)# connect radioButton_A3

        self.radioButton_2 = QtGui.QRadioButton(self.groupBox)
        self.radioButton_2.setGeometry(QtCore.QRect(95, 39, 91, 17))
        self.radioButton_2.setObjectName(_fromUtf8("radioButton_2"))
        self.radioButton_2.clicked.connect(self.on_radioButton_A3_clicked)# connect radioButton_A3

        self.radioButton_3 = QtGui.QRadioButton(self.groupBox)
        self.radioButton_3.setGeometry(QtCore.QRect(95, 58, 91, 17))
        self.radioButton_3.setObjectName(_fromUtf8("radioButton_3"))
        self.radioButton_3.clicked.connect(self.on_radioButton_A4_clicked)# connect radioButton_A4

        self.radioButton_4 = QtGui.QRadioButton(self.groupBox)
        self.radioButton_4.setGeometry(QtCore.QRect(95, 76, 91, 17))
        self.radioButton_4.setObjectName(_fromUtf8("radioButton_4"))
        self.radioButton_4.clicked.connect(self.on_radioButton_A4_clicked)# connect radioButton_A4

        self.lineEdit_05 = QtGui.QLineEdit(self.groupBox)
        self.lineEdit_05.setGeometry(QtCore.QRect(10, 16, 75, 41))
        font = QtGui.QFont()
        font.setPointSize(25)
        font.setBold(False)
        font.setWeight(50)
        self.lineEdit_05.setFont(font)
        self.lineEdit_05.setAlignment(QtCore.Qt.AlignCenter)
        self.lineEdit_05.setStyleSheet("color: red")           # origin system
        self.lineEdit_05.setObjectName(_fromUtf8("lineEdit_05"))
        self.lineEdit_05.setText(SIZE)

        self.frame = QtGui.QFrame(self.groupBox)
        self.frame.setGeometry(QtCore.QRect(10, 58, 74, 41))
        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName(_fromUtf8("frame"))

        self.radioButton_EU = QtGui.QRadioButton(self.frame)
        self.radioButton_EU.setGeometry(QtCore.QRect(0, 1, 41, 17))
        self.radioButton_EU.setChecked(True)
        self.radioButton_EU.setObjectName(_fromUtf8("radioButton_EU"))
        self.radioButton_EU.clicked.connect(self.on_radioButton_EU_clicked) #connection radioButton_EU

        self.radioButton_US = QtGui.QRadioButton(self.frame)
        self.radioButton_US.setGeometry(QtCore.QRect(37, 1, 41, 17))
        self.radioButton_US.setObjectName(_fromUtf8("radioButton_US"))
        self.radioButton_US.clicked.connect(self.on_radioButton_US_clicked) #connection radioButton_US

        self.pushButton10 = QtGui.QPushButton(self.frame)
        self.pushButton10.setGeometry(QtCore.QRect(0, 18, 75, 23))
        self.pushButton10.setToolTip("Create the symbol EU or US"+"\n"
                                     "This button is Independent of the Write button"+"\n"
                                     "If you desire modify the symbol in the cartouche,"+"\n"
                                     "delete the inadequate symbol manualy.")
        self.pushButton10.setEnabled(False)
        self.pushButton10.setObjectName(_fromUtf8("pushButton10"))
        self.pushButton10.clicked.connect(self.on_pushButton10_clicked)     #connection pushButton10

        #####

        self.pushButton06 = QtGui.QPushButton(self.centralWidget)
        self.pushButton06.setGeometry(QtCore.QRect(170, 57, 20, 20))
        self.pushButton06.setObjectName(_fromUtf8("pushButton06"))
        self.pushButton06.clicked.connect(self.on_pushButton06_clicked) #connection pushButton06

        self.pushButton07 = QtGui.QPushButton(self.centralWidget)
        self.pushButton07.setGeometry(QtCore.QRect(190, 57, 20, 20))
        self.pushButton07.setObjectName(_fromUtf8("pushButton07"))
        self.pushButton07.clicked.connect(self.on_pushButton07_clicked) #connection pushButton07

        self.pushButton08 = QtGui.QPushButton(self.centralWidget)
        self.pushButton08.setGeometry(QtCore.QRect(170, 137, 20, 20))
        self.pushButton08.setObjectName(_fromUtf8("pushButton08"))
        self.pushButton08.clicked.connect(self.on_pushButton08_clicked) #connection pushButton08

        self.pushButton09 = QtGui.QPushButton(self.centralWidget)
        self.pushButton09.setGeometry(QtCore.QRect(190, 137, 20, 20))
        self.pushButton09.setObjectName(_fromUtf8("pushButton09"))
        self.pushButton09.clicked.connect(self.on_pushButton09_clicked) #connection pushButton09

        self.lineEdit_01 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_01.setGeometry(QtCore.QRect(20, 20, 190, 16))
        font = QtGui.QFont()
        font.setPointSize(7)
        self.lineEdit_01.setFont(font)
        self.lineEdit_01.setObjectName(_fromUtf8("lineEdit_01"))
        self.lineEdit_01.setText(DESIGNED_BY)

        self.lineEdit_02 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_02.setGeometry(QtCore.QRect(20, 60, 82, 16))
        font = QtGui.QFont()
        font.setPointSize(7)
        self.lineEdit_02.setFont(font)
        self.lineEdit_02.setObjectName(_fromUtf8("lineEdit_02"))
        self.lineEdit_02.setText(CREA_DATE)

        self.lineEdit_02h = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_02h.setGeometry(QtCore.QRect(98, 60, 72, 16))
        font = QtGui.QFont()
        font.setPointSize(7)
        self.lineEdit_02h.setFont(font)
        self.lineEdit_02h.setObjectName(_fromUtf8("lineEdit_02h"))
        self.lineEdit_02h.setText(CREA_TIME)

        self.lineEdit_03 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_03.setGeometry(QtCore.QRect(20, 100, 190, 16))
        font = QtGui.QFont()
        font.setPointSize(7)
        self.lineEdit_03.setFont(font)
        self.lineEdit_03.setObjectName(_fromUtf8("lineEdit_03"))
        self.lineEdit_03.setText(CHECKED_BY)

        self.lineEdit_04 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_04.setGeometry(QtCore.QRect(20, 140, 82, 16))
        font = QtGui.QFont()
        font.setPointSize(7)
        self.lineEdit_04.setFont(font)
        self.lineEdit_04.setObjectName(_fromUtf8("lineEdit_04"))
        self.lineEdit_04.setText(CHEC_DATE)

        self.lineEdit_04h = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_04h.setGeometry(QtCore.QRect(98, 140, 72, 16))
        font = QtGui.QFont()
        font.setPointSize(7)
        self.lineEdit_04h.setFont(font)
        self.lineEdit_04h.setObjectName(_fromUtf8("lineEdit_04h"))
        self.lineEdit_04h.setText(CHEC_TIME)

        self.lineEdit_06 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_06.setGeometry(QtCore.QRect(20, 280, 61, 41))
        font = QtGui.QFont()
        font.setPointSize(10)
        self.lineEdit_06.setFont(font)
        self.lineEdit_06.setAlignment(QtCore.Qt.AlignCenter)
        self.lineEdit_06.setObjectName(_fromUtf8("lineEdit_06"))
        self.lineEdit_06.setText(SCALE)

        self.lineEdit_07 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_07.setGeometry(QtCore.QRect(100, 280, 101, 41))
        font = QtGui.QFont()
        font.setPointSize(10)
        self.lineEdit_07.setFont(font)
        self.lineEdit_07.setAlignment(QtCore.Qt.AlignCenter)
        self.lineEdit_07.setObjectName(_fromUtf8("lineEdit_07"))
        self.lineEdit_07.setText(WEIGHT)

        self.lineEdit_08 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_08.setGeometry(QtCore.QRect(220, 280, 341, 41))
        self.lineEdit_08.setObjectName(_fromUtf8("lineEdit_08"))
        self.lineEdit_08.setText(DRAWING_NUMBER)

        self.lineEdit_09 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_09.setGeometry(QtCore.QRect(570, 280, 81, 41))
        self.lineEdit_09.setObjectName(_fromUtf8("lineEdit_09"))
        self.lineEdit_09.setText(SHEET)

        self.lineEdit_20 = QtGui.QLineEdit(self.centralWidget) # Copyright
        self.lineEdit_20.setGeometry(QtCore.QRect(20, 330, 771, 22))
        self.lineEdit_20.setObjectName(_fromUtf8("lineEdit_20"))
        self.lineEdit_20.setText(COPYRIGHT)

        self.lineEdit_10 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_10.setGeometry(QtCore.QRect(690, 290, 101, 30))
        self.lineEdit_10.setObjectName(_fromUtf8("lineEdit_10"))
        self.lineEdit_10.setText(Note_A)

        self.lineEdit_11 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_11.setGeometry(QtCore.QRect(690, 260, 101, 30))
        self.lineEdit_11.setObjectName(_fromUtf8("lineEdit_11"))
        self.lineEdit_11.setText(Note_B)

        self.lineEdit_12 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_12.setGeometry(QtCore.QRect(690, 230, 101, 30))
        self.lineEdit_12.setObjectName(_fromUtf8("lineEdit_12"))
        self.lineEdit_12.setText(Note_C)

        self.lineEdit_13 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_13.setGeometry(QtCore.QRect(690, 200, 101, 30))
        self.lineEdit_13.setObjectName(_fromUtf8("lineEdit_13"))
        self.lineEdit_13.setText(Note_D)

        self.lineEdit_14 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_14.setGeometry(QtCore.QRect(690, 170, 101, 30))
        self.lineEdit_14.setObjectName(_fromUtf8("lineEdit_14"))
        self.lineEdit_14.setText(Note_E)

        self.lineEdit_15 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_15.setGeometry(QtCore.QRect(690, 140, 101, 30))
        self.lineEdit_15.setObjectName(_fromUtf8("lineEdit_15"))
        self.lineEdit_15.setText(Note_F)

        self.lineEdit_16 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_16.setGeometry(QtCore.QRect(690, 110, 101, 30))
        self.lineEdit_16.setObjectName(_fromUtf8("lineEdit_16"))
        self.lineEdit_16.setText(Note_G)

        self.lineEdit_17 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_17.setGeometry(QtCore.QRect(690, 80, 101, 30))
        self.lineEdit_17.setObjectName(_fromUtf8("lineEdit_17"))
        self.lineEdit_17.setText(Note_H)

        self.lineEdit_18 = QtGui.QLineEdit(self.centralWidget)
        self.lineEdit_18.setGeometry(QtCore.QRect(690, 50, 101, 30))
        self.lineEdit_18.setObjectName(_fromUtf8("lineEdit_18"))
        self.lineEdit_18.setText(Note_I)
##
        self.lineEdit_page = QtGui.QLineEdit(self.centralWidget)         # nom de page
        self.lineEdit_page.setGeometry(QtCore.QRect(20, 365, 181, 20))
        self.lineEdit_page.setToolTip("Name page to work"+"\n"
                                      "The name of the first page is always named 'Page'"+"\n"
                                      "Select the new page in the Combo view")
        self.lineEdit_page.setObjectName(_fromUtf8("lineEdit_page"))
        self.lineEdit_page.setEnabled(False)
        self.lineEdit_page.setStyleSheet("color: red")
        self.lineEdit_page.setText(PageActive)
        self.lineEdit_page.textChanged.connect(self.on_lineEdit_page_Pressed) # 

        self.label_01T = QtGui.QLabel(self.centralWidget)
        self.label_01T.setGeometry(QtCore.QRect(220, 0, 91, 16))
        self.label_01T.setObjectName(_fromUtf8("label_01T"))

        self.textEdit_01 = QtGui.QTextEdit(self.centralWidget)            # Title
        self.textEdit_01.setGeometry(QtCore.QRect(220, 20, 431,55 ))
        font = QtGui.QFont()
        font.setPointSize(15)
        font.setBold(True)
        font.setWeight(75)
        self.textEdit_01.setFont(font)
        self.textEdit_01.setObjectName(_fromUtf8("textEdit_01"))
        self.textEdit_01.setText(TITLE)

        self.label_02T = QtGui.QLabel(self.centralWidget)
        self.label_02T.setGeometry(QtCore.QRect(220, 80, 101, 16))
        self.label_02T.setObjectName(_fromUtf8("label_02T"))

        self.textEdit_02 = QtGui.QTextEdit(self.centralWidget)            # DESCRIPTION
        self.textEdit_02.setGeometry(QtCore.QRect(220, 100, 431, 55))
        self.textEdit_02.setObjectName(_fromUtf8("textEdit_02"))
        self.textEdit_02.setText(DESCRIPTION)

        self.label_02bT = QtGui.QLabel(self.centralWidget)
        self.label_02bT.setGeometry(QtCore.QRect(220, 160, 90, 16))
        self.label_02bT.setObjectName(_fromUtf8("label_02bT"))

        self.textEdit_02b = QtGui.QTextEdit(self.centralWidget)            # COMPANY
        self.textEdit_02b.setGeometry(QtCore.QRect(220, 180, 340, 60))
        self.textEdit_02b.setObjectName(_fromUtf8("textEdit_02b"))
        self.textEdit_02b.setText(COMPANY)

        self.label_01 = QtGui.QLabel(self.centralWidget)
        self.label_01.setGeometry(QtCore.QRect(20, 0, 91, 16))
        self.label_01.setObjectName(_fromUtf8("label_01"))

        self.label_02 = QtGui.QLabel(self.centralWidget)
        self.label_02.setGeometry(QtCore.QRect(20, 40, 53, 16))
        self.label_02.setObjectName(_fromUtf8("label_02"))

        self.label_03 = QtGui.QLabel(self.centralWidget)
        self.label_03.setGeometry(QtCore.QRect(20, 80, 101, 16))
        self.label_03.setObjectName(_fromUtf8("label_03"))

        self.label_04 = QtGui.QLabel(self.centralWidget)
        self.label_04.setGeometry(QtCore.QRect(20, 120, 91, 16))
        self.label_04.setObjectName(_fromUtf8("label_04"))

        self.label_06 = QtGui.QLabel(self.centralWidget)
        self.label_06.setGeometry(QtCore.QRect(20, 260, 53, 16))
        self.label_06.setObjectName(_fromUtf8("label_06"))

        self.label_07 = QtGui.QLabel(self.centralWidget)
        self.label_07.setGeometry(QtCore.QRect(100, 260, 101, 16))
        self.label_07.setObjectName(_fromUtf8("label_07"))

        self.label_08 = QtGui.QLabel(self.centralWidget)
        self.label_08.setGeometry(QtCore.QRect(220, 260, 121, 16))
        self.label_08.setObjectName(_fromUtf8("label_08"))

        self.label_09 = QtGui.QLabel(self.centralWidget)
        self.label_09.setGeometry(QtCore.QRect(570, 260, 53, 16))
        self.label_09.setObjectName(_fromUtf8("label_09"))

        self.label_10 = QtGui.QLabel(self.centralWidget)
        self.label_10.setGeometry(QtCore.QRect(670, 290, 16, 33))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_10.setFont(font)
        self.label_10.setObjectName(_fromUtf8("label_10"))

        self.label_11 = QtGui.QLabel(self.centralWidget)
        self.label_11.setGeometry(QtCore.QRect(670, 260, 16, 33))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_11.setFont(font)
        self.label_11.setObjectName(_fromUtf8("label_11"))

        self.label_12 = QtGui.QLabel(self.centralWidget)
        self.label_12.setGeometry(QtCore.QRect(670, 230, 16, 33))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_12.setFont(font)
        self.label_12.setObjectName(_fromUtf8("label_12"))

        self.label_13 = QtGui.QLabel(self.centralWidget)
        self.label_13.setGeometry(QtCore.QRect(670, 200, 18, 33))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_13.setFont(font)
        self.label_13.setObjectName(_fromUtf8("label_13"))

        self.label_14 = QtGui.QLabel(self.centralWidget)
        self.label_14.setGeometry(QtCore.QRect(670, 170, 15, 33))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_14.setFont(font)
        self.label_14.setObjectName(_fromUtf8("label_14"))

        self.label_15 = QtGui.QLabel(self.centralWidget)
        self.label_15.setGeometry(QtCore.QRect(670, 140, 14, 33))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_15.setFont(font)
        self.label_15.setObjectName(_fromUtf8("label_15"))

        self.label_16 = QtGui.QLabel(self.centralWidget)
        self.label_16.setGeometry(QtCore.QRect(670, 110, 18, 33))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_16.setFont(font)
        self.label_16.setObjectName(_fromUtf8("label_16"))

        self.label_17 = QtGui.QLabel(self.centralWidget)
        self.label_17.setGeometry(QtCore.QRect(670, 80, 18, 33))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_17.setFont(font)
        self.label_17.setObjectName(_fromUtf8("label_17"))

        self.label_18 = QtGui.QLabel(self.centralWidget)
        self.label_18.setGeometry(QtCore.QRect(670, 50, 10, 33))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.label_18.setFont(font)
        self.label_18.setObjectName(_fromUtf8("label_18"))

        self.label_19 = QtGui.QLabel(self.centralWidget)
        self.label_19.setGeometry(QtCore.QRect(720, 15, 100, 33))
        self.label_19.setObjectName(_fromUtf8("label_19"))

        self.label_page = QtGui.QLabel(self.centralWidget)
        self.label_page.setGeometry(QtCore.QRect(20, 350, 181, 16))
        self.label_page.setObjectName(_fromUtf8("label_page"))

        self.label_Version = QtGui.QLabel(self.centralWidget)        # Version
        self.label_Version.setGeometry(QtCore.QRect(650, 383, 160, 20))
        self.label_Version.setObjectName(_fromUtf8("label_Version"))

        MainWindow.setCentralWidget(self.centralWidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowFlags(PySide.QtCore.Qt.WindowStaysOnTopHint) # cette fonction met la fenetre en avant
        MainWindow.setWindowIcon(QtGui.QIcon(self.path + "Macro_CartoucheFC_Full.png")) # change l'icone de la fenetre principale
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", __title__ + " ("+__version__+"-"+__date__+") Only for the FC 0.19"))

#        self.pushButton01.setText("Position")
        self.pushButton02.setText("Quit") #Quitter
        self.pushButton03.setText("Memo") #Memo
        self.pushButton04.setText("Clean")#Nettoyer
        self.pushButton05.setText("Write")#Appliquer
        self.pushButton06.setText("D.")
        self.pushButton07.setText("H.")
        self.pushButton08.setText("D.")
        self.pushButton09.setText("H.")
        self.pushButton10.setText("Create Symb.")

        self.label_01.setText("Designed by :")
        self.label_02.setText("Date :")
        self.label_03.setText("Checked by :")
        self.label_04.setText("Date :")
        self.label_06.setText("Scale :")
        self.label_07.setText("Weight (Kg) :")
        self.label_08.setText("Drawing number :")
        self.label_01T.setText("Title :")
        self.label_02T.setText("Description :")
        self.label_02bT.setText("Company :")
        self.label_09.setText("Sheet :")

        self.label_10.setText("A")
        self.label_11.setText("B")
        self.label_12.setText("C")
        self.label_13.setText("D")
        self.label_14.setText("E")
        self.label_15.setText("F")
        self.label_16.setText("G")
        self.label_17.setText("H")
        self.label_18.setText("I")
        self.label_19.setText("Notes")
        self.label_20.setText("Warning")
        self.label_page.setText("Name page to work")
        self.label_Version.setText("Ver: " + str(__version__) + " " +str(__date__))        # Version
        self.groupBox.setTitle("Size :")
        self.radioButton_1.setText("A3 Landscape")
        self.radioButton_2.setText("A3 Portrait")
        self.radioButton_3.setText("A4 Landscape")
        self.radioButton_4.setText("A4 Portrait")
        self.radioButton_EU.setText("EU")
        self.radioButton_US.setText("US")
        self.lineEdit_05.setText("?")

#______________________________________________________________________________________
    # Radio Boutons
    def on_radioButton_A3_clicked(self):  # connect radioButton_A3

        self.label_20.setVisible(False)
        self.pushButton10.setStyleSheet("color: QPalette.Base")          # origin system
        self.pushButton10.setEnabled(True)
        self.lineEdit_05.setStyleSheet("color: QPalette.Base")           # origin system
        self.lineEdit_05.setText("A3")

    def on_radioButton_A4_clicked(self):  # connect radioButton_A4

        self.label_20.setVisible(False)
        self.pushButton10.setStyleSheet("color: QPalette.Base")          # origin system
        self.pushButton10.setEnabled(True)
        self.lineEdit_05.setStyleSheet("color: QPalette.Base")           # origin system
        self.lineEdit_05.setText("A4")
    # Radio Boutons

    def on_radioButton_EU_clicked(self):    # Bouton /Symbole EU
        global SymbolSwitch

        SymbolSwitch = 1

    def on_radioButton_US_clicked(self):    # Bouton /Symbole US
        global SymbolSwitch

        SymbolSwitch = 0

    def on_pushButton10_clicked(self):      # Bouton /Symbole EU US disposition dans le cartouche
        global SymbolSwitch
        global PageActive

        self.label_20.setVisible(False)
        print("* ",PageActive)
        if PageActive != "Select your page":
            if self.radioButton_0.isChecked():
                self.label_20.setVisible(True)
                self.label_20.setToolTip("Select the template format")
                self.pushButton10.setEnabled(False)
                self.pushButton10.setStyleSheet("color: red")
                FreeCAD.Console.PrintError("Select one format A3 or A4 for the Symbole" + "\n")
            else:
                self.pushButton10.setEnabled(True)
                self.pushButton10.setStyleSheet("background-color: #FF5B2B")
                self.pushButton10.setText("Wait.")
                FreeCADGui.updateGui()                # rafraichi l'ecran
                if SymbolSwitch == 1:
                    if self.radioButton_1.isChecked():
                        symbol_EU(247.5, 263.5, 0.8)  # A3 Landscape
                    elif self.radioButton_2.isChecked():
                        symbol_EU(124.55, 386.3, 0.8) # A3 Portrait
                    elif self.radioButton_3.isChecked():
                        symbol_EU(158.7, 181.35, 0.6) # A4 Landscape
                    elif self.radioButton_4.isChecked():
                        symbol_EU(71.9, 269.0, 0.6)   # A4 Portrait
                else:
                    if self.radioButton_1.isChecked():
                        symbol_US(247.5, 263.5, 0.8)  # A3 Landscape
                    elif self.radioButton_2.isChecked():
                        symbol_US(124.55, 386.3, 0.8) # A3 Portrait
                    elif self.radioButton_3.isChecked():
                        symbol_US(158.7, 181.35, 0.6) # A4 Landscape
                    elif self.radioButton_4.isChecked():
                        symbol_US(71.9, 269.0, 0.6)   # A4 Portrait
                self.pushButton10.setStyleSheet("color: QPalette.Base")# origin system
                self.pushButton10.setText("Create Symb.")
                FreeCADGui.updateGui()                                 # rafraichi l'ecran
        else:
            self.pushButton10.setStyleSheet("background-color: red")
            FreeCAD.Console.PrintError("Select one drawing page " + "\n")
        
    def on_lineEdit_page_Pressed(self):   # Name page

        global PageActive
        self.lineEdit_page.setStyleSheet("color: green")
        PageActive = self.lineEdit_page.text()

    def on_pushButton09_clicked(self):    # Bouton /heure document

        self.lineEdit_04h.setText(str(heure()))

    def on_pushButton08_clicked(self):    # Bouton date/ document

        global SymbolSwitch
        if SymbolSwitch==0:
            self.lineEdit_04.setText(str(dateUs()))
        else:
            self.lineEdit_04.setText(str(dateEu()))

    def on_pushButton07_clicked(self):    # Bouton /heure checked

        self.lineEdit_02h.setText(str(heure()))

    def on_pushButton06_clicked(self):    # Bouton date/ checked
        global SymbolSwitch

        if SymbolSwitch==0:
            self.lineEdit_02.setText(str(dateUs()))
        else:
            self.lineEdit_02.setText(str(dateEu()))

    def on_pushButton05_clicked(self):    # Bouton Appliquer
    
        try:
            global DESIGNED_BY, CREATION_DATE, CREA_DATE  , CREA_TIME, CHECKED_BY, CHECK_DATE
            global CHEC_DATE  , CHEC_TIME    , SIZE       , SCALE    , WEIGHT    ,DRAWING_NUMBER
            global SHEET      , TITLE        , DESCRIPTION, COMPANY  , COPYRIGHT
            global Note_A, Note_B, Note_C, Note_D, Note_E, Note_F, Note_G, Note_H, Note_I
            global ui
            global SymbolSwitch
            global PageActive

            try:
                page = App.activeDocument().getObjectsByLabel(PageActive.encode('utf-8'))[0]
            except Exception:
                page = App.activeDocument().getObjectsByLabel(PageActive)[0]

            if len(str(page)) != 2:

                self.pushButton05.setStyleSheet("background-color: #FF5B2B")
                self.pushButton05.setText("Wait.")
                FreeCADGui.updateGui()                # rafraichi l'ecran

                DESIGNED_BY = (self.lineEdit_01.text())
                CREATION_DATE = (self.lineEdit_02.text())+" - "+(self.lineEdit_02h.text())
                CHECKED_BY = (self.lineEdit_03.text())
                CHECK_DATE = (self.lineEdit_04.text())+" - "+(self.lineEdit_04h.text())
                SIZE = (self.lineEdit_05.text())
                SCALE = (self.lineEdit_06.text())
                WEIGHT = (self.lineEdit_07.text())
                DRAWING_NUMBER = (self.lineEdit_08.text())
                SHEET = (self.lineEdit_09.text())
                TITLE = (self.textEdit_01.toPlainText())
                DESCRIPTION = (self.textEdit_02.toPlainText())
                COMPANY = (self.textEdit_02b.toPlainText())
                COPYRIGHT = (self.lineEdit_20.text())
    
                Note_A = (self.lineEdit_10.text())
                Note_B = (self.lineEdit_11.text())
                Note_C = (self.lineEdit_12.text())
                Note_D = (self.lineEdit_13.text())
                Note_E = (self.lineEdit_14.text())
                Note_F = (self.lineEdit_15.text())
                Note_G = (self.lineEdit_16.text())
                Note_H = (self.lineEdit_17.text())
                Note_I = (self.lineEdit_18.text())
                self.pushButton05.setStyleSheet("color: QPalette.Base")           # origin system
                self.pushButton05.setText("Write.")
#                try:
                FreeCAD.getDocument(App.ActiveDocument.Name).getObject(page.Name).EditableTexts = [DESIGNED_BY, CREATION_DATE, CHECKED_BY, CHECK_DATE, SIZE, SCALE, WEIGHT, DRAWING_NUMBER, SHEET, TITLE, DESCRIPTION, COMPANY, COPYRIGHT, Note_A, Note_B, Note_C, Note_D, Note_E, Note_F, Note_G, Note_H, Note_I, ]
#old                    FreeCAD.getDocument(App.ActiveDocument.Name).getObjectsByLabel(PageActive.encode('utf-8'))[0].EditableTexts = [DESIGNED_BY, CREATION_DATE, CHECKED_BY, CHECK_DATE, SIZE, SCALE, WEIGHT, DRAWING_NUMBER, SHEET, TITLE, DESCRIPTION, COMPANY, COPYRIGHT, Note_A, Note_B, Note_C, Note_D, Note_E, Note_F, Note_G, Note_H, Note_I, ]
                App.ActiveDocument.recompute()
                FreeCAD.Console.PrintMessage("Write done to ( " + page.Label + " )" + "\n")
                self.pushButton05.setStyleSheet("color: QPalette.Base")
#                except Exception:
#                    FreeCAD.Console.PrintError("Error write cartouche or verify the selected page ( " + page.Label + " )" + "\n")
#                    self.pushButton05.setStyleSheet("background-color: red")
            else:
                FreeCAD.Console.PrintError("Error selected page ( " + Page.Label + " )" + "\n")
                self.pushButton05.setStyleSheet("background-color: red")

        except Exception:
           self.pushButton05.setStyleSheet("background-color: red")
           FreeCAD.Console.PrintError("Error or not page " + "\n")
        self.pushButton05.setText("Write")
        App.ActiveDocument.recompute()

    def on_pushButton04_clicked(self):    # Bouton nettoyer

        self.lineEdit_01.setText("")
        self.lineEdit_02.setText("")
        self.lineEdit_02h.setText("")
        self.lineEdit_03.setText("")
        self.lineEdit_04.setText("")
        self.lineEdit_04h.setText("")
        self.lineEdit_05.setStyleSheet("color: red")
        self.lineEdit_05.setText("?")
        self.lineEdit_06.setText("")
        self.lineEdit_07.setText("")
        self.lineEdit_08.setText("")
        self.lineEdit_09.setText("")
        self.textEdit_01.setText("")
        self.textEdit_02.setText("")
        self.textEdit_02b.setText("")
        self.lineEdit_20.setText("")
        self.lineEdit_10.setText("")
        self.lineEdit_11.setText("")
        self.lineEdit_12.setText("")
        self.lineEdit_13.setText("")
        self.lineEdit_14.setText("")
        self.lineEdit_15.setText("")
        self.lineEdit_16.setText("")
        self.lineEdit_17.setText("")
        self.lineEdit_18.setText("")

        self.pushButton10.setStyleSheet("color: QPalette.Base")                # origin system
        self.label_20.setVisible(False)
        self.radioButton_0.setChecked(True)
        self.pushButton05.setEnabled(True)
        self.pushButton05.setStyleSheet("background-color: QPalette.Base")     # origin system
        self.groupBox.setEnabled(True)

    def on_pushButton03_clicked(self):    # Bouton Memo
        global MDESIGNED_BY, MCREATION_DATE, MCREA_DATE  , MCREA_TIME, MCHECKED_BY, MCHECK_DATE
        global MCHEC_DATE  , MCHEC_TIME    , MSIZE       , MSCALE    , MWEIGHT    ,MDRAWING_NUMBER
        global MSHEET      , MTITLE        , MDESCRIPTION, MCOMPANY  , MCOPYRIGHT
        global MNote_A, MNote_B, MNote_C, MNote_D, MNote_E, MNote_F, MNote_G, MNote_H, MNote_I
        
        self.lineEdit_01.setText(MDESIGNED_BY)
        self.lineEdit_02.setText(MCREA_DATE)
        self.lineEdit_02h.setText(MCREA_TIME)
        self.lineEdit_03.setText(MCHECKED_BY)
        self.lineEdit_04.setText(MCHEC_DATE)
        self.lineEdit_04h.setText(MCHEC_TIME)
        self.lineEdit_05.setText("?") #(SIZE)
        self.lineEdit_06.setText(MSCALE)
        self.lineEdit_07.setText(MWEIGHT)
        self.lineEdit_08.setText(MDRAWING_NUMBER)
        self.lineEdit_09.setText(MSHEET)
        self.textEdit_01.setText(MTITLE)
        self.textEdit_02.setText(MDESCRIPTION)
        self.textEdit_02b.setText(MCOMPANY)
        self.lineEdit_20.setText(MCOPYRIGHT)
        self.lineEdit_10.setText(MNote_A)
        self.lineEdit_11.setText(MNote_B)
        self.lineEdit_12.setText(MNote_C)
        self.lineEdit_13.setText(MNote_D)
        self.lineEdit_14.setText(MNote_E)
        self.lineEdit_15.setText(MNote_F)
        self.lineEdit_16.setText(MNote_G)
        self.lineEdit_17.setText(MNote_H)
        self.lineEdit_18.setText(MNote_I)
#        self.lineEdit_page.setText(PageActive)
        self.radioButton_0.setChecked(True)

    def on_pushButton02_clicked(self):    # Bouton Quitter

        App.Console.PrintMessage("End CartoucheFC_Full\r\n")
        self.window.hide()
        FreeCADGui.Selection.removeObserver(s)           # Uninstalls the resident function
        App.Console.PrintMessage("removeObserver"+"\n")

#    def on_pushButton01_clicked(self):    # Bouton appel de Position
#        MainWindow.resize(210, 480)
#        executer()
#        MainWindow.resize(810, 480)
#______________________________________________________________________________________

class SelObserver:

    App.Console.PrintMessage("run.."+"\n")
    def addSelection(self, document, object, element, position):  # addSelectionfor FC 0.19
#    def setSelection(self, document):                                        # setSelection for FC 0.18
        global PageActive
        global SymbolSwitch
        global ui
        global switchToPass

        if switchToPass == 0:
            if len(Gui.Selection.getSelection(document)) == 1:
                ff = ui
                ff.lineEdit_page.setStyleSheet("color: QPalette.Base")           # origin system
                ff.pushButton05.setEnabled(True)
                ff.pushButton05.setStyleSheet("background-color: QPalette.Base") # origin system
                ff.groupBox.setEnabled(True)
                if (str(Gui.Selection.getSelection(document)[0].Name[0:4]) == "Page"):
                    PageActive = str(Gui.Selection.getSelection(document)[0].Label)

                    try:
                        ff.lineEdit_page.setStyleSheet("color: green")
                        ff.lineEdit_page.setText(unicode(PageActive,'utf-8'))    # convert if accent
                    except Exception:
                        ff.lineEdit_page.setStyleSheet("color: green")
                        ff.lineEdit_page.setText(PageActive)                     # normal

                    ####search Symbol
                    if "Page" in App.activeDocument().getObjectsByLabel(PageActive)[0].Name:
                        for ii in (App.activeDocument().getObjectsByLabel(PageActive)[0].Group):
                            if (ii.Label == "Symbol_EU"):
                                ff.radioButton_EU.setChecked(True)
                                SymbolSwitch = 1
                                ff.pushButton10.setEnabled(True)
                            elif (ii.Label == "Symbol_US"):
                                ff.radioButton_US.setChecked(True)
                                SymbolSwitch = 0
                                ff.pushButton10.setEnabled(True)
                    ####

                    memoEntree()                    # entree memo click mouse
                    ff.on_pushButton03_clicked()    # Bouton Memo
                else:
                    FreeCAD.Console.PrintError("Select a valid Page__________________________" + "\n")
                    ff.lineEdit_page.setStyleSheet("color: red")
                    ff.lineEdit_page.setText("Select a valid Page")              # 
                    ff.pushButton05.setEnabled(False)
                    ff.pushButton05.setStyleSheet("background-color: red")       # This function gives a color button
                    ff.groupBox.setEnabled(False)

                    FreeCAD.Console.PrintMessage("                 " + "Name____________Label" + "\n")
                    for i in App.ActiveDocument.Objects:
                        if i.Name[0:4] == "Page":
                            name = i.Name + "                 "
                            labe = i.Label+ "                 "
                            FreeCAD.Console.PrintMessage("    Valid Page : " + name[:15] + "," + labe[:25] + "\n")
                    FreeCAD.Console.PrintError("_____________________________________________" + "\n")
    
for obj in FreeCAD.ActiveDocument.Objects:        # deslectionne
        FreeCADGui.Selection.removeSelection(obj)

s=SelObserver()
FreeCADGui.Selection.addObserver(s)               # install the function mode resident 

MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow(MainWindow)
MainWindow.show()


EDIT: 06/02/2021 : 20h26 Paris new version for FC 0.19 ; corrected also the symbol feature
Macro_CartoucheFC_Full.gif
Macro_CartoucheFC_Full.gif (159.6 KiB) Viewed 1209 times
OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.23756 (Git)
Build type: Release
Branch: master
Hash: 9c6e9184930a52b165a0b7274e3a45d1006bfe67
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0

mario
Last edited by mario52 on Sat Feb 06, 2021 8:58 pm, edited 3 times in total.
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
fredcoach
Posts: 6
Joined: Thu Feb 04, 2021 2:17 pm
Location: France

Re: Macro_cartoucheFC_Fully.py

Post by fredcoach »

Hello,
with freecad 0.18 (thanks Mario for the fix), when I select a page its name shows off in green on the bottom left of the window.
With freecad 0.19, nothing happens and the script does not work.
Do you know why? And how to fix this?
Thanks
mario52
Veteran
Posts: 4673
Joined: Wed May 16, 2012 2:13 pm

Re: Macro_cartoucheFC_Fully.py

Post by mario52 »

hi fredcoach
fredcoach wrote:ping
fredcoach wrote: Thu Feb 04, 2021 3:42 pm with freecad 0.18 (thanks Mario for the fix),
corrected and please tell me if it's good (run only in FC 0.19 version)

Code: Select all

    def addSelection(self, document, object, element, position):  # addSelectionfor FC 0.19
#    def setSelection(self, document):                                        # setSelection for FC 0.18
mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
fredcoach
Posts: 6
Joined: Thu Feb 04, 2021 2:17 pm
Location: France

Re: Macro_cartoucheFC_Fully.py

Post by fredcoach »

Hi Mario,
sorry I had not seen your answer before. As I am very new to Freecad I am not used yet to regularly check the forum.
Thanks for the fix. Now the page is selected and its name shows in green color.

But I also get an error message:
10:50:35 Traceback (most recent call last):
File "C:/Users/Fred/AppData/Roaming/FreeCAD/Macro/Macro_CartoucheFC_Full.py", line 1134, in addSelection
for ii in (App.activeDocument().getObjectsByLabel(PageActive)[0].Group):
<class 'AttributeError'>: 'TechDraw.DrawPage' object has no attribute 'Group'

Then when I press the "Write" button, it becomes red and I get an other error message (I think I already got it with version 0.18)):
10:54:19 Error write cartouche or verify the selected page ( Page )

I don't know if what I am doing is wrong or if there is another bug.

I find so many bugs in Freecad... It takes time to find ways to workaround them. And, often, doing exactly the same thing again starting from a saved file works perfectly! Thus I save after every operation... When I'll be better at using it and when I find time, I plan to go inside the code to fix a few of them (40 years as a programmer, I should be able to).
mario52
Veteran
Posts: 4673
Joined: Wed May 16, 2012 2:13 pm

Re: Macro_cartoucheFC_Fully.py

Post by mario52 »

hi
sorry I had not seen your answer before.
no problem you have time

i see <class 'AttributeError'>: 'TechDraw.DrawPage' object has no attribute 'Group'

this macro work only with only for FC 0.19 and Drawing Workbench and not TechDraw

mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
fredcoach
Posts: 6
Joined: Thu Feb 04, 2021 2:17 pm
Location: France

Re: Macro_cartoucheFC_Fully.py

Post by fredcoach »

Thank you Mario.
Following your post, I tried again inside the Drawing workbench and got exactly the same message.
And it seems that Freecad does not like to use Drawing.

23:21:30 Drawing became obsolete in 0.17; consider using TechDraw instead.
23:22:10 run..
23:22:18 Traceback (most recent call last):
File "C:/Users/Fred/AppData/Roaming/FreeCAD/Macro/Macro_CartoucheFC_Full.py", line 1134, in addSelection
for ii in (App.activeDocument().getObjectsByLabel(PageActive)[0].Group):
<class 'AttributeError'>: 'TechDraw.DrawPage' object has no attribute 'Group'
23:24:03 Error write cartouche or verify the selected page ( Page )

Line 1134 shows:
for ii in (App.activeDocument().getObjectsByLabel(PageActive)[0].Group):
Thanks,
Fred
mario52
Veteran
Posts: 4673
Joined: Wed May 16, 2012 2:13 pm

Re: Macro_cartoucheFC_Fully.py

Post by mario52 »

hi
fredcoach wrote: Sun Feb 14, 2021 10:38 pm <class 'AttributeError'>: 'TechDraw.DrawPage' object has no attribute 'Group'
i think you use the macro with one TechDraw.DrawPage page

you must use only (seulement) DraftWorkbench

Macro_cartoucheFC_Fully00.gif
Macro_cartoucheFC_Fully00.gif (971.28 KiB) Viewed 998 times
mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
Post Reply