-
-
Save mario52a/a25e802498bae6959335 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*- | |
from __future__ import unicode_literals | |
""" | |
*************************************************************************** | |
* Copyright (c) 2014 2015 2016 2017 2018 2019 2020 2021 2022 <mario52> * | |
* 2023 2024 * | |
* * | |
* 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 * | |
*************************************************************************** | |
* http://www.freecadweb.org/wiki/index.php?title=Macro_FCCircularText * | |
* WARNING! All changes in this file will be lost and * | |
* may cause malfunction of the program * | |
*************************************************************************** | |
""" | |
## FCCircularText.FCMacro # Icon fromTheme FreeCAD | |
## ver 0.14-2 #00.14-4 #00.15 (rmu)#00.16 #0.16b #0.16c #0.16d #0.17 2020/09/26 #0.17b 2020/09/28#0.18 2021/01/19 #0.19 2021/03/15 #0.20 2021/04/05 | |
## 0.21 2022/05/31 # 0.22 2022/06/06 # 0.22b 2023/11/15 # 0.22c 2023/11/17 # 0.22d 2024/07/11 # | |
## | |
################################################################################################### | |
## | |
##OS: Windows 10 build 19045 #OS: Windows 10 build 19045 | |
##Word size of FreeCAD: 64-bit #Word size of FreeCAD: 64-bit | |
##Version: 0.21.2.33771 (Git) #Version: 0.22.0dev.34667 (Git) | |
##Build type: Release #Build type: Release | |
##Branch: releases/FreeCAD-0-21 #Branch: main | |
##Hash: b9bfa5c5507506e4515816414cd27f4851d00489 #Hash: af5b8714a8371162addb97dd25c29250fcecf7ad | |
##Python 3.8.10, Qt 5.15.2, Coin 4.0.1, Vtk 8.2.0, OCC 7.6.3 #Python 3.10.12, Qt 5.15.8, Coin 4.0.0, Vtk 9.2.5, OCC 7.6.3 | |
##Locale: French/Mars (fr_MA) #Locale: French/Mars (fr_MA) | |
## | |
################################################################################################### | |
# | |
__Title__ = "FCCircularText" | |
__Author__ = "Mario52" | |
__Version__ = "0.22e" | |
__Date__ = "2024/07/11" #YYYY/MMM/DD | |
__Comment__ = "This macro creates a text around a cylinder or along a path line" | |
__Web__ = "https://forum.freecadweb.org/viewtopic.php?f=3&t=7384%22" | |
__Wiki__ = "https://wiki.freecadweb.org/Macro_FCCircularText" | |
__Icon__ = "https://wiki.freecadweb.org/images/c/c1/FCCircularTextButtom.png" | |
__IconL__ = "/usr/lib/freecad/Mod/plugins/icons/FCCircularTextButtom.png" | |
__IconW__ = "C:/Users/YourUserName/AppData/Roaming/FreeCAD/Macro" | |
__Github__ = "https://gist.github.com/mario52a/a25e802498bae6959335" | |
__Help__ = "start the macro and follow the instructions" | |
__Status__ = "stable" | |
__Requires__ = "freecad 0.19 and higher" | |
__Communication__ = "https://wiki.freecadweb.org/index.php?title=User:Mario52" | |
# | |
import PySide2 | |
from PySide2 import (QtWidgets, QtCore, QtGui) | |
from PySide2.QtWidgets import (QWidget, QApplication, QSlider, QGraphicsView, QGraphicsScene, QVBoxLayout, QStyle) | |
from PySide2.QtGui import (QPainter, QColor, QIcon) | |
from PySide2.QtSvg import * | |
import Draft, Part, FreeCAD, math, PartGui, FreeCADGui | |
from math import sqrt, pi, sin, cos, asin, degrees, radians, tan | |
from FreeCAD import Base | |
import os, time, sys | |
App=FreeCAD | |
Gui=FreeCADGui | |
try: | |
import webbrowser | |
except Exception: | |
None | |
#### Detect version macro ########################################### #22/03/2021 | |
try: | |
import urllib | |
from urllib import request | |
except Exception: | |
print("Not access urllib") | |
#### Detect version macro ########################################### #22/03/2021 | |
def vesionSearch(): | |
try: | |
contentPage = request.urlopen("https://wiki.freecadweb.org/Macro_" + __Title__).readlines() | |
versionDetect = dateDetect = "" | |
effacer = 0 | |
for i in contentPage: | |
if "ctEven macro-version" in str(i): | |
versionDetect = str((str(i).split(">")[1])) | |
versionDetect = versionDetect.split("\\")[0] | |
if "ctEven macro-date" in str(i): | |
dateDetect = str((str(i).split(">")[1])) | |
dateDetect = dateDetect.split("\\")[0] | |
if (versionDetect != "") and (dateDetect != ""): | |
break | |
try: | |
if (versionDetect == __Version__) and (dateDetect == __Date__): | |
None | |
else: | |
msg = ("New version availlable : " + "\n" + | |
str(versionDetect) + ":" + str(dateDetect) + "\n" + | |
"You can install with AddonManager") | |
FreeCAD.Console.PrintMessage("your actual version : " + str(__Version__) + " : " + str(__Date__) + "\n") | |
FreeCAD.Console.PrintMessage("new version availlable : " + str(versionDetect) + " : " + str(dateDetect) + "\n") | |
diag = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Information, 'New Version', msg) | |
diag.setWindowModality(QtCore.Qt.ApplicationModal) | |
diag.setWindowFlags(PySide2.QtCore.Qt.WindowStaysOnTopHint) # PySide cette fonction met la fenetre en avant | |
diag.exec_() | |
except Exception: | |
None | |
return versionDetect, dateDetect | |
except Exception: | |
FreeCAD.Console.PrintError("Not search version not connected for testing or internal error" + "\n") | |
# | |
global switchVersionSearch; switchVersionSearch = 0 # Search version switchable in | |
# Tools/Edit parameter/BaseApp/Preferences/Macros/FCMmacros/FCCircularText | |
switchVersionSearch = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("switchVersionSearch") | |
if switchVersionSearch == 1: | |
vesionSearch() | |
#### Detect version macro ########################################### | |
import sys,traceback | |
def sayexc(mess=''): | |
exc_type, exc_value, exc_traceback = sys.exc_info() | |
ttt=repr(traceback.format_exception(exc_type, exc_value,exc_traceback)) | |
lls=eval(ttt) | |
l=len(lls) | |
l2=lls[(l-3):] | |
FreeCAD.Console.PrintError(mess + "\n" +"--> ".join(l2)) | |
import os | |
import platform | |
global verPython ; verPython = sys.version_info | |
class ConfigManager(): | |
def __init__(self,name): | |
self.name="Plugins/"+name | |
def get(self,param,default,defaultWindows=None,defaultMac=None): | |
global verPython | |
os=platform.system() | |
#os='Linux' | |
#os='Windows' | |
#os='Darwin' | |
v=False | |
if not defaultWindows: | |
defaultWindows=default | |
if not defaultMac: | |
defaultMac=default | |
if os =='Windows' : | |
default= defaultWindows | |
if os =='Darwin' : | |
default= defaultMac | |
if verPython.major < 3: | |
if default.__class__ == unicode: | |
default=str(default) | |
else: | |
# encoder = str(encoder) | |
# return encoder | |
None | |
if default.__class__ == int: | |
v=FreeCAD.ParamGet('User parameter:'+self.name).GetInt(param) | |
if not v: | |
FreeCAD.ParamGet('User parameter:'+self.name).SetInt(param,default) | |
if default.__class__ == float: | |
v=FreeCAD.ParamGet('User parameter:'+self.name).GetFloat(param) | |
if not v: | |
FreeCAD.ParamGet('User parameter:'+self.name).SetFloat(param,default) | |
if default.__class__ == str: | |
v=FreeCAD.ParamGet('User parameter:'+self.name).GetString(param) | |
if not v: | |
FreeCAD.ParamGet('User parameter:'+self.name).SetString(param,default) | |
if default.__class__ == bool: | |
v=FreeCAD.ParamGet('User parameter:'+self.name).GetBool(param) | |
if not v: | |
FreeCAD.ParamGet('User parameter:'+self.name).SetBool(param,default) | |
if not v: | |
v=default | |
return v | |
global ui ;ui = "" | |
global s ;s = "" | |
global points ;points = 0.0 | |
global coor_X ;coor_X = 0.0 | |
global coor_Y ;coor_Y = 0.0 | |
global coor_Z ;coor_Z = 0.0 | |
global vec ;vec = 0 | |
global PolicePath | |
global originalFontName | |
global originalFontPath | |
cm=ConfigManager("circular text") | |
PolicePath=cm.get("PolicePath","/usr/share/fonts/","C:/Windows/Fonts/ARIAL.TTF","/Library/Fonts/Arial.ttf") | |
import FreeCADGui | |
Gui=FreeCADGui | |
global rayon ;rayon = 10.0 # radius | |
global texte ;texte = "FreeCAD the best" # FreeCad The Best your text | |
global debut ;debut = 0 # begin text | |
global rotation ;rotation = 360 # must exceed the number of characters of text | |
global SizeCaractere ;SizeCaractere = 2.0 # size font | |
global precision ;precision = 0.0 # | |
global correctionAngle ;correctionAngle = 0.0 # | |
global correctionRayon ;correctionRayon = 0.0 # | |
global debout ;debout = 1 # 1=stand 0=flat | |
global exterieur ;exterieur = 1 # 1=exteral 0=internal | |
global baseHelix ;baseHelix = 0.0 # base of helix | |
global endHelix ;endHelix = 0.0 # end of helix (heigth) | |
global pasHelix ;pasHelix = 2.0 # Pas of helix | |
global nombreCarParTour ;nombreCarParTour = 10 # number char by Pas | |
global PlacementX ;PlacementX = 0.0 # Placement character axis X | |
global PlacementY ;PlacementY = 0.0 # Placement characher axis Y | |
global PlacementZ ;PlacementZ = 0.0 # Placement characher axis Z | |
global inclinaisonX ;inclinaisonX = 0 # inclination character axis X | |
global inclinaisonY ;inclinaisonY = 0 # inclination character axis Y | |
global inclinaisonZ ;inclinaisonZ = 0 # inclination character axis Z + correctionAngle | |
global cercleClock ;cercleClock = rayon # diameter support clock | |
global nombreFaces ;nombreFaces = 0 # number Faces of support 0=none 1=circle 2=rectangle 3=triangle 4,5 ... polygon | |
global romain ;romain = 0 # number type roman or arabic | |
global redressement ;redressement = 0 # character V or circular | |
global comP ;comP = "" # contener | |
global nameL ;nameL = "" # contener | |
global epaisseurExtrus ;epaisseurExtrus = 0.0 # epaisseur extrusion caracteres | |
global epaisSupportClock;epaisSupportClock= 0.0 # epaisseur extrusion support clock | |
global compount1 ;compount1 = 0 # cree un compose des caracteres | |
#### for delete last object | |
global FcString ##;FcString = "" # conteneur | |
global FcStringPoints ##;FcStringPoints = "" # conteneur | |
global circleGuide ##;circleGuide = "" # cercle guide repere | |
global helixGuide ##;helixGuide = "" # helix guide repere | |
global suppExtrude ##;suppExtrude = "" # extrusion support clock | |
global createCompound ##;createCompound = "" # compound texte | |
global selComplete ##;selComplete = "" # | |
#### for delete last object | |
# pointColor | |
global red ;red = 1.0 # 1 = 255 [ color num x = (1/255)*x ] | |
global green ;green = 0.0 # | |
global blue ;blue = 0.0 # | |
#### section color | |
global setStyleBase ; setStyleBase = "background-color: QPalette.Base" | |
global setStylePathR ; setStylePathR = "background-color: #F8E0E0" # Red (248, 224, 224) | |
global setStylePathG ; setStylePathG = "background-color: #E0F8E0" # Green (224, 248, 224) | |
global setStyleRed ; setStyleRed = "background-color: #e00000" # rgb (224, 0, 0) | |
global setStyleOrange ; setStyleOrange = "background-color: #ffa500" # rgb (255, 165, 0) | |
global setStyleBlueLight; setStyleBlueLight= "background-color: #c3d0e8" # rgb (195, 208, 232) | |
if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/MainWindow").GetString("StyleSheet") != "": | |
setStyleBlueLight = setStylePathR = setStylePathG = setStyleRed = setStyleOrange = setStyleBase | |
#print("StyleSheet desactivated") | |
#### section color | |
#path################################################################# | |
global path # | |
#path = FreeCAD.ConfigGet("AppHomePath") # path FreeCAD installation | |
#path = FreeCAD.ConfigGet("UserAppData") # path FreeCAD User data | |
#path = "your path" # your directory path | |
param = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macro") # macro path | |
path = param.GetString("MacroPath","") + "/" # macro path | |
path = path.replace("\\","/") # convert the "\" to "/" | |
#FreeCAD.Console.PrintMessage( "Path for the icons : " + path + "\n")# | |
###################################################################### | |
## | |
global setPathLatestDirectoryManual #; setPathLatestDirectoryManual = "C:\\ ???" # mode manuel | |
setPathLatestDirectoryManual = FreeCAD.ParamGet(u"User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetString(u"setPathLatestDirectoryManual") | |
if setPathLatestDirectoryManual == "": setPathLatestDirectoryManual = "C:/" | |
FreeCAD.ParamGet(u"User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetString(u"setPathLatestDirectoryManual", setPathLatestDirectoryManual) #*"C:\ ???" | |
## | |
#### Section Icones #### | |
## icon fromTheme by FreeCAD | |
## base64 easyw-fc method | |
## https://forum.freecadweb.org/viewtopic.php?f=9&t=24742&start=100#p363271 | |
import base64 | |
#FCCircularTextButtom=\ | |
#""" | |
#Qk3KGQEAAAAAAIoAAAB8AAAAyAAAAFoAAAABACAAAwAAAEAZAQATCwAAEwsAAAAAAAAAAAAAAAD/AAD/AAD/AAAAAAAA/0JHUnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAmHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Yd3f/mHd3/5h3d/+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+Xdnb/l3Z2/5d2dv+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5d1df+XdXX/l3V1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+Xdnb/mHd3/5h3d/+Yd3f/l3V1/4JlZf9/Y2P/f2Nj/4xtbf+Uc3P/gWVl/5l3d/+Yd3f/mHd3/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdXX/lnV1/5Z1df+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+Ydnb/jGxs/4FkZP9qUlL/dltb/11KTP8OFBX/BhYd/wAUG/9qUlL/FCYw/xYbH/8RHSb/IyMn/3FXV/8SFRX/DRMU/wYWHf8DFRv/hWZm/3NZWf9pUlL/aVFR/2lRUf+Jamr/lnR0/5h1df+Ydnb/l3V1/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5h2dv99YWH/a1NT/wwYHv9LOzr/HjZB/w8dJv8LHyr/FSIr/xcwPv8THCP/BCAv/wUgLv8UGyD/FRsg/w4eKP8MHin/ER0l/xUbIP8VGyH/DB4p/wweKf8RGR3/Exsh/xQcIv8DIC//BCAv/xUdJP9+YmH/QDMz/w4WGf9LOz3/alJS/3xgYP+XdHT/mHV1/5h2dv+XdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnR0/5Z0dP+WdHT/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5d0dP+Kamr/OS8v/yAuNf8dNUH/Dh4o/wcgLf8UGiD/EB0m/wkfLP8NHij/Ehwj/xIfKP8VHiX/FR8n/xElMf8QJjT/EyUw/xMlMP8RKjn/ESo5/xErOv8RKzr/ESs6/xEqOf8TKDX/FSUw/xUiLP8VICn/Dx8p/xcaHf8ZGBb/Ehwj/wweKv8GIC7/EB0m/2xUU/87Ly//ERca/1tHSP9qUlL/jW1t/5Zzc/+XdHT/l3R0/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Wc3P/lnNz/5Zzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+ScXH/X0lJ/yZGU/8PHSf/Dh4o/xMbIv8PHif/CB8s/xIcJP8VHSP/ESIt/wsnNv8FLD7/BTBD/wYyR/8GNEr/BzdN/wg5Uf8KPFP/FSk3/wtCW/8MRF7/Dkhh/w9JY/8RTGf/EU1o/xNPav8TUGr/E09q/xJOaP8RS2X/D0hh/wxCWv8KPlX/EzJD/xEtPf8UJjH/ESEs/xoWE/8TGyL/DB4q/wYgLf8KGiL/fWFh/2VOTv9ZRkX/dltb/4JkZP+YdXX/lnR0/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/jm1u/0s2NP8QHSb/Exwj/xkZGv8LHyr/BSAu/xMcI/8THib/BSY2/wUqO/8FLD//BS9C/wUxRf8GM0j/BTVL/wY3Tv8KN0z/DjZK/w44Tf8XIiv/ED5U/xFAV/8SQ1v/FEdf/xZLY/8YT2j/G1Rt/x5Zc/8iaoj/Jm6N/ylzkv8rdpX/LHeW/yx3lv8sdZT/J26M/yNohf8dX3v/FlJt/xNDWv8TNkn/Ei9A/xYiKv8WGx//GBgY/xQbIf8JHyv/EB0m/xUbH/9xWFj/lnR0/4tsbP+XdXX/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXNz/5Vzc/+Vc3P/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5h0dP8YBgD/PnaL/y9WZf8QHSb/BSAu/wofK/8THST/BSQz/wUnN/8FKDn/BSo8/wQsPv8LKjr/Dyc2/xIlMf8VICj/FiAo/xMlMf8RKjn/FCc0/xQoNf8SL0D/EjFC/xMzRf8TNUf/FDdK/xU6Tf8VPFD/Fz5S/xgwPf8ZMkD/GjRC/yFOYv8nWnD/K2F4/zeAnf87hqT/RZq7/0qixP9KocP/Rpu8/0GSs/84haT/KnCO/yFif/8SS2X/FTlL/xUpNv8SISz/Ehsh/xYbIP9aRkb/ERUU/w8YHf9tU1P/fF9f/4RlZf+WcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/hGVl/xQbIf8MHin/ER0l/wUgLv8IHyz/Dx4n/wUjMf8FJDP/BSU0/wclM/8SICr/Fh0i/xEhLP8LJzb/BSw//wUvQv8FMUX/BjNI/wY2S/8SKzr/CzhN/wk9Vf8KP1j/C0Jb/w1FX/8OSGP/EExn/xJQa/8UU2//F1dz/xlceP8dYH3/H2SC/yJphv8lbYv/IlZt/yVbcv8iS13/IkZW/zRtg/8/gJn/UaG//1qw0P9nye3/Zsfq/1u32f9Sqsz/PYys/y93lv8cWXT/FEFX/xQtPP8WICj/Ehsh/wseKv8MHin/ABIY/45tbf+Xc3P/hWZm/5d0dP+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv9sU1P/Fxod/xkZGf8QHSb/BCAu/xQcIf8FIS7/BSEu/wYgLf8SHCP/Exwi/wYjMf8FJjb/BSk5/wUrPf8FLUD/BS9D/wYyRv8GNEn/BjdN/xYiKv8IO1P/CT5W/wpAWf8MQ1z/DUZg/w9KZP8RTWj/E1Fs/xVVcf8YWXX/Gl16/x1if/8gZoP/JGuJ/ydvjv8qdZT/Km6K/zB6mP82haX/OYmp/z2Or/83e5b/NXSO/ypTZP89doz/VJy0/27N5v932/P/f+n+/3LW7f9lw97/TKC//zJ6mf8eXXj/FEBV/xUqN/8XHCD/Gxob/0s6Ov8HFx7/GBsf/2xTU/+HZ2f/lnNz/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lXJy/5Vycv+VcnL/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/l3Nz/xoTFP8HDBr/Cx8q/wsfKv8LHyr/ER0k/wUeK/8FHCb/Exof/wYdKP8FIS7/BSQz/wUnN/8FKTr/BSw+/wUuQf8FMET/BjNH/wY1Sv8JNUr/Eyw7/wg8VP8KP1f/C0Fa/wxEXv8OR2H/D0tl/xFOaf8UUm7/FlZy/xhadv8bXnv/HmOA/yFnhf8lbIr/JGB6/xwyPf8YDgP/GRkZ/ydWa/87jq//P5Gy/0KXuP9GnL7/SqLD/06myP9Rq8z/SJSx/z15kP8zYXL/Y7G4/3rV2P+L8PP/j/f//4Dj9f9pxt//TKC9/y92lP8bUmv/FTFB/xMiLf8QHCT/Cx4q/w4cJv9VQUH/lnJy/41sbP+WcnL/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+CY2P/M1pj/0Bzff86aHL/BSAu/wsfKv8RHCP/BRok/xMYHP8FGiT/BR4q/wUiMP8FJTT/BSg4/wUqPP8FLT//BS9C/wUxRf8GM0j/BjZL/xIrOv8LOE3/CT1V/wo/WP8LQlv/DUVf/w5IY/8QTGb/ElBr/xRUb/8XV3P/GVt4/x1gff8fZIH/ImmH/yNge/8XFxn/I1Vq/zB8m/8vc4//GyYs/y5nf/9Ak7T/RJm6/0eev/9AiKX/O3uU/0mWtP9Ytdj/XLrd/2C+4v9hwOL/W7LS/1Kct/84ZnX/c7/C/5Pr6/+c+Pn/l/b+/4Lg8f9fudP/PYyp/yJifv8TP1P/FiMs/xgWE/8nISH/HB0h/yAfIv9tU1P/fF9f/5Bubv+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rxcf+UcXH/lHFx/5Rx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Vv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv9kQ0P/Q3SJ/1msy/9pyu7/acvu/xUAAP9kweT/O2+D/2rO8v9py+//acvv/1611f8QAAD/eeH//27L5f9ktsf/gOn//4Dp//+A6f//To2a/4Dq//9nvc//ab/R/3vh9v9erLz/MFVd/wcAAP9wz+v/ZLvU/w0AAP9py+//acvv/2nL7/9hvN3/S5Cp/1eoxv8wWWn/as3y/2nL7/9py+//WKnI/0OLpv88fJX/FRwi/xYPCf8aKjP/HjI7/zV7mP81fpv/FR8m/y1mfv86i6z/Oous/ziGpf8eR1r/IWJ9/xklLf8YO03/FlBq/xZRbP8ZIyr/CzVJ/xg2Rv8WVXH/FlVx/xdJYP8YPE//FlBq/xEtPP8HOU//DjJF/xdIX/8XKjb/BzlQ/wg5Tv8YJCv/JlNl/xEhLP8QHij/Kl50/w0gLP8MJjT/ERwk/xcXGP8iN0D/FRkd/25KSv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BWVv+AVlb/gFZW/4BW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U/9+U1P/flNT/35TU/9+U1P/flNT/35TU/9+U1P/flNT/35TU/9+U1P/flNT/35TU/9+U1P/flNT/35TU/9+U1P/flNT/35TU/9+U1P/flNT/35TU/9+U1P/flNT/35TU/9+U1P/flNT/35TU/9+U1P/flNT/35TU/9+U1P/flNT/35TU/9+U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/flNT/3pRUf9pQkH/T1BW/y9RWP9SU1n/P2p0/2i+0P+A6f//gOn//4Dp//9TlqT/ed/8/27M6P9YpL3/bs7x/2G21f9RmrX/NmV3/0aGnv9VpcL/MFlo/2rM8f9py+//acvv/1ipx/9CiaT/PHyV/w8cJv81fJr/Oous/zqLrP81fZv/JU5g/xUeJf8rYnn/LWV+/y1mf/8aJy7/HDxM/xQpNv8PMEH/F0pj/xZVcf8WVnL/GSYv/xgoM/8XJzH/Fycy/xYrOP8OQVj/GEFV/xZQa/8RLDv/BzlP/w4yRf8YHB//FiAn/xUcIf8XJjD/OYem/zR6lv8NIS3/DCUz/yE/TP8WHiT/EyAq/0aGnv8OBQL/GRkZ/xUZHf9rR0f/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99U1P/fVNT/31TU/99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv9+UlL/dk5O/35TU/9UODj/SoKP/27I2/9/5/3/guz//06Pof974///WKS7/xcaHf8RAAD/Kk1c/0J8kv9ds9L/as3x/0WFnf9Lkav/acvv/2nL7/9py+//R4ef/1Sx1P8cNUH/HTtJ/zqLrf86i6z/Oous/yxlff8qX3X/EBce/ziGpf86i6z/Oous/zV9m/8bNEH/DTNG/xUrOP8WVHD/FlVx/xZQav8YHSH/DTNG/xgeI/8WHyX/GB4j/xgdIf8WUm3/GD5R/wk3TP8HOU//FSk2/xdDWP8WGyD/Fhwh/xgZGv8vbIX/KFdr/wcoOP8VJS7/JU9h/wcoOP8WJjD/PXOI/xUZHf8TGR7/GRkZ/3dOTv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv95T0//aEA+/09SV/9Bcnz/SSEa/z5uff8pRk//SYyl/2C63P9Mkqz/NmZ4/yM4Qf9rz/T/BwAA/1+42f9py+//acvv/2rN8v8xZHj/UarN/zh3kP8gPUv/NHyZ/zmJqv87ja7/JlNm/xozP/8hRVX/Oous/zqLrP86i6z/K2J5/xs9Tv8JN0z/GDdI/xZVcf8WVXH/F0JX/xQnMv8SKjj/FlRv/xZWcv8WVHD/GSs2/xZWcv8XJzH/BzlP/wg4Tv8XNET/GD9T/wo3S/8GOlD/Fi07/ziGpP8aMj7/BSk6/yNLXP8bNkT/BSk6/zdpfP8rTlv/HCYr/xQZHf9SNzf/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fVJS/31SUv99UlL/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fVFR/3hPT/94Tk7/flJS/0kyMv9BfJL/X7nZ/2jK7v9rz/T/Qn6V/1SjwP8wWWj/aszx/2nL7/9py+//WKrI/0GHov9FkrD/QYyp/0CNq/83epX/L2iA/yNJWf8lT2H/EyAo/ylbcf86i6z/Oous/zuMrv8bMDv/FCk2/w8wQf8XSmP/FlVx/xZWcv8ZJzD/DTNF/xgrN/8WVXH/FlVx/xdJYP8XQFX/FlJt/xMrOP8HOU//DjJE/xdIYP8YKDP/BjlQ/wg4Tv8kT2H/NHqX/w0hLf8MJTP/Klxx/w0gLP8MJjT/GRUT/1anxP8/eI7/FRkd/2RCQv98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fVFR/29ISP9iOjb/TkpT/y9RYP9ILCn/PB8X/0uRq/9py+//acvv/2nL7/9Lkar/UKfJ/ypXaf8YDgT/FAQA/x06Rv8kR1b/PI+w/y1ngP8QHSb/NHuY/zqLrP86i6z/NHyZ/x9OZP8dTmX/FiIr/xg/U/8WVHD/FlBq/xgdIf8MNEj/GEBV/xZVcf8WVXH/GDNC/xdKYv8XQ1n/DDVI/wc5T/8SKzr/F05o/xMqOP8HOU//DTNF/yVNXv8lTmD/EiEr/xglLf8lT2H/Byg4/xMgKf8NHin/KEZS/x43Qv9BLC3/dUxM/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3xRUf98UVH/fFFR/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP98UFD/fVFR/3xQUP9wSUn/T01X/zhoev9Qmrb/YLrc/ydBTP85dIz/EBsk/yRKW/8ydZH/LGR7/yhXa/8nVWn/Ikpc/xs3Rf86i6z/Oous/zqLrP8rYnn/IV54/x1NYv8cVm//GlNs/xk/U/8YOEn/FCcy/xIqOP8WU2//FlVx/xZWcv8YJzH/EjRH/xkmLv8WIiv/FiMt/xkkLf8XRVv/DDRH/wc5T/8UJzL/FCEq/xgaHP8pWm//OYmo/xozQP8FKTr/Nmh7/xMIAv8YGRr/QSws/2tGRv97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e1BQ/3tQUP97UFD/e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/98UFD/fVFR/2xGRv9hODT/a0VF/3VLS/8+Kir/JlBj/zqMrf86i6z/NX6c/yNJWv8VHSP/KVtx/zqLrP86i6z/O42u/xw7S/8YHyT/GBoc/xkTDf8YFBH/FSs3/xdGXf8NM0X/GCs2/xZVcf8WVXH/FlBq/xggJ/8WJjH/FiYy/xIsO/8UKjf/FlRw/xgvPf8HOU7/BzlP/xcgJv8RHSb/FBwi/x83Q/8wcYv/DSAt/wslM/9Gh5//EQUA/080NP95Tk7/e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/97T0//e09P/3tPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3ZNTf9sRkb/VjMv/1gyLP8YQlH/bEZG/z4sLf8qXnT/Oous/zqLrP80e5n/GzI+/xEtPf8SKjn/F0pi/xdIYP8YOUr/GBod/ww0SP8YQFX/FlVx/xZVcf8YPlH/F0de/xYvPv8VGyD/Fxoc/xkbHP8WUGr/Eyo4/wc5T/8JN03/LWV9/yJGVv8NJTP/FyQs/yVPYf8IKDj/GR8m/1c1M/9oRET/fFBQ/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pPT/96T0//ek9P/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3xPT/96Tk7/cklJ/2ZAP/9WMi7/TTo+/xU2Qv9qRET/Py80/xkmLv8XQVb/FlVx/xdIX/8VHCD/Eik3/xZUb/8WVXH/FlZy/xkiKf8WVG//Fy88/wc5T/8GOlH/Fygz/xdGXP8MM0f/BzlP/xErOv8sZXz/HTA6/xAjLv8cGhv/Vzg3/1g5OP9rRUX/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/e09P/3pOTv93TEz/aURE/2lERP9WNzX/VDc2/3dNTf9XOTj/GzJB/xMyQf8TLzz/TjMz/1I3OP8SHCH/DyQv/xAjLf9LMTH/IhoY/xAjLf8cJi//Wjo6/2tFRf9fPj7/akRE/3xPT/96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv96Tk7/ek5O/3pOTv95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf97Tk7/e05O/3tOTv96Tk7/eU1N/3tOTv97Tk7/e05O/3pOTv97Tk7/e05O/3tOTv95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eU1N/3lNTf95TU3/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94TEz/eExM/3hMTP94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3hLS/94S0v/eEtL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0tL/3dLS/93S0v/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3dKSv93Skr/d0pK/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/dklJ/3ZJSf92SUn/ | |
#""" | |
#### | |
outDoor_Icon_b64=\ | |
""" | |
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 | |
""" | |
outDoorWord_Icon_b64=\ | |
""" | |
iVBORw0KGgoAAAANSUhEUgAAAMgAAABaCAIAAABylI6BAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAKnRFWHRBdXRob3IARnJlZUNBRCAoaHR0cDovL3d3dy5mcmVlY2Fkd2ViLm9yZylLpZ5SAAAAKHRFWHRDcmVhdGlvbiBUaW1lAHNhbS4gbWFycyAyNyAyMTo0NjozMSAyMDIxsNcRgwAAAap6VFh0RGVzY3JpcHRpb24AACiRVZLJTuQwEIbv/RSW7x2vWTpKgliENBKNRvSA5mpCKXggDrLdpOftx87SAz5E+qv++lxVTnVx6t/RJ1inB1NjllCMwLTDizZdjR9/3W4LfNGgTbX/cXWJgte48uR0jV+9/ygJGccxGUUy2I5wShn5vb87tK/Qq602zivTAkbBX5rhXvXgPlQLc/5uaJWf7lxIf45gOzBbq6GD98SAJ3v9rKYPT07uBaOntU2OQ0uoetIwNhuEqr3yVp9CKB7FWI1pwhgXRYqD5LMUVIooRZSU0oLxKGWNt0Hv0jTN8ULgbA5KwWhE8AlBJct3EcEnBJN5lmVRzgjBZEGLFSFWRLoTsUYsiLRII1GIOc0zUUSGkFM6ZXkuVoRkS6fhBIvk36X4LuX0erOMABI2U5FlRdVhONoWpmVdW1B+sM2jeTPDaCqyBs7JsOMb5aFxqk9Qr6xDPEeclTIrBUOccrYUrcb/laY7/HUe+ubWAlxf3qCwp93qPiej/6ey/v7YP8OXTr7EouUBPnV88CYMVpGzinOt81Qk/pjN5h/VOMGW1stEMQAAABB0RVh0U29mdHdhcmUARnJlZUNBRGMaYs8AAAAndEVYdFRpdGxlAEM6L1Byb3Zpc29pcmU0MDAvb3V0ZG9vcldvcmQyLnBuZ0LOpFMAABVWSURBVHic7V15eBRVtv/dDiQk+Bx9sjoDgfdGqXQWJhJgRJrBbWZ0VEZUJCGAoOKC88Z5qIAQkhAUnXH7HINAIOyERURAGZ/viQ6dhT0CWQp1PllUCLsQQrbufn/crupbVbequ5OqTgf699XX37m37nLq3l+dc+rW0iQtbRIiiMBsdCCEtLUOEVyBiBArAkvQwWaLECsC8xGxWBFYgquUWJ+c22Zia3+4/g4TW7sycMW6wi1nPjfYK5x9HDDtwEUsMth7/w13mtVRO8KVYLE2n/4/baZwdoKSOqrD1DvqQEbDo+nrCd4uryyiUNvEA13uCqCjdox2SaxNp/6XTQpnxzOEMBC4SYNMPciF1QwDCJPplYWzE5WFPQBELGWrjeh6dzAKtAO0G1e4seYzWU44N04SCQDm3NAjE/TzW3P4tK5Hk6nmllImgCfh3GNS3V7A0Wosl+s/2P23rVApXBDWFuvDE/8jywnnMoEbgeMBmCI9DxigNwwWWnoFxC0p8xhAmFPFU40VckMje/zOJCVDjXAk1objn1Ih4VyGNG309zivuAFdgmNV/xt/kOX9P/6Cq1v/G78HsP/Hn/PUCIpb3CQAJJwbK2V6qrFKzn+o5++5KoUnwsgVrv/hH1Swnx8NEMbFEc2vXpJFq2IsSqADx730Sun5vXLvDweO/4LnBBEYn6CxXtwksZ8fI5OsCkW05iM/v4d3COGFtrdY677fSgX7+VGUTwGESiqYEGOpqMOF22OzETdbXodeAfpBjrnS0dkDwH4+HfAAniqsvb666u67XwigbpuhLYm19tgnAOznH9bwCTpmxscbaV578aoE7Q31WKXKl1nFa6fFMZac1LNhatjPP3ouwQ5JtUd7/YFbrG3RNq6w6MjHABJ/egiAkth+rtqSexxjSUaItkprI/eDJ3pJHent9QBI7vE9gJSex2j5gGMsFfwaLb6de/OnvoVIowasEhsApMffZ9hOqBFqi7X68BYAiT89CFwL1GoMFVSGR5pghcW61BDVOcatLWzQDi+fA4klOHiiF5dbeoRjWg7WD/rsU3KP7+WICgyJDU0dPT89lUc+BJDR536DowslQkesVd9tBpD40wjgGiBKY068yeQeR+XkwRPxNNMh7HGKaQ5ht1McCKBzjEvHGvkNtjj8o1xh4ycZbk+Ujbj0SOb22GzEpW3QrBgrucdReCl+BAqeaRun56qn8vBHAMb0fcCg2dAgFK5wxb82AUi68DAQRYgNuARcyytIkror5k8imQ8VNb1pSfqr40YDjNwVScoquUGqCeWN3qlHqyT3OFZR07v1MZbq2H37pN6TexytqJHcroevVdKFEYCn4rvNY/9zBF/pUMFyi7X824+SLtwLdNIE4BfZqU3q7jNUMhzCPqc4oKKmN0AuNURRc6WBuTEWN9+XSTnEI4GZMVZFTe+k7kepnNT9qEMod4qp8I6SBwBO6LRHq1y4v+JfmwCM++UfjcpZCRuxEsu//Sjpwn1AR6m7y0AdQIBaKUd7PQgADqEcgFO8hZapqOndOcYFIKn7UWlS1deJmkNjd/HdLgU1A26PTZnZW5blOZZbYPcyssGFrX8fLbcjCw5hL6URZZUMh3BAczjqYUy6cF/ShXuXf/uRpfNrAJvNRizaln2zMfnivYQQQpoJaSSknhBCCLgbi8qT8fO3jwBwqcEG+Ao4hN0AHMIuTXUSgMBN0hwCya8ldT+qUqnypDzN22VlWKrpK6MnqwSiapPqIPdLB6TyZO/Kk70rT8Y7hANOMQWANIOq3juzyeSL9yz7ZqN1U2ywWeIKC8UNAJIv0pupzQA1BgF1VHkynlu48mS85BAHacwVlMmWxFgyErsd5eY7xWGqAlLwrroYRMtiLI1uHqc4gM1/ethmp9gfgEM4UH+iK1dJoA6IBeoAAB2BxuSLvzt46EMAE4WHdKpYAktcIYDki/R5I7c+CfhOkCKx2xEA0pqCMUyIsVjzwG2fmisoaWcjbuk0CFwNTuOSDvGsMmxHid2OsMkt+36l3yBtsxMQAzQDHQCSfPG3yRfvKhQ3WDHXejDfFS6u/iCl9g6ZY1zXw3VG3lFRpGiOL5NGWondjkiNEMJxOlqPQwwVUF9eqnqvOhW/wDlWb69+y1xZT2GfClR2CHsAOIR98EWcXj5dF+dmumah0qcj05EbQEi9YRAkDAAFletTaodrvJJfJ6Wer6pT8ZBiLBUcwi6HsEtVPgBBTwGv1aw6FU83mqtKaiHtNbho0JP5g2PveoQVFjgfgnT54hRTKbccwn6t5rwcTr8ptcMKKtebO90GMDPGWnBwbUrtsCCv5H241GDrHMOGI6qKpOpUvL3rkU/3/1qz7K6q0qoYS49M+iSzKsaiEjVaTjEV8CxwjnjKsYnm27se1lGpHnADHiBKtSOldviBinVPJT+qcyBmwuQFUh5LueeQboxFW0jochhA5xh39ek+rJ+UJXvXI9Wn+2ha1nbElbVJv/ksuItSBlzR8oZTrPp0H8BDD9ze9TC/tCZIMGy2GZDPQFq0of+lAfsPrn2m/2i9mmbBNIs176ui/pdug5cTNodQA2BhsUNTUNcZdY5xAyShy2EdI+8FNVcOYWd1cR9DKxW4N9TL1INcuAXPYxkbLY4aC4tHJnT5Tl9PNof7DD7nAshEN6UH05cb6DVUDZsMPsZSN8jCIexaWDyqurgvr0zLYqwWQ+sEEYwflMnka6H6dB9qtFRwCOVy8K7Tl0of1S5bQpcfABfgwuWQEMtEV0gIhBu+Y137pKHbC0p+I+83qCue6SvccBjSkwsOobygZCS81t7HTvFMX7GkrzQulsRYwcOsGEthtMQzfWgZQjxS5P4VRAWJdejBYbBww2GHUOMUuwD4Vd2Qr8pX/2nAmBYcauAw56pwxQMzATx5236HcJa26xR7MscJ5SwaxVh0QUG6icGlgnFm62Msv5teRb2kAYM5u8QzfcQzfdm9BSUj6WmmLNYXuuD37hBO+3Ithvkr7w7hlCwXlAwzPGY5x2uNmJlTEUXPhQUyZwTA2KZP/ehtHlZ0/L3UbwtiLO2zo4qkU0xRrrwbx1hqOIRzEJtD4A2temzGIRyHL0gMJMbSnmSBR9m+9jMbP+MVwMpoQb9rkzG2kU/ildH0HpdRjMVAvXdR6YMAAM+h0r6ZKJXG1jjG4jTuEC6iHBbNuwwTLFbhPdMCK+i3I2Mvw2FeZqP65fpQEkgPejpoSb8ymt740porA3vmF1zrCKfYzSGc9BWy2mKZ2IFTvNYhXGBznhjyz0WltwMIOMbyk8xsVHwlJhxoFDi02qpOjJXRqq/WGBgzY+hdPTAl2osrzE+tWVOOfFxDk06xp+QNVQV1YyxlAZ93G9PwpbxvVYxibqwdG+uhOpzMhm3MruGSyA+5NOvGRsbMIRx3it2oPLm89rrcattn7cdiabG4bDiA4GMsjGnYLsurYhJMVitcwR6p8nQaxvOG8oh5mKTKUBHpUcGegOLx/HbjCp1irDOWrCmvzU+9RrknEFZ5C4xpKKbS1UMmPShJtl3K1N7JUMG/9fKWay+uEAB7Pmn8oJ8YK6O+BMDqTgna0hHIwzKm3ilnGhJDZd6I7Aonl9fmp56fgfZwVcgiP7VpsmS0Cndo19zV0XpGfRkV5LGLwADyKB07dvvUrvNWd7pV2mNwwejd5RBOTi6vzU+t9+a2F1coIz8Vk30Okb8EDCCjfieA1Z3s5vZ+laBXry9Xw05Py9Wdfs3cC+LHWPDaKt8N6fblCr3IT+04ubxW+kCiuv2M+t2IUMoM0DHMqN8hJQfqma7J5bX5qVHskw75w//yp+3vWKebaRbLIVwGbEBM4Y5bgZhCxOyN+WRAg/zGNwGQUb8XEUqZDXk8pTN2gGqBdG/M1gENd03EF6qKlhotk13hkp2D5PbSGu/bG7MFQFrjg+mXywEUxdoRCcwtAx3ejMt7i2Jvke3WnuiP0xrvJaRxyc4hQMOEwb51nPZBrBl/PAucXbITLHPSGkcCHfdEr01DeH0L5QpGUWxi+uV9AIpi+++J3pzWOAJo4pa0lFjk+effa30rbw95TpZ/Of1xIAaIBqLTL4tAVFFsyp7odQDSGiP0ChH2RH8MIK3xEaAJaJS2+m/nLpPL/KXUhKnXQ4fWs/atW5/j5qdfriyKTaHP/aU1pgNRe6JXRrhlNSRKjQZc6ZcPAK6i2Ju5JS29LjR/ueHbuYtvevnZ0XXVa+L6E4BdCB3YNH5P9DIAA5si9DIfuzt+DGBg01jATYgLwJq4RMCVXrd/TdxN2vJv3frclB35FiljgsV6YWf+G4MnsznfvDrvppf/m1t4YNMEwLa742IpGWGYCZAoNRFwq+4JAlgTlzi6bv+auP/QVrTOaFn9GSN+4wObngRsgG13x/cRoVcrIFFqEuDmvpAD4JtX3wCQp8l/cdc8S4llVdOBYGDTZMC2u+PfpWSEYQGB8gnAwKZnDShljL8Neval3fNM1csHqywWIXoP8RHtNqj5z5IBe5MWHdQcLt/SDCvs6rCFCoOan6evOxPi1tzRV4zz16+8ZtCgdf7KBIv12oBntJlfv/LmzTOmBtvUoOYXABtAdnV4XcqJMIzl04vS6/MtMVEqTNv7voWuMDxXwgc1T5MY9gqTeXWRjOHTdIlMgTzzrsDNM6bpGy0rF0inTZvf+lbm3vK0KufmGVOADkCUcrNJv6qNKAWiFIhEshy5/SuSZDKTKAY1ZzF88jC2yiPFVbIgby7lr+vrV+YY9Dh9nwmzz4VVMZbkCrnuH/oyGx9AJQ9qzpVb29VhJttdO+WZhkl5EodY+0SUgvzLfZBBO85GCOsYSw+WXm8Odr3CUnZXB/UraINdYUe1nVFbVDmDXXMlGgHwEBK0p/OLfjOnH5ozl7trxlcL2t86Vr+ZU4Ks0So1BrteV9nFnVFG/2FkHe207GE6fYMxSGAEaGyP+QzTwuqnG0xoJevAwikb3r4ut7rFLRya86Qs95sp3yhtuXKDXW9qLr99be6M+nOLW/bXL316zsP7DQVdtOg388VDc/6mysw6sLCd3SuU4HcdSyX7cGjOeAD9Zq7UtKbauH2pojQOqwAy2PWuMgc6SS70rAsrEN4vlIKqO+3L8t7MQ/uYL6BuJf1mLmKqawdEIej5QasfTbbxvj/bkg2AkDWe0TuI7dCcp3hHHtl8Y4utPh4cmvNEcHUZCFkThaz089kJVuvc9n+EqQcxL1PIWiXmZcg5Qtb6NtQnBBDzHgYgZK1TZmZiaybuNcGNCllPA407bF+9M2qK1bPewayG3hk1Zce6N4WsSUBH5j9OEFScJGQVinkT9faKeY8AELI2tFzL9gAxbxQVhKwiX+5WwnJLzJskZLVsCSpEcZ6Zn+OW2tQGN9p1LH50BRAha6mcEPM4X50T8+R/WNDGFvyIylAHY3240EZ4XMEgyFM3IuaNZI4LTL5vBIQBy1mHyB09/YNV1DJx0vVg5jrWu6Nf2LHmjV+77wyqlpinXrWPgELMS5dlIWs54BGyloh5EwAIWQsDtD1C1stAM9AMNAFNO2xl745+IQTRj8l/IIDgg24W3HgTQMKstdpipm9i3p10M9hrTb8PMkf6gerYK36Mkw+ZsgqAmDepBR3tsP3z7+kvmjvjejDtqpBu72W8WEY+Z+5tG/w7tzyUAcUKCbPW+S9kAapn30k3Nmlq+76/FEyYZXr46JL+ziiKBr4WnZPazfw/acof81IZ+UR5bBRcr6+33AXDYq1dx9LGOpQul11xTKavmJTvRfXsO3kLcnr96pXRO1gFkm6sk0smzFpKMxNmFSj1113HkpNl5B/5Y14yfbr1YMlyw7zMqWUrX7/VI/97bBPgUg4B9697UT17QsKsZabrYwBj81M92/uJvdioOosUSJi1ibnP46me/bB5bfu+3VBGPp6XOTWUC0smu0J5e3/s1DKyqYxs1ClQS8hFQkDIeULOsQpVzx6v1ZLWUiVN2bjg7rVnb7Nn+764Vz3bkngLUlAFwJ69BsoYq3r2Y1LvT/prqomQZkJACCkjm98fO9WiidbbLFwgnT9uGoDS5a8NgXwWxkmPZF0CAFzQqxsYgl1ugI5ghMuuuNioOplS9uxtVbl6XwpVCdpfVRmwV3ZVud4vuSfdWGfPXqe6t1iVO9aevZx3+B5Nju/QSvEhgPnjpoXSVlFw/rfNXMwfN60UH5RCFXr/G3At8DOasGcX2LMXqyras1fJclXuKEuVVFkjv1CFXJZCirFQlTuOCvbsxfbsAv0aXpRiw/xx0+jpHXqE4pbOgvHTAZQumzsE2lX162Ry27MLq3J1l92rch+xQjd79uf6Pd4BTXTFzWwlqnJ9F4b27A+orarKbfmfv5ViOYAF46eH3lDJCN3rXwsfm166dC6AIeDccqawZy8FiPRQshdfHoob3s+q2DncUJWrCN7t2UVVuelMcqnxmxSlWAxg4WPTEfBtBIsQ0pvQBRNeBlC65FUAt5GxAAGu17s8BkhiThFAKnMUf66XmLOREL3oim3EeLkByhwF6Jgk5nxRmXM7jbHkUUrM2VaZc4cyk/tIDDfMUpUBQCpzHmC7pqG67P4IQWLOavlJZUI8vFiNALUlnhXyCLctpSja4IXVRRNfBlBSSOk1Hvh34/KJOWsrcx6V5A+tVi8QWLf6QCmVmLO+MicQ138e+FmJ5z1IoxoOlKJos8dmFj8+A0DJYu/bXbcR1ZPECq0Sc9bzllJDh8qc2xNzvgBQmXOH38ItQ2LORnZBKzFnnY7XOwN4gOsBlHiWQRrJ8KEURRu/Yl/4xAwqlCySGTZdU6rNVKTekMqyYHYXm5UPwvvFDSWev1KJjl64UYoiXB70W/Kk93WukgLve3BDbVmhVKAi23e5px0SGlTJyaTcbdxilqLY7X3IWB6rsJg5HbSxxdJi6STvqBUv9H4fZagtt+3UQVLuFwAqsi0xV4Gg2O0dB3lkwmzG+CBvv726rXXwg8cW+r7AM9TGvk6ovQ3s904wV0CLJsvDk1UC9y0dlcDZit0+a710Ukgtt1kIO4ulxbKnfCNbvGAGu2uo7a8hV8cSFLsVkSV7yGE/P3yES4wVIJY/PYtNFs9/iU0Otb0VWnVajmK34ipYdVztaUp00A4slgFWPKPk2fv871M6ot7l5ocGTtfz2kyV5u15EvhoZxbLGCufzebmO+f9l9+6jij6bTu/o+H7sxqn69kWa3XlDLoO2rfFChCrJvMJx8KZHxBLgm0WVwGHuCD5+Wv9l4oggiBxVVisCEKPKyrGiiB88P/jRfmWCaclHgAAAABJRU5ErkJggg== | |
""" | |
inDoor_Icon_b64=\ | |
""" | |
iVBORw0KGgoAAAANSUhEUgAAAMgAAABaCAIAAABylI6BAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAKnRFWHRBdXRob3IARnJlZUNBRCAoaHR0cDovL3d3dy5mcmVlY2Fkd2ViLm9yZylLpZ5SAAAAKHRFWHRDcmVhdGlvbiBUaW1lAHNhbS4gbWFycyAyNyAxNToyOTo1NyAyMDIxaTUvgwAAAah6VFh0RGVzY3JpcHRpb24AACiRVZJdT6wwEIbv91c0vV/6yWcA40dMTFxz4h6NtxUniEoxpSvrvz9tgT3aC5J35p2nM1PKs2P/gb7AjN2gK8wiihHoZnjpdFvhh7/X2wyf1WhT7m4uzpHz6rE4jl2FX639LAiZpimaRDSYlnBKGXna3e6bV+jVttOjVboBjJy/0MOd6mH8VA3M+duhUTbcuZDeDmBa0FvTQQsfkQZLdt2zCh8eHccXjB7XNjl2LaHysYOp3iBU7pQ13dGF/FGMVXhLI0ZZylLsNA+augDlXotZ0zzOhNeywj4d50mGFwZni4ezOHMevjBcRRK0CDWZlMIjuQxpIVmaxCtDsJlLqcidRyyIhLHcI8TShuRUhvzMoCljCVsZcmaE4zyS/5bit5ThBWfpAcRtpyTLmsr9cDANhIVdGlB2MPWDftfDpEuyBk5Jt+crZaEeVR+hXpkR8RSxuOB5EaeIu70sRavxf6Vu99+jhb6+NgCX51fIvUW+uk9J7/+jjL079M/wo5MfMW+5h6/OP3rtBivJSfm51nlK4n/OevMPN0LCPyIGy50AAAAQdEVYdFNvZnR3YXJlAEZyZWVDQURjGmLPAAAAInRFWHRUaXRsZQBDOi9Qcm92aXNvaXJlNDAwL2luZG9vcjIucG5nZ04VUAAAD2pJREFUeJztXXt0FcUZ/81NKLorp1S0WG+LEEAQLbU+TlSstdQXiigc8GAIrwRCRAIRSHgZAkF5BAIh4REC4REwcMSq1SpWLVJQLD6OSj2gYsBHI1rlqEd3rSa52z9md3bu7n0ld/fu7s39nT17ZmdnZ76Z+e33fTs7O0uuuioPKaRgNdIJIU7LkEISIkWsFGxBus+XIlYK1iOlsVKwBSlitQ2H/etiT3xd0zT7JHE5UqbQiJd/VR3hrNBUG3tWEVh4/emCNsjkQXR0jXXogipDTJuoExkRsnrZb6TvHz6fblW5bkCHI9bB7mv5Qwtp1CaYyz3k1yl+wxczEiuO9egopvDA+ZU04BSTooIX7KBfZf+NXxY6JE68SGaN9dJ5a1jYtXwKCSbtAb96P/zpqwecE6c9SEJi7e+2mga8RaaQYFV4ya/eJIPPzHROnDYgeUzhi7+ooIEk4JMZrFL7/asB3PT1LEfFiY5k0FgvdF2FJOWTGbSaL/orANz8zWynxQkLDxPr+Z+vpIEOQiketMov+FcBuOXbIqfFCQFPmsLnupSjQ/LJANoCz/tXArjtu2KnxQmCxzTWvnNWIEWpYNDWeM5fPuT7OU7LosMzxHpWXA6HKCX72zwXMvFyCk21+/wrANwuzU1w0SFBhg51hRwR8LezlyFRXRWSQ0LLSSg0qOh7RQG0TWH7AN3LZ19uzCRRVJP9eUN/mJeYsiKA3Hmn80KEw9NnLYXNXWJgktDcCAAgbKeijcTS9gEoASAApVXucn1QQfZX6s7/zbeviKggw4Y5WXwEPNX5Yftan/FJ+Ol9gAAEqkvA7SMTi/EpiFgKlIC254kVgNKq7VuhtMrnDlEFsLOOw35cYFPmUUHuvtuxssPhyU4PwZ4W1/n04zGOTzQANQDonGLcCiIWOD5B11W80mJ8YvSixEIr4xYCrVBa5fNH2FRZWt+7mx+0I+eoIMOHO1NwODyRvsTyVtb59MM7ID6NT764iQWOYQGTNaSBVo1YAS3MuNWCQCuUFigtcvcsVUIb6j68pcTaPGMBGTHCgVJD4vG0MljasjqfpDdACIgP8KmUaiexwFlDnVjSmP58uWL920a9paurAJRWafItQenXNUBpQaAZSguV2Vp6yf68Ea0LLcwwFpCRIxNdZEg8RhZbTinhu1dAfBqftL1OLD4AxjApqw+flbi7EQhLLGnMxSEFEOvfCnawOFZN+vOeIwJNNjpT1i9ZuxVKMwItUH6SexRazq2RSqmFGUaFK8ax9mKRVe2oUurbAyA+kLSw6RRKJ8YXAkDK6ksPTp5ROz6jmyzd2xuA2NBoyoLQy482CQP9Oj/ooTTu9+KON7UkXBEaq3hK7TkijM6UpRk5YmUtCKAQ4aNVcs/ZsFR1JbijyT33LEpkeWY8qpRa0nwqpb5+HiRNZZXKLR+nt0jwXjeF0ph+AE6eETK6yXy2LEbjlv5gKGX1ZawSdx2jPpY09jJo9BJ3vG54MJRyb6Q0Ejc9wzwtaeooGglAXLMBgWYEfqKb3MfKW+4estiSrGKBw+8K97QutIpVwpmnQdJB0ngtYQqHrizPKrHhQwBsxEG6t7eZbSFyyB4QInL81eL217hCQ5curt8j3T9a1VsPTBUr1mreHhE+mC9fvNSSJhKaah/1l45OK4s/q1jgmCnc3VICK1S9qqi+elKjFP/gxgJKBFZRaKw6YfCx2oeBfjnYRJqLDnpQEKt3SQXZ+imibSDCe7Pl/pbNC0pYd/uIQ4BFrBK+2CN8+Zh03/CQCaSJg6SJ10oTMqXxV2tx/CBnsEbj3CyKk2cE5m9JWb1jlOpok3C0STBFk1BH7PFTPyvNUj/XkeaWSguWAkQ4ViD8e1I7XlkaIDTV7m4pSUz/OmMKd/24IE5WqYrq850g6dLUUQCk/GHipmfoWWnSYJbyyCkBQGavKLYMms/OW73wFpAYKCnuOs6GsqSxvw2T1sQtBUx1iVU7oLRIM3LF1dVAM0sslawSFxdEVrdtQmJ63AGNZQmrhKZa4bNtAKRpWQBq9lMNoQRbQxw5JWT2kjlWhXO/ACCjm0x9LLHhQ7GhkW6mwvVeERs+oCYPgJR9iR6/853g9CE6Usq7XRs8C8pYrKwxjqXRMCHC29mWKK1dPy5IQC8n2seq/2GeBaz6dD186dKMHBpTs1/IHyyLNU/yfcEoJW47rD0bMjfLHABCPRJS86e5X40A5E4Z4QSTsi9lYco2s48l1h2Qcm/kLiJ0fIF56zqruLpIpVViaR4IEd4cIV/5ePwuRAI6PaGmcLs01wJWfbwGvk5SYT6LzB8sixv+AgKQEOoKgO68h/HgxUfel8b0o6bQ4LwzH4tSaoK4nD878dll226fh+DRLMYqsleBqCcWvjtEpVMfAKcMFWv+qnGLz5WxLTgSPsAnHLlVzvx7PM0oNNXW++cZKmI5Eqextn0/xwJWnVoO38+kmQXQFBUAcf0eEDqVRR/2zOwlU++Ki0fQYfAYKdmrKKOIwc1iOixn3/KJ56ygCQ1S5exbDmDrEH1aG2UYd4nWApjDClK5lX+XuPFxpquoDhbXrIdCpCLDVGNt1M2i/rK730lOzoroqazA1u+K4yGW7M8TGsvg+5lUPA/M/FVthy8dJF0dwVL3aVLerdA0lrjtcLgxUvks3XjldCkHUHebcXZv7nO2tA9fkLhhL5QWBFqkgrF8mil1wqZc7p1PyQRpyXaxaAiav5EHHY6zMWl97UOCTOGWb4viZdUH8+HrTGeqqKyq3AyfQhWPNHWkuPEJs/MOwDxGKp89kB5M0r7zAUBV0eTnjc3t87Vb6uhQ9dbUUYYYsWKtNGsGzyomobRyn1g4KP6i7e73RJjCzd/MjpdVx2cirTMjDbWAbERKun80AOm+4WLNU/QScfML0uSbuTwUQJGFK+nB5K6rtHjH3jrkvbASQO3NRezVIXszDSCMYGzQywKy293vrngJHQOCRzU1SNMn0oDmbxkT0IvkLtcAyNM+lXaQTwZMeXHVppvUj07Za2myV0EPAKZVjYiniGW3Sqw5MzNedfVuPtLO0qdrapAK86BRKn+wLG58XHPGg6yh3OW6fHU1B7fwicd9+ysMMZq0RkhldVrQJ/xzoPzHo/E0bDKYwnZD9ucJ74xFmhA0tZyD6mytawBJh48jU1fdDt533hp3Uqr9iDwjKMY8PG0KN3wZ94Q1RVE3fdKmCpVV1TvU4SsFIIp87h0App5fCe01jpvvnFhAhyf4GKniH2LBFfFm63VTGDcUzsHSNZbKqrVb+Fcmcre7pqkL9hEABQcrYfNjnX0oOFhZfUNhwcHKad3X0nDQ6bg1Vsc1hbI/T3h9GNLPMXwSI5Yvo0NZGhRAkX95D4CCC6oYy6YfWuvWmsWKSFUI77/H+D5x6/bFuRMXtUes2GAjsapOF8T9Vkv79EVh34gaoACQu4+Zri517HEqxQ7iQ7jvtptPRL1a7tQXaZ1t1Snu1VgAoCjS0j0AxEVTdb3F0Uu+cBKAGReuS3pKFb5SXTmIW8Gb+BAbh8LC5vkH9uYezzQP4ZVr0amrdqQEfdKujZEW+tcDSHpWhULcnqP9xLIv87huKXnQq8KR22hYWrRRLKPea/A0gA7IKACAtOYQ2dv+y4XmE/JNpwhZb51ERrjbFCLAhRXzGKm7hbcYs/61vuKa+y3M0NbW8xFu5r61mwUI8tZVH0vO0BebsE94d26zj1ipY2wV1TsaS1EARe5bNvuijTSi6LUNrpbd9aj4ZCprTMthr48VL5QgUyj3Ky/quRFA8esb0IEdLAthXxva+DFFca8auVPf6CJEAEcseUB1ca8a+6T1Cua8oeoYC5oXsE9Od2ssBMTiO6Ry9aMud4uaaFjSGvY1abqrB4HUJaYAYE7GJleL6gAsaQ27mtTdGosupwEgpa5McLvGIm7tMaH5hHz9q2zGyLIr8ue/tclZkVwC2g5x9pvQfELu1Ne+3ne3xgqGh0S1BA9fPoUGFrxt1x3VETUWBT/NzeWi2gE67czaivPPkimNhZKjtV4R1XI89Lu8kqOhJyC1Y8ThwX6b45YoOtyusUr6b6EBl8tpE/IHyxGUFmucNiIRLWmvxlp4yZay45PiyYGJ19F4tfiyydBMYem7mz1Xfds1VumAuuiJIqGjO1jwZt29+aVBx4D2wbcn4XYfi2HRpZMWH4tT+bkFpQNyWThcpRYfq2PJvNJHPGycj2XVRlF2vI4QlA7IpZvjUsWzlR2vg7aGZdSK1+wXvFhfz2ishZeoty9d3GfhJblL3tvqrEiWIEL7L3lva0n/nKjJ3AkPaKyH3g8iEFvcp6R/juOytXtjsCSZCzfPaCweD3+wbcHFE+HB+9iMqFXw6IOhJ4lFWUUDS09sj5Byft8JACKnSSSoPDxibH/PdZM3Xuks+3A7DczrM8FwKhb55/edwHJwCmbJtTVLYrrEE93Ew5Mai4dZ/rm9xwNY3rgjcrJEgopk+JUBPZzXZ4JBVDOWN+7wXC95foCU9pn5cG7v8TQcvASjY2Drzi9v3EGZFMvPMmC6Q7wCj2msFSfr52SM4wPgtNGcjHH8kp78PwEdrCaTE8CKk/VmQcLJtuJkPTxoBCm84WOZwfeWoQqjM+XyU/XFmeP4SMurWdxrnCGm/FR91KuYGOWn6lkOHu2CyPCYxgKw8qOdRT2D1kM3V4EQYkhmbTVZzvy/WClRVn60M8KFIcXwXBfEAg8MkJo3iil1aqfy8dT80cNVH+t9XNRzrFWlF/Ucy343R//rRP9eQWPCSWsQlY93vD3t2LynsQBUfLJrVo9sNgTPV4G6Viym4pNdszKzzcnajVk9sqH9E6Xik12G+JNnhNkXjeXjmbQRZPBiF0SFV32s1Z/qnWeuwqwe2XyCcMnaB/qDndWf6nShyOgmM6UVDiFPebQLIsOTGisc1vznkQcyx9BwSMfLwrJm/kZnFfO0ohZkOJUc6zqHhFc1VlQ88OsxlU2P8DEW1tTwkzD+b2GRC+JPMfGSsgvc/Yl921HZ1FDoz6KeVqFf1V7amJY1NWU0qmxq4OML/VlaMEJBSdXaEZCEGmvtZw0zMrMMA6SwQTHwGc64MCtkPEPUN4NJhqTysRiqTu+ennmvIdKqmjI7yJMJmlNfdXq3uZyq07s1GSwRwQMgVVW7nZbBXhRcoDOs+nMLKltwwb3mH7HSQ0vyTw6Q6uo9TsvgPUzrPtocue6LVEvqSEIfKwFY/98QHEq1JI/k9LFScBwpjZWCLUhprBRswf8B1rdUXZX5miQAAAAASUVORK5CYII= | |
""" | |
inDoorWord_Icon_b64=\ | |
""" | |
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 | |
""" | |
FlatInDoor_Icon_b64=\ | |
""" | |
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 | |
""" | |
FlatInDoorWord_Icon_b64=\ | |
""" | |
iVBORw0KGgoAAAANSUhEUgAAAMgAAABaCAIAAABylI6BAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAKnRFWHRBdXRob3IARnJlZUNBRCAoaHR0cDovL3d3dy5mcmVlY2Fkd2ViLm9yZylLpZ5SAAAAKHRFWHRDcmVhdGlvbiBUaW1lAGRpbS4gbWFycyAyOCAxOTowNjozOSAyMDIx5LtZ0AAAAY96VFh0RGVzY3JpcHRpb24AACiRVZLdbpwwEIXv9yks3+NflgIyRGmiSJWyUdVtot467Ig4CSYy3rB9+9osbIMvLJ2Z488zY6urU/eOPsENprcV5oRhBLbpD8a2FX78fZfk+KpGG7X78f0aBa8dytNgKvzi/UdJ6TiOZJSkdy0VjHH6Z3e/b16g04mxg9e2AYyCv7T9g+5g+NANnPP3faP9dOdMej2Ca8EmzkAL78SCpzvzrKdNkNNwwOhpKVPgUBJSTwbGeoOQ2mnvzCmE4tKcV5gRlslMSBykmOS0opRrmVY4iTplWY5nguArjxAroFgTxEzg/FshF4JcE+S6BhkICScFz7d5EfUZUWRMbLcLIl0j0jUiXReRptPjnWUE0DAYRecJqX1/dA1Ms7pxoH3v6kf7ZvvRKroELskw4lvtoT6YjqBOuwGJHPGiZFkpCySY4POhxfj/pG33fwcPXX3nAG6ubxEjvFjcl2T0/9TOPxy7Z/hSyZdYtPyCTxPfuw6NKXpRsa+lH0Xjv6w3/wB/98D5TMV6+AAAABB0RVh0U29mdHdhcmUARnJlZUNBRGMaYs8AAAApdEVYdFRpdGxlAEM6L1Byb3Zpc29pcmU0MDAvRmxhdGluZG9vcldvcmQucG5nUyvypgAADBhJREFUeJztnWlQHMcVx/9D6dNUpeJUkkpSJLVJbMfW4EtBjmUrrhxO4li2kEEGBAiQQFxC2NaBuJblvmTLwpYEAoQkQAIZBJKQLdlJnOODc/hILB/IFR8JlXQlqSQVp1LVn/PhDb2jWWBndmePnuVXlKqnp6ff635/vZ6d2dlR1q4txQorOM0qRVFi7cMKLmRFWEvy8v9+FbTNg5/6ThQ8kZFVSUkrwtK58t9fGjeT5+eCHsI8mnHzoU9/11GPJGYlY+HyJ7+gghUlmTAdInS24Ybvhe+Y1CSusF78z8+pEIKelkJ0xaAr7OHPfN+pzuUiEZfCS/9+BY7qKRCTwjZ+9oHI2YpPEitjzf7rZ4iwpEyQLZJX2ud+EDW7MSdRhHXxnz9FdCVlRMhr0+d/GBMHok9CLIXn//GTWEnKSPL8HKWu9C/8KNa+RByXZ6yZv7+M2CWqQETqyvjig7H2JbK4WVjTf3spfiRlRKSuzV/6cax9iRSuXQqn2JX4VBUhUldm8kOx9iUiuDNjTf71cjyrSkCpK+vLG2LtiPO4UFjP/+VFKVRFkLayv/JwrB1xGLcthRPzLzilKtN9wECcMkTayvE84khvcYKrMtb4ny+FGWyjmHK/ujFIY/gbh2mXtBXUokS4R1hn/jQbTnRJUnlfSxM1QefF2FiILGQfSFvGPqXGJUvh2EcXQ44oSSr/xk0AkkJ1gA7HgsJCc4a0JbqSGjdkrNEPL4QWSJJUwU2PAriU30WVaWN1IXsym99FPYQjLxdEBICSllYfax/CYuSD8yHEjyRVeHM6gItbO/07VBWcA9h02t606J2oKgBwToeH7Bs5JjUuWQptwTza9lsyELDwpY83nM/toEKSnUXxfG6HrkjOqebi1s708Ybtt2SEkLpoQSQP5UXupfDE+9N2UwLzaEW3bhZjnslpJ01kTHgVBRkTXgCKgpmcdioHxdiDv2ZhRSu6dTMABi0EbdGxkiKxsIavnQtBVcWrH1t0wGIepre0mWqWYXpLG6lq89lGU3Pj4cWrH7OrLYsOxC0JtBQyj1aSkjmd1SpqMid9mZO+qaxWAIHzYHVmOM+c9AUuneLwqazWzElfSUqmLW1R0ipJybTYPt5IUuRk6L0pWwmAebTS27KmDKqCqk5ltSqUFVR1KquV/vQT8IW9yyAamyuBrKkmOpzaULn0tqygV/NNRGz+Io6swrIVHubRym7Pnsxsoc3sc83Z55rBOVR1MrNFL8P/mU7UBPeB8+xzzaJmMrNFSA2AbtHQpuz2bOvaSp6fG3x3MnJzGFGkXAr7r561nq6YR6u4c4u+UqkqOKch58y0TGQ0QVWff6w5Z6YFwERGExXEumZlckQb6g2c58y0JCX5+xcWQ0PGAAFQcnJag7eKM/remrAlrJ135VB5PN0HIPe8f8hL1YgLWsZdgeiNCVUF56L9eLpP7+T6+nD8lwj5lkK7UalckyuOpUpjbwCgquPpPtrU1QCA87wLbXkX2pZ35jpjnIv2QlV5F9pIW8KEoiiVa3JtnWw5M3HRRcql0CLMo1Wl5pk/rqnqmUcb82fbaSt/tn0szQvjisM57bVyjVT0Q9AhY2leUlX+bLveCecmu9ahj4dVqXl2D4wtEl/HsoJpdAWXOkY3NkBVx9K8BZc6AltSZThTQv3TMkqS1eG84FKH6PnxtVttXX2QLkySCevZ18csBoN5tCfuzg8cW+ELnSOP1ENVRzc26GUAkYxc4QudCyZC70SuMMHdF0iXGxrnAISqtl/usnVzcClObqgTnW+/3LXgxuKNd99TYDFp0Wq4+54CB1yMFpJlLIswj7ZnXeFSAyu60g3gxEO1YtOpOaCeCcfnVa5IuVNYsBCG4pd6FlpG3psl2HvvNutnWnJFSqal8KlXT1o/25VoXBaRa0QuzFjMo+3/dpHbRiVdxpLLXYtINKia+4utrIZ0/l5zf3F0vAofmZZC67hyUJBqXCsZSyYkGteKsGRConFJsxS2vTJg8fexGx8oc+JiZzwiS7DgyozlvhEJJBrairBkQqKhJYqwetdXUeHJVw9H1x2/aSOhuSFRsKT5op/1IS16+O5fHwEAVe1dX9W7vipqbveur9K/OWhEVY0+hDm0+GSVPP8HrLLciBYemjh03649vzkSJYc4N9l65t5dAA7dtwuALTckCpbLl8KD6yr9Oxa+fyeewImJSwD2/vao8M2WGxIFS5qM1b5hF7ts7dbHFe2Glmv69sIX2Onffb87KlpGc+AH11UaTftR1YPrKj+5stpiP7IEC67MWACqX+t76ls7AV1S1a/1UX30x6p7oqpP31Np9ESH8+rX+hpg9UReomBJk7FsoSjY/3qfcTOG7H+978DdOwFAVXW5G7Dlm0TBcmfGWnRQPWsrjJs1b/RH2g2yWPNGP9kyOUC7bApLmmC5NmMZ6U6tAAwn7wCAnrUVtW9GUFvCKOmp9s3+QHOKgtrZ5+w8q+Ooi5FklYUfcZWM5Pk5Nqt1pz0BoDu13L+D89o3j4mt7tTy7tQKY42DdKeWm36KTdcZACAEo8yjj0gWZMpYPZueYBetf0PcX677/bHAyqVqHINzstv1zXLAkC9VtTu1XLhkHYkiBbeeYwFQFKVzTRmFc5kxRnT4/s5VFZzX/2EAQOeaMrFr/4Vetz6zKlPGsk7y/By7oGGNvmkaY8ddZaIcweGraueasoa3BgCA84a3Bvy2jLssI1ekXJuxAHivDrbfWYrrlQT4VyXv1cEIjV6YVhTFe3UQJllw7r06WH3+kPWnup/O2C1XnCTLWAc372bTlp8entEalcG2O0rN+zhvfDsg2E7T+PZg2x2lRhO6J/rqbK83ucIEd2csAIqi+N4ZWqw+GtZ97wwJQ623l4j7S753hvZOP2Prpy6lC1OSokCuP+skz8/tOfdMzB2mv6Z3h+jqQ9O7frVZgXm0Q5l7Yu6/3T/5MlZv1l42afWiQ/L8HJvSerP22rXSnLLDX37veODewMrgfb53HICi4MnJg+5OVwjjrURuxqgq02Zzyo7mlB1QVb1gH1uqYp5Q/lfEA9J8g9TIs9n7bP328JOTB231Twe2zA23zA1TuTllh3GXuJ4u6u12bh27/ccJkn0qDI3k+Tn2vPbcln1WGvtW64+x08y0XhumGkXRd7VeGza2tDWBj5992la6em7LPknjI985FnE4p5pN2HzRw1ntcE510JZt75+ggmlixESZZsy3ulgcsjxVE08lzltPEiJjEcnzc2xCO5IbXFtGvLcUma48XTdjli9K7Rq3pyrm0Y7kVssbHFkzFoCjefvZGftv1RrXjubtt9i+4RvbSTodfzxpEJZ5xoLOYeWZAyG8uFDe0EBqYQHo21rDTtvX1hmtb2vN8s3qb96mlzjv/OCUcZJsCWvn6R7Yf9Uq82h9W2skDkxCLYWC5Pk5dloD0J+/uLzqbtom7id2fXgq4GTLsMF5YANBxVhPaG9Y7c+XW1WQPWMBOFZQy0ZtvwqQ2rMxjXow7qq9sZBU1f3RCBb/CpeiNzNsmigf7UYYb7SXPSgAVsXaAQcITVsQ8hpdRF4wSIcgnUFV/fXXf9eZCFNSzKMFeiIj0mcsYqCwjo2Eoi1cL6+BQv8PtZtQFKXn49Garxt+bJ3zno9Haf7KRrqMvYUG82gDhXVuiAeg9PSMxtoHxyg91RVOXLHwdnticFudFYtUCNMumbZiURaUAwfGYu2Dk5Sc7Aw/xoSVu0YO2hraXu9IV3GC2z4VHi+qZydCXBNNOCWaoDCPdryo3l1xcMs5lpHh4gY27Iy2ogDzaMPFDW6LgfsyFnFiRwM7LoG2mEc7scOFqoIrMxZxssTLhuJXW3QCd7LE687Zd2vGIk6VetmghiieLVmEebRTpV647yF0Ay58xN7IqdJGAGwwXlIXJSryyt24OWMJRsoa2UDsUxfzaCNljXD3f+UFXHuOZWK03AeAHYuNvChRjZb7EmKuASRIxhKMVfgAsP7oyYskRXYTaaYTJmMZOb2zCQDri6C8xFV7spVwU5xoGcvImcomAOyo/76NI/f7jJ0jISVFJGLGMjK+q1mU2RHbIjPdTxS9JfScAkjkjBXIRFWzKLPDlp5bNB6CFT0ZUPr7J2Ptwwou5P8e/HuFIUbb6QAAAABJRU5ErkJggg== | |
""" | |
FlatOutDoor_Icon_b64=\ | |
""" | |
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 | |
""" | |
FlatOutDoorWord_Icon_b64=\ | |
""" | |
iVBORw0KGgoAAAANSUhEUgAAAMgAAABaCAIAAABylI6BAAAPjHpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjarZltchsxj4T/8xR7BH6BII9DEmTV3mCPvw9GsmMneZNs1Vq2JY1m+AE0uhujcP7nv2/4L35qLD1U0d5Ga5GfOurIkxc9/vg57+fXsRTr8//jJ73/p/D1Ay3vjzNH/PX7vdb38fI+/jFQ+3xmoN98kOSnC8rn/PnbxPNz4vxtRVXijV9/+o+/e63fe167m7URhvba1GuK8DEMJy6GKs9ljYfyJ7zW5zF49DjjTjVa3HHx2GmknEq8qSYLaaabTjKed9qsseaTleecdy7PsV40j7xLLKlUf6SbtYxipZdcdj6llBpK/lxLeuYdz3w7dWa2xKk5MVjikj8+wt9O+JfHvTsSo5Q8mFqeWPE/Z89D8jAW/89pJCTdd97kCfDH4/MnfElsIYPyhLmzwRnXa4gl6Qe2ygOAwnnC8wtfSc2zlh+UVOYWFpMKKYgtFUktRc1ZU6oldxI0WXkuNS8ykESyschcS2nkpoMj5uYaTc+5WfLrOKVCfqS0ouRmlEmyahXwo7WDoSlFqog0UekyZIZWWm3SWtPmNTe1aFXRpqpdh85eeu3SW9fe++hz5FEoSRlt6OhjjDmZc9YwZXL15Iw5V15l1SWrLV19jTU38Nl1y25bd99jT8tWrJpYM7Vuw+ZJByiFU4+cdvT0M868YO2WW6/cdvX2O+78zNo7q788/g9ZS++s5SdTfp5+Zo2jqj7QM0RynhHPGRnLNZFx9QwA6Ow5iz3Vmj1znrM4MlUhmUWK58ZSnCE1UlhPynLTZ+5+ZO6f8xaI9d/ylv8lc8FT9/+QuRxO+Slvv8maORPu+KpGr0KPaSxU3y3bYLg9R7hNEqswWSwxcqg0qXdlJqqyYy/P51Nf5+dDMT0fSjnPuUlJFh8GH+01WF9k5zVS675/0zK7bR2praRjMMqwtTrCotbWAh7QaW1rl9HCyrJkCtTVWFMl5zDMkd3PVIKc5Ggrq8iE40bu1TzMZ7U+GSmfaXw8Z28hZZVR2qrESbOcpBcStpZvL3t3X7WOC0DO5tS0Y+rnwp3Kpq4vrUxZaUjQCpnkszrhz8jD7Kc2LaartWmnj1bSIcHgIpHdWfKGAyHpugvpzVp3IzdOtXkNYjDG2nmd3AaQumXt0ffKQyrIPrPqnvWWfg5r6SLIQJ+7cbqWXUQ0UbTAp7Zy917Kgs+dydAUZW3C2XOkZbaq3VYGkV7CWlcfmXJs6UBrYLAYyDamsFunjlz7JWFkdo+S5vRFxTKAYCpnWY2XNXeAI7fK0ENWOhnbbWW7Yc6zL1vfZ1fiVxkeCYpvmAEMOUYgjhh1k/q0WcdoqbYjw/ohr6bpXAlGFaPAzLqPMHQFSElzm3lpA1F7KpppTE6J5r1d70uuprrvScNiqYSmnDBTMV+eUOMUr61NgQAovTKtdsrY2YDqUYefjdnM99s3n0UyMM7Yp44Ubh/wYp5HfQApM7GNfJolmIAQExBRQFlVURPeGvU18mrX6s27dZAJK8WAVJeeI+hBQCjsYbXBDr4cMA+H7AXVrQEJSSWv0kHhWUIGqdAFK0FNeewAq1yRRdzyeBYKt3wJtRfsOTX9tZzDf67n7+UM7SnsvYqBi/eo5qG1cdjEhkbY4+c08/qZ3T+UVj5HgZ1+HsWnWyAHuPhnEvon0VA5tqjfNPuGA245lN9OLU6NleLIaw4rS/qKVteuKZsZhYkTqt0C7AmkFZ7h9EPlXCkwTZ0H3hfYe0Z4wYu2FOtySBxUgp2Te248Oll8v2cFYcxmELvjasK0S/3XTlmz2lln3XlsJVu9QOiSJfKBl+UaluEdmfBz1GAz73kazrBtXxZJKmUn5j0VB3hvF3hq20xIyGH8cQASQnFE4aZCANphZSHBDI5ZWHJRmKUuo+I6kdK145Heq8cFUoPoxlbUbEdW1M4GSV4z6c54ZtCb2A9uE7gqJAEFUWqzjXKB860OTtAz253KGicj78rRWY+j19rkBFYVWO2itqjtjq46XA8Izp39QEX4WeFXuh4v8c2p1vSaDd9FwW8thMwaWVtgxCiEAYGnDJGV1GxC+VfHqQQOKRmMRwkhcugdrLVqOvi1bpCzQuYFWgxzYK6hSpQYtsI6xHKuQj/NEzsFXi9D8BVXklgqBEihLipdzNn/Ot2yLVTkUobsZ5aLyu7IBZYMnoZPOiDc26JC/RuojtQV4NI/TMLJuOcU+E1ykTDOMaaA/IwrUPfkooFQA03U3xRxOsvVzsYiuhv2GrgRUA1M4DekLI52Q+ygbO5uJD6zud0b+du6YiEop7EMbSiJzb1SwuqQ1z3hm3RVQLc9FaeLFTE0cVqGvkJSW/gEMA+U5J6B0jZfcdtoFBXtNXuJP/L29IQwNkFjaQHfhfB1RgKTpGGSp6xI2oScE+VbyHhdk1DqFoiFNZjAs4j8ZovxVsCOqzVItHcUoBmgjS27KwRycwNlNurUzRwdC7UwpC44zSr6pLAu8t9Ws0vtBgeKKOV4cQW3bRfAzFbiF655U80lTGDr9+wUvtPTD3b6pL5/Yr5Wwot4d/scLL8Y8efDb0b06aX/mOM9ZW1h+3wfk7znfBi8lc8NvNkWiOdse0fY+tlX9lrOeIWJQALf2BF1EoDczYSDGICkI7ALJZK5oD/mLgXWEuwMVAL2uAAW7UrgDddlzpC3ZhokPHo/mFa6Ve9XBxkfkWIrn6dKRZW+HanxOWBGNkNbcPOAfSintfAwlOg+MTnYOZNt0KThvjCGmChQAPkDRyiHWitFN55sCM6/gw+3xlpB21kFjR1YHJwFHNyoAwxickdZ0rjuYIhVPeMuRCNtaBGaxfOcMB7hw4VVQozyRz9t+0inY6g6MJd0cXmwEbr9u8zh19F+eUvuv+fu97gIvwNG/xRsS6vN+kXnF86HIvz1QPjdKRSRevFntn8wJVjMHJf7QFK+OGtn6gXxbVBkpVUBIAGuJEQZcsFp9nbcnEZ6M4BEaLK7KHeoQs8CT1gflLjCWXAX+KSJsrP5l3BsKBlJwEJfXk3vfwZ5X8QaYwwbmOOLmIPhjepH7wZnOnAXpIY/Ty61dEcNmaUfjI2l7xF3SWB2s8hx8F/OLXQ7OOnGXjqFRed3O1SANib6hETEWf4KLvI4XcBKHhOgikRs1QNVOMJoC99gRmaKZy3rgBNfWKfV7Fuivw8/H/j2XkAoxh5i2wp7NrdnIAKXS0rWipF4nNMXbj+QeERHUY1Km+SiDuMA8EFR4+EaDoFuWeVunEn1VgOXTfwyzrjh7y/r5vngRpxxL005djvhpW24PKIEtAzjDVZaCyJh7nNkz9jQU1ZfnZqBNb1G7WGfPCXifXnhHMhAbj4/XOUTH/EO/tuRGH8+EOKvp7xZIx97ygBouO1k5z8f9urILySPoM8RkPzUkhsIT9F6Dth6FR6M4N0RtpvcZaQZDSj0XDTCVBEIQPwCXSFdApaQZoMX/XgHSQOHMFWO4uSu1hX3BX0z0cYBUux9pqjJMbS0iRjwD1gn3YZK0eYefDzNLj4fX1cHipV9bcNA1cISnOgeMuF8DZjTXRJ5Zbn4mxl4TbOaUcFZopthZYInLd5a74pRo1PYrAk7utC/hAfI1Z2wUDZgdF10fQdO9lsnoxvpFqCCO6awxnXBH9QHHfYo1IxkmirkAp+WXQHABG8uki7MLLgRXeWCO/4GfZlAA1MvPKDU26S3wUWgsIz5RNbradFsY7tQlLgqzZQ3P2Hisuc1v50o3mUviou4UY2NXtO7jVTvK8VzDb8HhCl9Ukvy04AMhneRLcAgNP0F718wGuYmF2OenKx3VTdqNNSjP43FdERNwswV+fVWEEWaPOTIb+N27OjO170kWlYhEHevtALe6uLy+njChoRE3fQSg2wUHBR8UUfx+zV1Buwtyezy3M2mMcZ0Qpm4XLZ/aVdWXcgH/hj66efuTnDJiJ5GkBIBfaxcXgFbPgmpbOyOIpoObcqQ7n/UTEqYGmtsw+9f8o/u9WX1QBgJch3FiaaBYT9xeD+8O+0x8gihYfZLQxPBIB5PZbOHiXmAASZbi7T0VByXcDBF2gJilsNTfSxlAArkWEeFZGac3lGQbE5GKxoWdzdDX1KlkNRbJvqtr6UZ3rXpQrGxxH29tEyegm32Urq/VL4XfvhR+fm798iRtuh5VdoHwfzhQPhxBGzAhIgVstbHoMtH7VioaxeLJHkgigahTy8GlMJrf4r4/RiBs2k/WknAY9A6CUkQbAZ7JUSTJtDvt0DgtAbUAaE6y2nBl4Etw59TvhQwRevvBtW7PT+t5ZNqSrv0a6SCTkhmdl5G95YHrpIE15O0KGWl+YKaKxTw3IdsngRz1++3Vqrv5x6w+46wsdyTsDgFBKDUvMMnYg5B/XVy67ka5E9b2vdlwoYZUJpO3DpLpkQgAgpwGt3wGGAB2WJt0AeX0/31NNZ7k+Na6ChZzsntHVTERUoHPqOVlBLN3+outbL0Ngxewx/YLeCSfme3Rg0RhOtfQASqAQI+9GvDuRVSobFC5dky7hZ0Y7XI36BoELKRWCgOOM7XN0qOLLQV/g+sHeJN0/XeDHA/lt+L9W6j9aS21e+qVSPOmInRC13RYx+JrnRIwNu0E5rfk2iRJ2drv5/j3+NMp3HxW5w0YYg9TkC9M1P3qce/WDC6ZeiZPhl3s02CN8Ko7EJhcAOD1rqAN3p6wJCm22YnBdotdpOp9IUjeLCcPcyEL/q9S8uBP4wUhHP8Mrw6fhoz8L0Y8JG/9+o/DoRfjnDgfTkQ/tBbKdRoeddo+S7Or6vDl7Of+1QfTvZ79X/6pm/V/3Xk8H1ojJJWZXsR/UhVCXl8VoQKuBI89x+QdCoI54PS4peu35SRAFc9t/Ywr7WlbId0YIq9Fzoo6Wo6kF2KgqxObO1B4EoH1eArKhVOxUOwqEgEKxXtq6+rBt2WN7M0SLNz5a40DguQ1bj9WytcKAVMgtHexDAUSEFboJHsFgFmb88d3wVw/CYINc2LdRbie++kcvANNvw7kdQbNVFuf24XUXt+S2OCI3Q/k3X4iIrucqL6LealeG0mpzOK9IbN/UNmFahnxxvSK9ITqlcxiOxbQ6Eqst+rxHM0ufoJhi+5pxIfPv9TRsOfUvoLWP6AlfBXsECRHb2v0Z/oU/7Dc/hyYNTk7QbdIgbAFSwiwM0zOse6z5cXCJ4rbDt+q5xzMPJyvGGU0P1OolvjxkKFvOIDYUe6IiBI8V96YjoiaAzdxgWAJ6p/+Ty1idJTg8aM0mIq183pIHYMjjmA/f0s1YFteC0s/sNzeF7oBTgxhv8FLDGEwxoX18IAAAAGYktHRADTAAAAADcWvvYAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQflAxsVFgU8+qocAAAK90lEQVR42u1da3AT1xU+ayhNbyYTJpNHO2UgTRtCCiQUaJPQkLaAAQMmYHCwCTjB4IdkW1hYfiHjt41sbOSn5BeYV2weAQIuODycTELDhCQ4FAgFEkhxCRPCdIZfd9o/aX/c1dXVai1btoX3ru43+rG6e1d7zr3ffuecXe2uNH16PAgIDDVGSpIkRkFAEGuwOGdpULS8VJEoeDD0xAoJCXbFEiMQCEivvGIMHm/Pmh2AEGDsbnJ9nWE3CjaIUDgQfJJaDwAerGK+ilxThMLBYmZNMl0+Y6oDhAjt2PaA4oypTmGGDkPhzJkpQcKnj1NqycJrtSnKdldAVKwKkAEUAd2dCIVDjI+SaxQtf6ozeRxM3i4HLCB6GEPTO9eCjuOv3kLhh8bqPuo+hD5KrvmLY72yE0KA8eBHQ2kAQm7i0vQOY2JASIh+a21JX1ChC8CHxmpJkmY5U1nRopjlTJ3lTAWMASHSc8BQoTXGgLG8C5c9s5ypkt6hn1DYlWhnv85uMLONCjc/MFSRDt7wscovsD8iSdCVaCeiOLvBHAwFqD6rwtCmDYoo05VoD23awMYjFcd9rOr3fgHgVPxWQIhwmm3p7cdPxW+lPfVTFYaGpunGmZNxlWRhbnOaooVgXovlxLoKmvfQbqrbDtYSNrvyuUcFhsQAURUG5nCRpBPrKlRXubmFEJlaucVHzeg/PBjsksN5LRb6272Zp5tSUZo/P103fOqM3QIAYdvT6bJ33Uc6dMZuUV7bcYFsDgDtP3T52Ff0k7P7aY/iZ+V2Vs+oSWqdeSVWWFiGXvPH42vKVdsXtGZ4rHUxbEFrRtvd0+7sG3zNbhe4ebDyqTn93PuC1gy5HSHAmFjivYmiXYRCLWLhjkyycOztMjbWLNyRKbdgDAD3bVPb4PQcyT2jvsdlDrh7nr4rE+LNn4e6d+SpSUq2YbxwRyY79tQ8fURDPV8rDN+VpXoSkrpMOuy+cxIAQkMy+yRTr8WgJHP31PdlihqT7KIjxkaWO2JsVCB9jLwOJkW3inV09WYAWLw720d2vOu7EwAwd8TAKaUs6EZkAsBJWxkAjM7qpvsiZnTEbCasIl97G/jFu7N1MCf6JNaRVaUsh+hXtnHn7ffnjsgKxN7Jz5602d4aM191dL3H/MiqUp1dQNT132YQ8qAUQoDx0jbrztudADD/J1kBvVI3PyTr/du2NWPDyNfDK0tofFSMubwKAACWtln1cQFRn4oV0Z5zKLrYnTgTMcA4oj2nted42KjsoYp9vhE2KruzZzMAxI5b0JtiHYoupjlZRHuObmZDtznWsr2bAOBgVBFbmm2/dTxs1MYHaQbZXeetUva8Bh3zg1FFbPGop7mQli/PheBA882/Lvipdbj2fvy/JSSdVwRrwqrI/XqbBSkyMi8YWNV0o2PhQ9bhteHYf0pGZ3V7n99644AOpyAobqZo/Oboop9ZteDninfz9y3P77NI1INiRUUV6JtVzutHwlGORozpwMWG8a+3R+QBQPQhPY98kNz+pRUfw9GmjutFKw8XQu8nSAWxOED91cOLH87VlIeLH849eq0wacJSfR/K+r+vUJsO6n7Y9axYNV8dXPKIFguuJY/kvXelwDRxmSAWt7mVpGXb9Dzyug2F9osHIh7N16xvEY/mH7qcb34hUigWj3IlCQsFsYYSlRf2LRtdKKgvQmEgyi6tWxj5WOGBC7npU6OEYnEWCUW8FsQKrnowKIilv1C4+bN3VjxezItXek1FdHsntDBVECt442D0kyXt56zWl1eLUKgJ1L6W6t2Y8nEVd5m7jqMhT4pVM9PzMXz0kRsYU7aZzlRzF190GTT4IFb1qyYlnzBWfaQHcYevmRLEGm647uKiDamfyM8hrvpjCulQ/arp/t+mCsUSxOob9hnJNOSZz9apJunms3X2GcnMw4/5Uyy3my6PeCeWKPe05JT73kOhWA8KaZ/W92Zs5ctJ7KzwUhXuvpNZ9Oe1ErUfPJ44TxrTPq0XijXccsVhKHRTCgAALOfqK15KUnSwnOOPW5LF4tC+lVv+YKRqlP6ZQ27xPvXg6mD9oOWtMeXa92vn7Qz29mjiGsGPP/6P5Ry7SijWkMKlRjKlFK8PwRgAMj53ULniKUdBCDDO+NzB2jxihMfbNIjXxEGRYz0IngHGmV842QhYNt1wv2sqL2lW5hfOsukGACj/vZE6ouIsQqQP3Uoo1hAg67yzP7mXbZqBo/qxtSfdFhpX1g+bs847Zdf4qRlH8nVZDQBs0xKZEW9QjSyjs7pbbelrxm7Rfo7L5oiEPVnnG2QfvYtcjNVd1h5CJAn4+ihIZpuWSFdldzfwcni09qSXzY0nNmd3N7BXFNxHDsYAkN3dIHuNENEqLj485Vilv0tQSdt7uSRSPi+h9UR67DjtihZr9sYvG2XvGL82ftnoHfV4ma+R/OXuTNpOpoFOifVCo/VCY8mUBC5qQzeTXMaTBWI/a3zJlATCNuuFRl7mixvFKn4xnh7KOX9vkltoxaSQLoRKpiTkSE3bOtPXPl2hNV+2/dPi8XQ/hFg+Ee8osWQ3uZIr3hQLYwDYdLGJ2LzpojwBRS/Eu8nnVS1qzcGWby3K5/p5RvbiF+Opa6zv1HGhWAFPTQhyLzUXTo7zSL9cArZ1oaHlmCXumUptHiS5l5ppg+wCACBED5XcS83UO75mKoS7YrBwclzh5DjF2rzLzXmXmxV//SOr7IsMzTe18gbA5ptp9kUGhYXUBTfnXH+OZb3jq3jn5p3Q+V+10HQEAAomxRVMivP9QmjaATxfAj1caL6ZVhVuLJgUx6qvwkfykbmFkLePvICntyDII87Qy7uDPDGeqAo3Nt0Y5hfjNt3YUBVu9M9TjAEgf+I64BB8Xitk/rSkur7gyjZFxV69OKnp6Ib4X9uHiVVmam3BlW15v11Ljo38ieuoqX6llRykwgUF23g8IHKfXwsAhf/wz3jTkfqE3zxobjV+Y655PUnVfvYtrwpf5A7++ygUa1Aourp9AKcSapckN75nTnz2wXGr4Wtz7ZJkyYf0uriV+/xa4tSmCbG8yxUASEVF2yHIkHy4DgAM4wNOL+d1c93SZN99cp6LdWeNaje0FV/jcoKC5DnvHqiPSAEA5yFz4LjlvG4mO+rv4KpRCgBKrrdyOj9SSckOCFYYD9YAgGF81VCzKtWxzDSADTc++zZdLv2a73mRSkuDl1gEhndrAMD43GDp5bgmP1HCudwEQY9gDIXK/DpyPQA4Dsi0SJpQ7Xdsvbqe/g5w98/JABFLDAFLLwCoP+Dx6BFVnhEmeW8rIBRLicxnYuQl1wvIy27uAoD6/SqkaXzD4zlKYgRViSUGQQ0IEaqVr9jFNmf8KgYAMiGm/NtdYpCEYvlC+tOrCZM8av6+rhqJcROK5R8qbu0GAMu41S4CqYgZYCzGTShWvwIfYFzZs4cyqbJnT9rYVUKxhGINAVTFKW3sqq3/2tOvzgJCsSjMY96kGVV/xQlj++13BLGEYg1EsVJ/yRKOaRQJVv8QAiAF86fquzY5xwLwXOVBOa9GSXx8f4RiydGt+k6bcigQUm8XCZbIsfqE6RfRAzhfJUpCkWP5wbDa79sVMtabOFE6AoByKwGhWABQd3dv8lNRCh2iLaoloVAvoVj+ACGWTwT1P+xVHx/m+o8YQKFY6nDc22d8YoVbilykcdzb19v1HMDYcW+fIJZQLP8qRFXGGB5f4WOtgFAsFTT8e79a6eersxg23/g/mXvYz95OsgMAAAAASUVORK5CYII= | |
""" | |
#### | |
helix_Icon_b64=\ | |
""" | |
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 | |
""" | |
#### | |
ClockArabicAxis_Icon_b64=\ | |
""" | |
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 | |
""" | |
ClockRomanAxis_Icon_b64=\ | |
""" | |
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 | |
""" | |
ClockArabicRedress_Icon_b64=\ | |
""" | |
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 | |
""" | |
ClockRomanRedress_Icon_b64=\ | |
""" | |
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 | |
""" | |
#### | |
PathBase_Icon_b64=\ | |
""" | |
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 | |
""" | |
PathCenter_Icon_b64=\ | |
""" | |
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 | |
""" | |
PathTop_Icon_b64=\ | |
""" | |
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 | |
""" | |
PathBaseOrthogonal_Icon_b64=\ | |
""" | |
iVBORw0KGgoAAAANSUhEUgAAAMgAAABaCAIAAABylI6BAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAKnRFWHRBdXRob3IARnJlZUNBRCAoaHR0cDovL3d3dy5mcmVlY2Fkd2ViLm9yZylLpZ5SAAAAKHRFWHRDcmVhdGlvbiBUaW1lAGx1bi4gbWFycyAyOSAxOToxMzoxOSAyMDIx7RzH1gAAAY96VFh0RGVzY3JpcHRpb24AACiRVZLLTsMwEEX3/QrL+/oZaB05QTyEhEQRooDYmjAKhsZBjkvK3xOnTcFeRLozd45nxtFnu2aDvsF3tnUF5oRhBK5q36yrC/z0eD1f4rMSzfTq5uIcDV7X5bvOFvg9hK+c0r7vSS9J62sqGOP0ZXW7rt6hMXPrumBcBRgN/ty1d6aB7stUsM/ftpUJ450H0scWfA1u7i3UsCEOAl3ZVzN+BNl1bxg9T20KPLSE9LOFvpwhpFcmeLsbQvEYzgvMiGBKsgwPUkTJxhOlTGVW4DkjSp6K5QIfCIInHiESoEgJIhI4WSwEV8uJIFOCTHuQMpYwTtTJqRKRKfdtxHymJkiWQrIUkqVtZNn4fHsZAXRYjaaHHel1u/UVjNu69GBC68sn9+na3mk6BY7JYclXJkC52TqCGuM7JBTiKucy5woJJvihaDL+Vbp6/dMFaMprD3B5foUY4WpyH5PRf298uNs2r/Cvk3+xaHmAbxtfvBwG0/So4lzTPJrGP7Oc/QLm/cF0GibyEAAAABB0RVh0U29mdHdhcmUARnJlZUNBRGMaYs8AAAAqdEVYdFRpdGxlAEM6L1Byb3Zpc29pcmU0MDAvUGF0aEJvdHRvbU9ydGhvLnBuZ1hkEN4AAA0JSURBVHic7Z35cxtFFse/SuWn+VOWpWBLWRYcFggsy8YkkDhYiZ04JL4ly47v+5DkI75vy47ji5DEjmzsJLAJBDaBbEFxmV0W2P1P+uf9oUet1mg0mhlppJHVn1Klenp6Xr9+/fz6mCOOI0cqIRCkmsMOhyPTOggOIMKxBJZw+NAh4ViC1JMdEeubhmBsZt6UJ/2aCHTiyMurybQOWnxdvwAAkqRyjhAAR6dtrX/O4nj5ZW+mdYjLP+vmZZciROV0+NSfZ+3bhJzFvkPh09o53qtematVniWEFlA04WntHE0oLhEY5WntnGkb2texZAh5db4OgELNV+frvvLOAoAkPa2do2UAfOWdZe5o96bZG2pe0za06arwiWeGzaviaXgseOWJZ0a9DCGQpK+8s8eCV6xU88Ai258Q0+5h+4il+Ufz+mJ9uAwAPHZPU3PouVagB/MRy9amJ+SNpQbzCkrSY/f0G0sNqVQpB/hH9RRLP3ZP04RRM9p0KGSYU+/N5cbPKyfpYGrzBtoUOg9huzzGx8SMRaxHFRP84V+vN6kW06/eo4oJZgj+KluHZNtCV9xJTCoy41iflY8r9jwfVUy8tdIcW9KweoS8tdIcuUiSqOTPysdVi6tWmuPw5mL2MdoPGRgKH5aOqWx7StJn5ePH11qiiqpmRouKPUtbdHythVUkt1Ft+553OI2KcpasWRU+uDzKYmz+eqsi/2HpGJ9J0dbwYemYnJIkEJK/3qosLkmRMrFw3qZae45j2j0OOdILq/jtjTbVfHr49kYbi2cJpEXHIf4sLyQCIeo/AJL04PJoypucjaja0xgnTrSbc0kTfHxxWDElVCJJIOTkjfZIYYDlKEUhcrswwS3FsN/Ek5awulyD9ZRpU2Ri8q76qAIHVemdDzvul1yFJEGSZDdSlRM9UYtbo54FTpybj7mMaVNkwrE0IhYArjHv3uy8d2EIiO8xhETKaAdCNfk8ETnCsTjMO1ZG9g9P3+5S5HTfHWTpXgyx9P59OEOc00RHqdO3u+5dGGR+EysWwF5xWHI4ICVosiTduzCkKioHyZpVIQBI0l7xYMFmN4CuvQGa5wxFzu+7oorzh84QAUCvBb+5QkjBZrfOpuhpsghaQFRPGSWtjnVmq+ejc/00bOwWDSgciM6Ezmz1oCAqu3O3n6XpJV0YGCroAcCkIb4ryJVyCMfSRTjA7xYNADiz1WPoaguHwm1XQJFTGOoFsH+CAHCG4AzJOduugMZDMsPv9bJ0+44sU/a2c5FiiRsSnsLraXLO3mHc2QkAKDzUu+0K8Mttu9wrDBX6Y2fc267AvgvOEPZd8mxJdr6w9q7tPm11Rgr7aKJt2y9nEQJA+0LXdl+o0M9vjCXUP6ciVqjQHzmQh5FwUDBiNB5LHOvOe77Y/SrqUs4Qzu747oR8UWcJAXB2x6dfl1GXD0Cry0cP2+AfDafjYuTJ0pxyLCB6VcQ91HB2x0eTmb9XuFnQx7yqaFf+U2je6nOGwB5KZPk8hw4Zrmv8nJ8KB9Aa8rEcbRI0mZCiXb8JZbIUvr/oFJaukJJ86Cj1t3SY6OK9AM2hHV+8J4/ZmwV9qa1xoigwUSSH7uatvuYtFfl8m1WFyPaNX+CgwsxCvWqiKFC8F5kcm+6sFA+Ft071sO65fTo86T4NALcRmYOntlLKZHE/gMbbPQCaNnvpoSpatRNy/m5/rg2DFDr3pcY5f7f/1qme83f7YXwQpFi2KpQksAXgJ8pZvHVrrukLAwDqb3ZTD6OHCm6dUls5J3p342ATHgRxC7JxSu4PJDMfcJSUDCYupZsbJ7u07geHufhxKitV5cqH8tb5TMlglGIaEJIGxWzIjZNdoKsrPgQQgiR6ynHx4lDiUrr54EQnc6x9F2ZTKtwEdTc6aYLf2Y/H+59kWNtMQa0UZSJuYWjOLI5Ll64mrxnPen4H3Vm4/EApeT2/gyZiT1mHd0OudD5FLaWtSGcTLEW1U9bzO1iAMNdSy1aFkrSe38Hny7qGn0tJGwuXhxcuDwPwbnQkLp0IZvHkRdkEhCdYfGbpw2E9D1pqkOJVoWetbX89ElTXjnOPiYX/Aso+HUn/sitYOuJZa6tZb6fp5AWm1m52YO14e9mnsmVW/9bG8s211LJVIbvNFJ1Z8Wg0U3uPS+Wj1SutADxrbUvlo0lKOxiLx+qV1v01sL1r3p8M3VqNxVFREf9Fg0Qsv6n+Wkvl52OqZ2l+xqm63gLgmsGGR5rD3a2ySYsMEa/XlIGAkGRal/RQSK0sSfsnCHN8KrPqC+WrfDYZPZYrxyuXm6l7LVeqv2+oDjN91n7Q5tpfmlkrIruM9O8keoeo6ovxZBqXiqFQkkAI3bd1hoj78YT9b7StVE+ULzUBqFxuXqmeSFheht2jDfdBdg2Ii6838buM8lQ4/NKz+3GUHZLsRIfbPWn64uCxRn7XajUJUZmibLERMKC53GRCPE/ULwkea6SJeAUyBd9ZnieTrOGywpqNMkFS2w2yDEJi16vZwppnCkDZYmPZYqOe8sxwWgVsuR/BOqvmyynqVWueKYfDUfPlVMJGmSBlq8IN77TtB0B1NrzTl+brAZQGGza80zqvSmi39I+Sc6/IXwurfarVioXXGvAaADih/DJRCnVOdvJO5+wf1M5k01wjhg9qZwC8P3fl0nw9TSckod2SNKxJuMVTvALxngxASnVOzQZpZoyYam7UzV6crXt/7sqNutmEhW3qWAmrJiQyZzd0oUGEY0Xx4ZW5kpnai7N1NK1RUqdjTR+NfHW4/mstgSlEW7d9l7Jp00drqW4p7EZjjjWVp/yiOnV/3nwAGr6ZT1qxjHGzfv7CtBdAyUztzfq4DUloN9km3K7j9NHa9Fgmnm503nKzfj72NNU2heodcjig/wdAvpEsSfJbgeybguwHAwLt+bvVMH+rYR7AhWmvigXkzotvInCGiv6azVSeUmAKf7xuU3le9uPP7rug0GEqz2tFx5kaChXba1AO2AdjZLzduFA8WXN+ykvTirOTL3kBNH2rzJcJb6KyAhMv1qTtiyOTL3n5SElVpc8y0XyaEwUhTd8upFC1w+ZksSdZqQWbv4uy74HwKwDYbFoomqgBUDxZs9nEtTFyS0fr8ubvYrpKkiZerFGYK/Uo3r0L33Br/m5h/E81LD5FIERF1eRIevJOCA5KiFJlqzkI4Ny4p2iiZqs52PJ9cOyFyP86FrfhhLR8H4x30lpzSRKtnWUwhR0Oh0J/ioaqpjEZsQDcaQne+UFOH1y/krnTEjw75jk37gHQ2hLpM42GGzo1+ke5s1t/UPkP9EzAV8EGwbEXPK0/BGOrsKL7zEesAxylVAm1LrpG3QDOjnlCrYsJy2vYhz81csQNRBaP1MPafkwsPy6EtP24yGqgOuvRKrWYjFjOEJxwq55q30/CKPZmu20RQOGI2zXqpmkNEkasYSfnUtEfABs54k7GjKzqwhE3VZt1VtqiwWHAWFUaNwQAaqADHsm225YKR6rDfbYUv6CGHSJvBlCXat+X5Qw7q+nketjpZpnGcQAoHKlW0zBNvWN8HwvhT+zF+fawdfs09vnttMu9VThSrWqiWDvwOBxhByKk46eljp+WWLGOn5a4txiM/Xj51Kt22pe0tbLuZ3KO1fmva/FOmZKXfXzUcQ3AmatV7w1Xs0MenXMsncUMwVSKvd7uc6wc8Z6E7HZeKxiqAnDmatVuZ5RvaZiIPzX0hyo9xfRD14Bd/4541eDzVdz3TszINIGBiHV6sBIh+RHpXFsSarDXtQzg9GAl9TCE4u/txX7ETPOtfxNGZm8eDD5f1f3zMoCB5yrZ+qD75+V0OpaZy4RfKbjbvXxqoBLhexJ3u5Vd2POfZZaOnNL8woUhI58aqAR7R54QSNLAc5VA1Koznb1mco4lIlYs93quA3i3vwK0m8M52vT+oiwTeLaCJvQbmVaK8A3c3l+uMyHUpWgtaXYsXeXeCVTwh8Kv4nG/9zrC5qL9TXPUkaTAsxV9v8YUkB8E1VUjret+7/X7v8o5DgcUMtPfXyJiWcLHfSsATvrLEe54msPw/bbie6acjlP+31f4fpPPskzoMDKVT4XbrT8O6ynk95eftFqRgwjvXvRfhXsB8hzI90w5fwhCmKupwlxKXaYN0BuxjgA+36oTZQf+cYaU84lvFcAJXxmiHcLvW+37XZl8wH2PCoD/v6uqBqZCFJLt2RMOv3810zrkEG/3lanms+/zBP6n7A7VS/5u+15zBAJrmdYhR8nvLTV6yYPs6Szzz2MJkuRhf8RLjvfEdTK+WBb1VWb+F3uBgk8H1uOdytLuEY4lsAQxFAosQUQsgSVk6RdiBHZHRCyBJYg5lsASRMQSWIKIWAJLEBFLYAkiYgksQUQsgSWIiCWwBMOv2AsEehARS2AJYo4lsAQRsQSWICKWwBJExBJYgohYAksQEUtgCSJiCSzh/84pl2uIBqYTAAAAAElFTkSuQmCC | |
""" | |
PathCenterOrthogonal_Icon_b64=\ | |
""" | |
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 | |
""" | |
PathTopOrthogonal_Icon_b64=\ | |
""" | |
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 | |
""" | |
#### | |
homeIcon = [ | |
"24 24 14 1", | |
" c None", | |
". c #EF2929", | |
"+ c #A40000", | |
"@ c #DDDFDC", | |
"# c #888A85", | |
"$ c #DDDEDB", | |
"% c #DCDEDB", | |
"& c #DCDEDC", | |
"* c #DBDDDA", | |
"= c #BABDB6", | |
"- c #555753", | |
"; c #729FCF", | |
"> c #3465A4", | |
", c #8191AA", | |
" ", | |
" ", | |
" .+ ", | |
" ..++ ", | |
" ....++ ", | |
" .....+++ ", | |
" ....@#++++ ", | |
" ....@@@#++++ ", | |
" ....@@@@@#++++ ", | |
" ....@@@@$@@#++++ ", | |
" ....@@@$@@%@@#++++ ", | |
" ....@@@@@@@@%@@#++++ ", | |
" ...@@@%%%%&%%*@@#+++ ", | |
" ..@@@@@@@@@@@@@@@#++ ", | |
" #@@=#---@@=====@# ", | |
" #@@=#---@@;>>>;@# ", | |
" #@@,#---@@;>>>;@# ", | |
" #@@,#---@@;>>>;@# ", | |
" #@@=#---@@-----@# ", | |
" #@@=#---@@@@@@@@# ", | |
" #@@=##--@@@@@@@@# ", | |
" ################# ", | |
" ", | |
" "] | |
helpIcon = [ | |
"24 24 4 1", | |
" c None", | |
". c #016AC5", | |
"+ c #F8F8FF", | |
"@ c #FFFFFF", | |
"........................", | |
".++++++++++++++++++++++.", | |
".++++++++++++++++++++++.", | |
".++..................++.", | |
".++..................++.", | |
".++......@@@@@@......++.", | |
".++.....@@@@@@@@.....++.", | |
".++.....@@@..@@@.....++.", | |
".++.....@@....@@.....++.", | |
".++.....@@....@@.....++.", | |
".++...........@@.....++.", | |
".++..........@@@.....++.", | |
".++.........@@@......++.", | |
".++........@@@.......++.", | |
".++........@@........++.", | |
".++........@@........++.", | |
".++..................++.", | |
".++........@@........++.", | |
".++........@@........++.", | |
".++..................++.", | |
".++..................++.", | |
".++++++++++++++++++++++.", | |
".++++++++++++++++++++++.", | |
"........................"] | |
executeIcon = [ | |
"24 24 3 1", | |
" c None", | |
". c #4E9A06", | |
"+ c #FFFFFF", | |
" ", | |
" ", | |
" ", | |
" . ", | |
" .+. ", | |
" .+.+. ", | |
" .+...+. ", | |
" .+.....+. ", | |
" . .+.......+.", | |
" .+. .+.......+. ", | |
" .+.+. .+.......+. ", | |
" .+...+. .+.......+. ", | |
" .+.....+.+.......+. ", | |
".+.......+.......+. ", | |
" .+.............+. ", | |
" .+...........+. ", | |
" .+.........+. ", | |
" .+.......+. ", | |
" .+.....+. ", | |
" .+...+. ", | |
" .+.+. ", | |
" .+. ", | |
" . ", | |
" "] | |
quitIcon = [ | |
"24 24 3 1", | |
" c None", | |
". c #FFFFFF", | |
"+ c #CC0000", | |
" .... ", | |
"++++++++++....++++++++++", | |
"+.......++....++.......+", | |
"+.......++....++.......+", | |
"+.......++....++.......+", | |
"+...++++++....++++++...+", | |
"+...++++++....++++++...+", | |
"+...+++++......+++++...+", | |
"+...+++++......+++++...+", | |
"+...+++++......+++++...+", | |
"+...+++++......+++++...+", | |
"+...+++++......+++++...+", | |
"+...+++++......+++++...+", | |
"+...++++++++++++++++...+", | |
"+...++++++++++++++++...+", | |
"+...++++++++++++++++...+", | |
"+...++++++++++++++++...+", | |
"+...++++++++++++++++...+", | |
"+...++++++++++++++++...+", | |
"+...++++++++++++++++...+", | |
"+......................+", | |
"+......................+", | |
"+......................+", | |
"++++++++++++++++++++++++"] | |
resetIcon = [ | |
"24 24 3 1", | |
" c None", | |
". c #3465A4", | |
"+ c #888A85", | |
" ", | |
" ........ ", | |
" .++++++++. ", | |
" .++..+....+. ..... ", | |
" .+.. .+....+. .+++. ", | |
" .+. .+....+..+.+. ", | |
" ... .+....+.+.+. ", | |
" .+....+..+. ", | |
" .+......+. ", | |
" .+.....+. ", | |
" .+....+. ", | |
" ...... .+...+. ", | |
" .++++. .++++. ", | |
" .+...+. ...... ", | |
" .+....+. ", | |
" .+.....+. ", | |
" .+......+. ", | |
" .+..+....+. ", | |
" .+.+.+....+. ... ", | |
" .+.+..+....+. .+. ", | |
" .+++. .+....+. ..+. ", | |
" ..... .+....+..++. ", | |
" .++++++++. ", | |
" ........ "] | |
setIconNoReset = [ | |
"24 24 4 1", | |
" c None", | |
". c #A40000", | |
"+ c #3465A4", | |
"@ c #888A85", | |
" ", | |
" ++++++++ ", | |
" +@@@@@@@@+ ", | |
" +@@++@++++@+ +++++ ", | |
" +@++ +@++++@+ +@@@+ ", | |
". +@+ +@++++@++@+@+.", | |
"... +++ +@++++@+@+...", | |
"..... +@++++@.....", | |
"....... +@++.......", | |
" ........ +........ ", | |
" ........ ........@+ ", | |
" +++..............++@+ ", | |
" +@@@@..........+@@@@+ ", | |
" +@+++..........++++++ ", | |
" +@+.............. ", | |
" +........ ........ ", | |
" ........+@+ ........ ", | |
".......++++@+ .......", | |
".....@+@++++@+ +.....", | |
"...@+@++@++++@+ +@+...", | |
". +@@@+ +@++++@+ ++@+ .", | |
" +++++ +@++++@++@@+ ", | |
" +@@@@@@@@+ ", | |
" ++++++++ " | |
] | |
standIcon = [ | |
"16 16 9 1", | |
" c None", | |
". c #010400", | |
"+ c #28090D", | |
"@ c #4C0000", | |
"# c #770000", | |
"$ c #AE0000", | |
"% c #262826", | |
"& c #CB0000", | |
"* c #FD0705", | |
"*********** ", | |
"*********** ", | |
"** *** ** ", | |
"** *...........", | |
" *...........", | |
" *.. ... ..", | |
" *** ... ", | |
" *** ... ", | |
" *** ... ", | |
" *** ... ", | |
" *** ... ", | |
" ***** ... ", | |
" ... ", | |
" ... ", | |
" ..... ", | |
" "] | |
flatIcon = [ | |
"16 16 9 1", | |
" c None", | |
". c #020400", | |
"+ c #2B0500", | |
"@ c #620502", | |
"# c #770301", | |
"$ c #970300", | |
"% c #B40100", | |
"& c #E60002", | |
"* c #FE0004", | |
" ", | |
" ", | |
" ", | |
" ", | |
" ** . ", | |
" *** ... ", | |
" ** ... ", | |
" *** .. ", | |
" *** .. ", | |
" ****&#... ", | |
" *****$+.....% ", | |
" ** &.+%@...@. ", | |
" ** ..#*&%@....", | |
"**** ... *&$...", | |
" *** .. ** ..", | |
" ."] | |
romanIcon = [ | |
"16 16 5 1", | |
" c None", | |
". c #FD9806", | |
"+ c #FD9904", | |
"@ c #FD9905", | |
"# c #FD9906", | |
" ", | |
" ", | |
" @@ ", | |
" @@@@@ ", | |
" @@@@@ @@ ", | |
" @@@@ @@ @@ ", | |
"@@ @@ @@ @@ ", | |
"@@@ @@ @@ @@ ", | |
" @@@@ @@ @@ ", | |
" +@@ @@ @@ ", | |
" #@@@ @ @@@", | |
" @@ .@@ @@@@ ", | |
" @# @@@@@ ", | |
" +@@@@@ ", | |
" @@ ", | |
" "] | |
arabicIcon = [ | |
"16 16 5 1", | |
" c None", | |
". c #F6972B", | |
"+ c #F6982B", | |
"@ c #F5972B", | |
"# c #F7982B", | |
" ", | |
" ", | |
" ", | |
" .. ", | |
" .. ..... ", | |
" ... .. ", | |
" . .. ", | |
" .+ .. ", | |
" .+ @. ", | |
" .+ #.... ", | |
" ... ... ", | |
" .... ", | |
" ... ", | |
" ....... ", | |
" ... ", | |
" "] | |
redressIcon = [ | |
"16 16 4 1", | |
" c None", | |
". c #010400", | |
"+ c #000000", | |
"@ c #FD9905", | |
" ", | |
" ", | |
".. ..+ ", | |
" . . ", | |
" . ++ .. ", | |
" . + . ", | |
"... ... . ", | |
" . ", | |
" @ ... ", | |
" @ ", | |
" @ @ ..+ ", | |
" @ @ . ", | |
" @@@ .+ ", | |
" @@ . ", | |
" ..+ ", | |
" "] | |
axialIcon = [ | |
"16 16 4 1", | |
" c None", | |
". c #000000", | |
"+ c #010400", | |
"@ c #FD9905", | |
" ", | |
" ", | |
"++ ++. ", | |
" + + ", | |
" + .. +. ", | |
" + . +. ", | |
"+++ +++ + ", | |
" ++ ", | |
" @ + ", | |
" @ ", | |
" @ @ ", | |
" @ @ + +", | |
" @@@ + + +", | |
" @@ .+.+.", | |
" ", | |
" "] | |
setIconDel = [ | |
"24 24 4 1", | |
" c None", | |
". c #EF0013", | |
"+ c #EF0113", | |
"@ c #FFFFFF", | |
" ", | |
" . . ", | |
" .@. .@. ", | |
" .@.@. .@.@. ", | |
" .@..+@. .@+..@. ", | |
" .@..+++@. .@+++..@. ", | |
" .@.+.++@. .@+++++@. ", | |
" .@+..++@.@+++++@. ", | |
" .@++.++@+++++@. ", | |
" .@+++++++++@. ", | |
" .@+++++++@. ", | |
" .@+++++@. ", | |
" .@+++++++@. ", | |
" .@+++++++++@. ", | |
" .@+++++@+++++@. ", | |
" .@+++++@.@+++++@. ", | |
" .@+++++@. .@+++++@. ", | |
" .@..+++@. .@+++..@. ", | |
" .@..+@. .@+..@. ", | |
" .@.@. .@.@. ", | |
" .@. .@. ", | |
" . . ", | |
" ", | |
" "] | |
setIconCommand = [ | |
"24 24 5 1", | |
" c None", | |
". c #A40000", | |
"+ c #8F5902", | |
"@ c #C17D11", | |
"# c #EDD400", | |
" ", | |
" # ", | |
" ### ", | |
" # ", | |
" ## ++++++ ## ", | |
" ## +++@@@@+++ ## ", | |
" #++@@++++@@++# ", | |
" ++@++ # ++@++ ", | |
" +@+# # +@+ ", | |
" ++@+ # # #+@++ ", | |
" # +@+ ++++# +@+ ", | |
" ###+@+###+@@+ +@+ # ", | |
" # +@+ +@@+###+@+### ", | |
" +@+ ++++ +@+ # ", | |
" ++@+ # # # +@++ ", | |
" +@+# # #+@+ ", | |
" ++@++ # ++@++ ", | |
" ++@@++++@@++# ", | |
" #+++@@@@+++ ## ", | |
" ## ++++++ ## ", | |
" ## # ", | |
" ### ", | |
" # ", | |
" " | |
] | |
setIconHelix = [ | |
"24 24 5 1", | |
" c None", | |
". c #A40000", | |
"+ c #3566A4", | |
"@ c #729FCF", | |
"# c #EDD400", | |
" ", | |
" ", | |
" ", | |
" ", | |
" #++@@++ ", | |
" ##.++@@++ ", | |
" ..##+@@++ ", | |
" ..###++ ", | |
" +...## ", | |
" ++@@..## ", | |
" ++@@++..# ", | |
" ++@@++##. ", | |
" #++@@++.. ", | |
" ##.++@@++ ", | |
" ## ++@@++ ", | |
" ..##+@@++ ", | |
" ..###++ ", | |
" +...## ", | |
" ++@@..## ", | |
" ++@@++..# ", | |
" ++@@++## ", | |
" ", | |
" ", | |
" " | |
] | |
setIconClock = [ | |
"24 24 8 1", | |
" c None", | |
". c #C17D11", | |
"+ c #8F5902", | |
"@ c #BABDB6", | |
"# c #EDD400", | |
"$ c #A40000", | |
"% c #CE5C00", | |
"& c #171018", | |
" ", | |
" ..... ", | |
" ++........ ", | |
" +...++++++... ", | |
" +..@@@@#@@@++.. ", | |
" +..#@@@@#@@@@#+.. ", | |
" +..@@#@@@#@@$#@@+.. ", | |
" +.#@@@%@@%@@$@@@#+. ", | |
" +..@#@@@@@#@$@@@#@+.. ", | |
" +.@@@%@@@@@$$@@%@@@+. ", | |
" +.@@@@@@@@@$$@@@@@@+. ", | |
" +.@@@@@@@@&&@@@@@@@+. ", | |
" +.###%@@@@&&@@@%###+. ", | |
" +.@@@@@@@@$$@@@@@@@+. ", | |
" +.@@@%@@@@@$$@@%@@@+. ", | |
" +..@#@@@@@#$$$@@#@+.. ", | |
" +.#@@@%@@%@$$@@@#+. ", | |
" ..@@#@@@#@@$$@@+.. ", | |
" +..#@@@@#@@@$#+.. ", | |
" +..@@@@#@@@++.. ", | |
" +...++++++... ", | |
" ++........ ", | |
" ...... ", | |
" " | |
] | |
setIconPath = [ | |
"24 24 4 1", | |
" c None", | |
". c #905902", | |
"+ c #FFFFFF", | |
"@ c #EDD400", | |
".+...@ ", | |
".+...@ ", | |
"..+...@ ", | |
"..+....@ ", | |
"....+...@ ", | |
"....+....@ ", | |
"@........@ ", | |
"@.........@ ", | |
" @....+...@ ", | |
" @....+...@@@ ", | |
" @....+.....@@ ", | |
" @....+.......@ ", | |
" @............@@ ", | |
" @@.....++......@ ", | |
" @.......++.....@@@ ", | |
" @@@..............@@ ", | |
" @........++.....@", | |
" @@........++....", | |
" @.............", | |
" @............", | |
" @@.......+..", | |
" @......++.", | |
" @@@.....+.", | |
" " | |
] | |
setIconProgress = [ | |
"24 24 3 1", | |
" c None", | |
". c #3465A4", | |
"+ c #729FCF", | |
" ", | |
" ", | |
" ............ ", | |
" .++++++++.. ", | |
" .+++++++.. ", | |
" .++++++.. ", | |
" .++++++.. ", | |
" .+++++++.. ", | |
" .++++++++.. ", | |
" .+++++++++.. ", | |
" .++..++++++.. ", | |
" .+....++++++.. ", | |
" ... ..++++++.. ", | |
" .. ..++++++.. ", | |
" . ..++++++.. ", | |
" ..++++++.. ", | |
" ..++++++.. ", | |
" ..++++... ", | |
" ..++... ", | |
" ..... ", | |
" ... ", | |
" . ", | |
" ", | |
" " | |
] | |
setIconInDoor = [ | |
"24 24 9 1", | |
" c None", | |
". c #A30500", | |
"+ c #555755", | |
"@ c #EF2B29", | |
"# c #2F65A5", | |
"$ c #888A88", | |
"% c #6D9FD0", | |
"& c #BCBCB3", | |
"* c #DDDFDC", | |
" ", | |
" # ", | |
" #%# @. ", | |
" #%%%# @@#. ", | |
" #%%%# @@##.. ", | |
" #%%%#@@###... ", | |
" #%%####%#.... ", | |
" ##%##%%#$.... ", | |
" @##%%%%#*$.... ", | |
" @@##%%%%#**$.... ", | |
" @@##%%%%%#***$.... ", | |
" @@##%%%%%%#****$.... ", | |
" @##########*****$... ", | |
" @@***************$.. ", | |
" $**&$+++**&&&&&*$ ", | |
" $**&$+++**%###%*$ ", | |
" $**$$+++**%###%*$ ", | |
" $**$$+++**%###%*$ ", | |
" $**&$+++**+++++*$ ", | |
" $**&$+++********$ ", | |
" $**&$$++********$ ", | |
" $$$$$$$$$$$$$$$$$ ", | |
" ", | |
" " | |
] | |
setIconOutDoor = [ | |
"24 24 9 1", | |
" c None", | |
". c #A30500", | |
"+ c #555755", | |
"@ c #EF2B29", | |
"# c #2F65A5", | |
"$ c #888A88", | |
"% c #6D9FD0", | |
"& c #BCBCB3", | |
"* c #DDDFDC", | |
" ", | |
" ########## ", | |
" #%%%%%%## @. ", | |
" #%%%%%## @@.. ", | |
" #%%%%%# @@@@.. ", | |
" #%%%%%#@@@@@... ", | |
" #%%%%%%#@@*$.... ", | |
" #%###%%%#***$.... ", | |
" ### @#%%%#***$.... ", | |
" ## @@@#%%%#***$.... ", | |
" # @@@@*#%%%#***$.... ", | |
" @@@@***#%#*****$.... ", | |
" @@@*****#*******$... ", | |
" @@***************$.. ", | |
" $**&$+++**&&&&&*$ ", | |
" $**&$+++**%###%*$ ", | |
" $**$$+++**%###%*$ ", | |
" $**$$+++**%###%*$ ", | |
" $**&$+++**+++++*$ ", | |
" $**&$+++********$ ", | |
" $**&$$++********$ ", | |
" $$$$$$$$$$$$$$$$$ ", | |
" ", | |
" " | |
] | |
setIconFree = [ | |
"24 24 8 1", | |
" c None", | |
". c #7D94C9", | |
"+ c #6480C0", | |
"@ c #3E62B0", | |
"# c #AABBDE", | |
"$ c #C3D0E8", | |
"% c #92A5D3", | |
"& c #000000", | |
" ", | |
" ..+ ", | |
" @@@@#$$#. ", | |
" +#$#%$$###+++ ", | |
" +$%###$$#%#$##. ", | |
" %+%#+%$$$##$#%%+ ", | |
" @+@#$$#@@+##%#%%.+@ ", | |
" %$$$$$###%@%%+..+.+ ", | |
" .$$$$$$#$$#.@@#$$%@@@ ", | |
"@.##$$$####%+%#$$$#%#+ ", | |
"+#$$$$###%%..+$$$$#$$%+ ", | |
"@$$###%#%%%%%+$$$####%+ ", | |
"+##%%%%%%%%%%+$##$#%%.+ ", | |
" +%%....+++++.####%%%.%+", | |
" @@@@@ .#%%%%%%%%%%%+", | |
" %###%%%%...+@", | |
" @@@@@@@@@@@ ", | |
" ", | |
" ", | |
" ", | |
" & && & ", | |
" & && & && ", | |
" && & ", | |
" & " | |
] | |
setIconStamp = [ | |
"24 24 8 1", | |
" c None", | |
". c #787670", | |
"+ c #CE6E21", | |
"@ c #A37D5E", | |
"# c #E48234", | |
"$ c #C69165", | |
"% c #ACADAA", | |
"& c #D6D9D5", | |
" @@@@@ ", | |
" @####$$ ", | |
" @####+$ ", | |
" @####+$ ", | |
" @+##++$ ", | |
" @+++++$ ", | |
" @+++@ ", | |
" .&%%. ", | |
" .&%%. ", | |
" ...&%%... ", | |
" .....%&%%&..... ", | |
" ...&&&%&%%&&&&... ", | |
" ..&&&&&%&%%&&&&&&.. ", | |
" ..&&&&&%&%%&&&&&&.. ", | |
" .&&&&&&&%%%&&&&&&&. ", | |
" .&&&&&&&%%&&&&&&&&. ", | |
" ..&&&&&&&&&&&&&&&.. ", | |
" .&&&&&&&&&&&&&&&. ", | |
" ...&&&&&&&&&&&... ", | |
" &&...&&&&&&&...&& ", | |
" %&&.........&&% ", | |
" %%&&&&&&&&&%% ", | |
" %%%%%%%%% ", | |
" " | |
] | |
#### matplotlib debut 1/5 ################################################################# | |
#import PySide2 | |
#from PySide2 import (QtWidgets, QtCore, QtGui) | |
#from PySide2.QtWidgets import (QWidget, QApplication, QSlider, QGraphicsView, QGraphicsScene, QVBoxLayout, QStyle) | |
import re | |
import operator | |
from operator import itemgetter #, attrgetter, methodcaller # pour sort | |
folderNewIcon = [ | |
"24 24 11 1", | |
" c None", | |
". c #FCE94F", | |
"+ c #EDD400", | |
"@ c #555753", | |
"# c #BABDB6", | |
"$ c #2B4F89", | |
"% c #D3D7CF", | |
"& c #5479AB", | |
"* c #B8BBB5", | |
"= c #B6BAB4", | |
"- c #2E5089", | |
" ...... ", | |
"........ ", | |
"........ ", | |
".+++++++ ", | |
".+.....+@@@@@@@@@@@@ ", | |
".+......###########@ ", | |
".+....$$$$$########@ ", | |
" +....$%%%$$$$$$$$$$$$& ", | |
" @####$$$$$$$$$$$$$$$$& ", | |
" @####$$$$$$$$$$$$$$$$& ", | |
" @###$$$$$$$$$$$$$$$$& ", | |
" @#*$$$$$$$$$$$$$$$$$& ", | |
" @#=$$$$$$$$$$$$$$$$$& ", | |
" @#=$$$$$$$$$$$$$$$$$& ", | |
" @#=$$$$$$$$$$$$$$$&&& ", | |
" @##$$$$$$$$$$$$$$$& ", | |
" @$$$$$$$$$$$$$$$$& ", | |
" @$-$$$$$$$$$$$$$$& ", | |
" @$$$$$$$$$$$$$$$&& ", | |
" &&&&&&&&&&&&&&&&& ", | |
" ", | |
" ", | |
" ", | |
" "] | |
setIconTTF = [ | |
"16 16 6 1", | |
" c None", | |
". c #204A87", | |
"+ c None", | |
"@ c #729FCF", | |
"# c #CC0000", | |
"$ c #EDD400", | |
".+++++++++++@@@@", | |
".++++++++@+@++@@", | |
".++#####++++@@+@", | |
".+++$#$$$++@+@+@", | |
".++++#$+++++++@+", | |
".++++#$#####++++", | |
".++++#$+$#$$$+++", | |
".++++#$++#$+++++", | |
".@++++$++#$+###+", | |
".@@++++++#$+#$$$", | |
"..@@+++++#$+#$++", | |
"...@@+++++$+###+", | |
"....@@++++++#$$$", | |
".....@@+++++#$++", | |
"......@@+++++$++", | |
"................"] | |
setIconFON = [ | |
"16 16 6 1", | |
" c None", | |
". c #204A87", | |
"+ c None", | |
"@ c #F57900", | |
"# c #CC0000", | |
"$ c #EDD400", | |
".+++++++++++@@@@", | |
".++++++++@+@++@@", | |
".++###++++++@@+@", | |
".++#$$$++++@+@+@", | |
".++#$+++++++++@+", | |
".++###+###++++++", | |
".++#$$$#$#$+++++", | |
".++#$++#$#$+++++", | |
".@++$++#$#$##+#+", | |
".@@++++#$#$##$#$", | |
"..@@+++###$#$##$", | |
"...@@+++$$$#$##$", | |
"....@@+++++#$+#$", | |
".....@@++++#$+#$", | |
"......@@++++$++$", | |
"................"] | |
setIconOTF = [ | |
"16 16 6 1", | |
" c None", | |
". c #204A87", | |
"+ c None", | |
"@ c #4E9A06", | |
"# c #CC0000", | |
"$ c #EDD400", | |
".+++++++++++@@@@", | |
".++++++++@+@++@@", | |
".++###++++++@@+@", | |
".++#$#$++++@+@+@", | |
".++#$#$+++++++@+", | |
".++#$#$###++++++", | |
".++#$#$+#$$+++++", | |
".++###$+#$++++++", | |
".@++$$$+#$+###++", | |
".@@+++++#$+#$$$+", | |
"..@@++++#$+#$+++", | |
"...@@++++$+###++", | |
"....@@+++++#$$$+", | |
".....@@++++#$+++", | |
"......@@++++$+++", | |
"................"] | |
setIconPOL = [ | |
"16 16 12 1", | |
" c None", | |
". c #204A87", | |
"+ c None", | |
"@ c #06989A", | |
"# c #73D216", | |
"$ c #000000", | |
"% c #75507B", | |
"& c #729FCF", | |
"* c #CC0000", | |
"= c #F57900", | |
"- c #EDD400", | |
"; c #4E9A06", | |
".+++++++++++@#$%", | |
".++++++++$+#++&$", | |
".++***++++++=@+%", | |
".++*-*-++++*+&+$", | |
".++*-*-+++++++*+", | |
".++***-***++++++", | |
".++*---*-*-+++++", | |
".++*-++*-*-+++++", | |
".$++-++*-*-*++++", | |
".*@++++*-*-*-+++", | |
"..#*+++***-*-+++", | |
"...;#+++---*-+++", | |
"....%=+++++*-+++", | |
".....;$++++****+", | |
"......@%++++----", | |
"................"] | |
#import glob | |
#files_TTF = glob.glob(self.pathFont + "/*.TTF") | |
################################## | |
import matplotlib | |
import matplotlib.font_manager | |
import matplotlib.font_manager as fontman | |
import matplotlib.font_manager as fontconfig | |
from matplotlib.font_manager import FontProperties | |
#from matplotlib.ft2font import FT2Font | |
################################## | |
#### Config Begin matplotlib font ####################### | |
# # https://en.wikipedia.org/wiki/Web_colors | |
global setColorTTF ; setColorTTF = "blue" # .TTF color by "extension name" or hexa "#0000FF" | |
global setColorFON ; setColorFON = "orange" # .FON color by "extension name" or hexa "#FFA500" #FON give error | |
global setColorOTF ; setColorOTF = "green" # .OTF color by "extension name" or hexa "#008000" | |
global setColorPOL ; setColorPOL = "black" # .OTHER color by "extension name" or hexa "#000000" | |
##### | |
global switchModeTextList; switchModeTextList= 1 # 0 = mode text normal (et noir) coupe le switchFontComBox | |
# 1 = permet le switchFontComBox 1 (default) | |
##### | |
global switchFontComBox ; switchFontComBox = 0 # 0 = (et switchModeTextList= 1) mode texte (en couleur) dans liste ComboBox plus rapide (default) | |
# 1 = (et switchModeTextList= 1) fontFamily dans liste ComboBox plus lent mais plus beau! | |
##### | |
global setSystemFonts ; setSystemFonts = 1 # 0 = matplotlib.font_manager.findSystemFonts("C:/", "ttf") | |
# fait toutes les fontes (dans tous les dossiers et sous dossiers du DD) time !! | |
# 1 = fontman.findSystemFonts(self.pathFont) | |
# fait toutes les fontes du repertoire (et dans tous les sous dossiers) (default) | |
##### | |
global seTtextAlignement ; seTtextAlignement = 0 # 0 = AlignLeft (default) | |
# 1 = AlignCenter | |
# 2 = AlignRight | |
##### | |
global setFontByDefault ; setFontByDefault = "ARIAL" # Font by Default | |
##### | |
#### Config End matplotlib font ######################### | |
##### | |
global switchResetFALSE ; switchResetFALSE = 0 # 0 = reset (False by default) | |
# 1 = pas de reset (non conseille) certains switch peuvent rester ouvert ou fermer inopinement ! | |
##### | |
global setPathOrthogonal ; setPathOrthogonal = 0 # | |
global setPathTangent ; setPathTangent = 1 # | |
global setPositionBase ; setPositionBase = 1 # | |
global setPositionCenter ; setPositionCenter = 0 # | |
global setPositionTop ; setPositionTop = 0 # | |
##### | |
global setMainWindowMoveX; #setMainWindowMoveX= 0 # position X macro window | |
global setMainWindowMoveY; #setMainWindowMoveY= 0 # position Y macro window | |
global setFrameWindowSizeX #setFrameWindowSizeX=0 # dimension X macro window | |
global setFrameWindowSizeY #setFrameWindowSizeY=0 # dimension Y macro window | |
#### Config ############################################# | |
def setPolicePath(): | |
global PolicePath | |
global originalFontPath | |
global originalFontName | |
if platform.system() == "Windows" : | |
PolicePath = originalFontPath = "C:/Windows/Fonts/" | |
setFontByDefault = originalFontName = "ARIAL" | |
elif platform.system() == "Linux" : | |
PolicePath = originalFontPath = "/usr/share/fonts/" | |
setFontByDefault = originalFontName = "UBUNTU-M" | |
elif platform.system() == "Darwin": | |
PolicePath = originalFontPath = "/Library/Fonts/" | |
setFontByDefault = originalFontName = "Arial" | |
if platform.system() == "Linux" : | |
PolicePath = originalFontPath = "/usr/share/fonts/" | |
setFontByDefault = originalFontName = "Monospace" | |
setPolicePath() | |
###### Read Configuration begin #### | |
seTtextAlignement = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetInt("seTtextAlignement") | |
setSystemFonts = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("setSystemFonts") | |
switchFontComBox = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("switchFontComBox") | |
switchModeTextList = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("switchModeTextList") | |
setFontByDefault = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetString("setFontByDefault") | |
if setFontByDefault == "": setPolicePath() | |
switchResetFALSE = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("switchResetFALSE") | |
# switchResetFALSE: desactive cree des erreurs de fonctionnement attention a l utilisation !! | |
setMainWindowMoveX = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetInt("setMainWindowMoveX") | |
setMainWindowMoveY = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetInt("setMainWindowMoveY") | |
setFrameWindowSizeX= FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetInt("setFrameWindowSizeX") | |
setFrameWindowSizeY= FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetInt("setFrameWindowSizeY") | |
setPathOrthogonal = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("setPathOrthogonal") | |
setPathTangent = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("setPathTangent") | |
setPositionBase = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("setPositionBase") | |
setPositionCenter = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("setPositionCenter") | |
setPositionTop = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("setPositionTop") | |
###### Read Configuration end #### | |
def createSpace(texte): # detecte majuscule et ajoute un espace devant la lettre | |
# return createSpace(TexTe) = Tex Te , if createSpace(TEXTE) = TEXTE | |
if texte.isupper(): | |
stringSpace = texte | |
else: | |
try: | |
stringSpace = texte[0] | |
for i in texte[1:]: | |
if re.search(r"[A-Z]", i): i = " " + i | |
stringSpace += i | |
except Exception: | |
stringSpace = texte | |
return stringSpace | |
def family(chaine): | |
# return family(chaine)[1] = Family , family(chaine)[2] = typeCar (form [a, b, c ...] | |
famille = typeCar = "" | |
try: | |
if chaine.find('-') != -1: | |
famille = chaine[:chaine.find('-')] | |
typeCar = chaine[chaine.find('-')+1:] | |
else: | |
famille = chaine | |
typeCar = "" | |
except Exception: | |
famille = chaine | |
typeCar = "" | |
typeCar = str(createSpace(typeCar)).split() | |
return [createSpace(famille), typeCar] | |
class MyLabelPatience(): # fenetre image d'attente de chargement | |
global path | |
label = QtWidgets.QLabel() | |
label.setText("<img src=" + path + "FCCircularTextButtom.png><b><center>Wait please</center> \n\n<center>i search the fonts !\n\n</right></b>") | |
ecran = FreeCADGui.getMainWindow().frameGeometry() | |
xF = 250; yF = 250 | |
xW = (ecran.width()/2) - (xF/2) | |
yW = (ecran.height()/2)- (yF/2) | |
label.setGeometry(xW, yW, xF, yF) | |
label.setStyleSheet("QLabel {background-color : #F0C300;font: 12pt; }"); | |
label.setWindowFlags(PySide2.QtCore.Qt.WindowFlags(PySide2.QtCore.Qt.FramelessWindowHint)) # pas de bords | |
label.setWindowFlags(PySide2.QtCore.Qt.WindowStaysOnTopHint) # PySide cette fonction met la fenetre en avant | |
#### matplotlib fin 1/5 ################################################################# | |
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) | |
class Ui_MainWindow(object): | |
def __init__(self): | |
global path | |
self.path = path | |
#### matplotlib debut 2/5 apres __init__ ################################################################# | |
#### matplotlib font textEdit | |
self.FontTextSize = 20 | |
self.fonteComp = "" | |
self.font = QtGui.QFont() | |
self.tableau = [] #Index (), [chemin plus nom fichier (nomPathPolice), nom sans extension (nomSimple), nomSimpleExt (nomSimple + Ext)] | |
self.index = 0 #Index () | |
#### matplotlib font textEdit | |
def searchFont(self,pathSearch, setFontByDefault): #modify | |
global PolicePath | |
global setSystemFonts | |
global seTtextAlignement | |
global switchFontComBox | |
global switchModeTextList | |
#global setFontByDefault #modify | |
MyLabelPatience.label.show() | |
FreeCADGui.updateGui() # rafraichi l'ecran | |
files_All_Fonts = "" | |
##https://matplotlib.org/_modules/matplotlib/font_manager.html | |
if setSystemFonts == 0: | |
files_All_Fonts = matplotlib.font_manager.findSystemFonts(pathSearch, "ttf") # fait toutes les fontes ? () | |
else: | |
files_All_Fonts = fontman.findSystemFonts(pathSearch) # fait toutes les fontes (et dans tous les sous dossiers) | |
if len(files_All_Fonts) > 0: | |
self.tableau = [] | |
self.index = 0 | |
for fonte in files_All_Fonts: | |
#### | |
nomPathPolice = nomFichier = nomSimpleExt = nomSimple = nomExtension = nameName = "" | |
nomPathPolice = fonte.replace("\\","/") # convert the "\" to "/" | |
nomFichier = nomPathPolice.split("/") # complet split | |
nomSimpleExt = nomFichier[-1] # nom avec extension | |
nomSimple = nomFichier[-1][:-4] # nom sans extension | |
nomExtension = nomSimpleExt[nomSimpleExt.rfind('.')+1:].upper() # extension | |
#### | |
try: | |
# nameFamily = matplotlib.font_manager.FontProperties(fname=fonte).get_family() ##['sans-serif'] | |
# nameStyle = matplotlib.font_manager.FontProperties(fname=fonte).get_style() #normal | |
# nameVariant = matplotlib.font_manager.FontProperties(fname=fonte).get_variant() #normal | |
# nameWeight = matplotlib.font_manager.FontProperties(fname=fonte).get_weight() #normal | |
# nameStretch = matplotlib.font_manager.FontProperties(fname=fonte).get_stretch() #normal | |
# nameFileComp = matplotlib.font_manager.FontProperties(fname=fonte).get_file() ##c:\windows\fonts\NotoNaskhArabicUI-Regular.ttf | |
# nameSize = matplotlib.font_manager.FontProperties(fname=fonte).get_size() #10.0 | |
nameName = matplotlib.font_manager.FontProperties(fname=fonte).get_name() ##Noto Naskh Arabic UI | |
# nameSizePoint = matplotlib.font_manager.FontProperties(fname=fonte).get_size_in_points() #10.0 | |
# nameSlant = matplotlib.font_manager.FontProperties(fname=fonte).get_slant() #normal | |
# namePattern = matplotlib.font_manager.FontProperties(fname=fonte).get_fontconfig_pattern() #:family=sans-serif:style=normal:variant=normal:weight=normal:stretch=normal:file=c:\windows\fonts\NotoNaskhArabicUI-Regular.ttf:size=10.0 | |
except Exception: | |
nameFamily = nameStyle = nameVariant = nameWeight = nameStretch = nameFileComp = nameSize = nameName = nameSizePoint = nameSlant = namePattern = "" | |
#### | |
if nameName == "" : | |
nameName = nomSimple | |
self.tableau.append([0, nomPathPolice, nomSimple, nomSimpleExt.upper(), nomExtension.upper(), nameName]) | |
self.tableau = sorted(self.tableau, key=itemgetter(3)) # sorted by nomSimple.upper() | |
try: | |
for line in range(len(self.tableau)): # enleve les doubles (bon) | |
if self.tableau[line][2] == self.tableau[line + 1][2]: # enleve les doubles (bon) | |
del(self.tableau[line + 1]) # enleve les doubles (bon) | |
except Exception: | |
None | |
self.comboBoxPy.clear() | |
for line in range(len(self.tableau)): | |
try: | |
self.tableau[line][0] = line # ajoute le numero de ligne | |
if self.tableau[line][2].upper() == setFontByDefault.upper(): # detecte la fonte de base | |
self.index = line | |
PolicePath = self.tableau[line][1] | |
####Section common color and font begin ###################### | |
model = self.comboBoxPy.model() | |
if switchModeTextList == 1: | |
if self.tableau[line][4] == "TTF": | |
item = QtGui.QStandardItem(QtGui.QPixmap(setIconTTF), str(line)) | |
item.setForeground(QtGui.QColor(setColorTTF)) | |
elif self.tableau[line][4] == "FON": | |
item = QtGui.QStandardItem(QtGui.QPixmap(setIconFON), str(line)) | |
item.setForeground(QtGui.QColor(setColorFON)) | |
elif self.tableau[line][4] == "OTF": | |
item = QtGui.QStandardItem(QtGui.QPixmap(setIconOTF), str(line)) | |
item.setForeground(QtGui.QColor(setColorOTF)) | |
else: | |
item = QtGui.QStandardItem(QtGui.QPixmap(setIconPOL), str(line)) | |
item.setForeground(QtGui.QColor(setColorPOL)) | |
if seTtextAlignement == 0: | |
item.setTextAlignment(QtCore.Qt.AlignLeft) | |
elif seTtextAlignement == 1: | |
item.setTextAlignment(QtCore.Qt.AlignCenter) | |
elif seTtextAlignement == 2: | |
item.setTextAlignment(QtCore.Qt.AlignRight) | |
else: | |
self.comboBoxPy.addItem(self.tableau[line][2]) | |
model.appendRow(item) | |
else: | |
self.comboBoxPy.addItem("") | |
self.comboBoxPy.setItemText(line, self.tableau[line][2]) | |
####Section item color and font end ########################## | |
####Section setfont Family switchFontComBox begin############# | |
if (switchFontComBox == 1) and (switchModeTextList == 1): | |
typeCar = font = "" | |
font = QtGui.QFont() | |
#font = item.font() | |
typeCar = family(self.tableau[line][2])[1] | |
font.setBold(False) | |
font.setItalic(False) | |
if len(typeCar) > 0: | |
for option in typeCar: | |
if option == "Bold": | |
font.setBold(True) | |
if (option == "Italic") or (option == "It") or (option == "Slanted"): | |
font.setItalic(True) | |
if option == "Oblique": | |
font.setItalic(True) | |
#'Bold''Regular''Slanted''Italic''Medium''Extra''Light''Condensed''Black''It''Semibold' | |
font.setFamily(self.tableau[line][5]) | |
font.setPixelSize(15) | |
if switchModeTextList == 1: | |
item.setFont(font) | |
else: | |
self.comboBoxPy.addItem("") | |
####Section setfont Family switchFontComBox end############### | |
except Exception: | |
FreeCAD.Console.PrintMessage("searchFont()" + "\n") | |
None | |
self.lineEdit_NameFile.setText("(" + str(self.index + 1) + "/" + str(len(self.tableau)) + ") " + self.tableau[self.index][1]) | |
self.comboBoxPy.setCurrentIndex(self.index) | |
self.fonteComp = self.tableau[self.index][1] | |
MyLabelPatience.label.close() | |
#### matplotlib fin 2/5 apres __init__ ################################################################# | |
def setupUi(self, MainWindow): | |
self.window = MainWindow | |
global ui | |
global PolicePath | |
global rayon | |
global texte | |
global rotation | |
global SizeCaractere | |
global debout | |
global exterieur | |
global precision | |
global correctionAngle | |
global correctionRayon | |
global baseHelix | |
global endHelix | |
global nombreCarParTour | |
global epaisseurExtrus | |
global epaisSupportClock | |
global setPathOrthogonal | |
global setPathTangent | |
global setPositionBase | |
global setPositionCenter | |
global setPositionTop | |
global switchResetFALSE | |
global setMainWindowMoveX | |
global setMainWindowMoveY | |
global setFrameWindowSizeX | |
global setFrameWindowSizeY | |
global setPathLatestDirectoryManual | |
global setFontByDefault | |
MainWindow.setObjectName(_fromUtf8("MainWindow")) | |
# MainWindow.setMaximumSize(QtCore.QSize(370, 638)) | |
# MainWindow.setMinimumSize(QtCore.QSize(400, 640)) | |
# MainWindow.move(setMainWindowMoveX, setMainWindowMoveY) # position macro | |
MainWindow.setGeometry(setMainWindowMoveX, setMainWindowMoveY, setFrameWindowSizeX, setFrameWindowSizeY) | |
self.centralWidget = QtWidgets.QWidget(MainWindow) | |
self.centralWidget.setObjectName(_fromUtf8("centralWidget")) | |
################### | |
grid = QtWidgets.QGridLayout() | |
self.centralWidget.setLayout(grid) | |
#### | |
self.scrollArea = QtWidgets.QScrollArea(self.centralWidget) # cadre scrollarea contenant le widget GUI | |
self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) | |
self.scrollArea.setWidgetResizable(True) | |
grid.addWidget(self.scrollArea, 0, 0) | |
vbox = QtWidgets.QVBoxLayout() | |
self.scrollArea.setLayout(vbox) | |
#### | |
self.scrollAreaWidgetContents_2 = QtWidgets.QWidget() #widget contenant le GUI | |
vbox.addWidget(self.scrollAreaWidgetContents_2) | |
vbox = QtWidgets.QVBoxLayout() | |
self.scrollAreaWidgetContents_2.setLayout(vbox) | |
################### | |
self.groupBox_00 = QtWidgets.QGroupBox() | |
self.groupBox_00.setFlat(False) | |
self.groupBox_01 = QtWidgets.QGroupBox() | |
self.groupBox_01.setFlat(False) | |
#### | |
self.textEdit = QtWidgets.QTextEdit() | |
self.textEdit.textChanged.connect(self.on_textEdit_Changed) | |
# self.textEdit.setMaximumHeight(100) | |
#### | |
self.frame_Option = QtWidgets.QFrame() | |
self.frame_Option.setFrameShape(QtWidgets.QFrame.StyledPanel) | |
self.frame_Option.setFrameShadow(QtWidgets.QFrame.Plain) #Raised Sunken | |
self.PB_Reverse = QtWidgets.QPushButton() | |
self.PB_Reverse.clicked.connect(self.on_PB_Reverse) | |
self.CB_Word = QtWidgets.QCheckBox() | |
self.CB_Word.setText(_fromUtf8("Word")) | |
self.CB_Word.clicked.connect(self.on_CB_Word) | |
#### | |
self.PB_Help = QtWidgets.QPushButton(MainWindow) | |
self.PB_Help.setIcon(QtGui.QIcon(QtGui.QPixmap(helpIcon))) # help icone dans une variable | |
self.PB_Help.clicked.connect(self.on_PB_Help_clicked) # help | |
#### | |
#### matplotlib debut 3/5 setupUi ################################################################# | |
self.lineEdit_NameFile = QtWidgets.QLineEdit() | |
#self.lineEdit_NameFile.returnPressed.connect(self.on_lineEdit_NameFile) | |
####add | |
self.lineEdit_NameFile_button = QtWidgets.QPushButton(MainWindow) | |
self.lineEdit_NameFile_button.setIcon(QtGui.QIcon(QtGui.QPixmap(folderNewIcon))) | |
self.lineEdit_NameFile_button.clicked.connect(self.on_lineEdit_NameFile_button) | |
self.PB_systemPath = QtWidgets.QPushButton(MainWindow) | |
self.PB_systemPath.setIcon(QtGui.QIcon(QtGui.QPixmap(homeIcon))) # icone dans une variable | |
self.PB_systemPath.clicked.connect(self.on_PB_systemPath) | |
####add | |
self.comboBoxPy = QtWidgets.QComboBox() | |
#### | |
self.pathFont = PolicePath[:len(PolicePath)-(PolicePath[::-1].index("/"))-1] | |
# self.pathFont = setPathLatestDirectoryManual | |
#### | |
ui.searchFont(self.pathFont, setFontByDefault) | |
QtCore.QObject.connect(self.comboBoxPy, QtCore.SIGNAL("currentIndexChanged(int)"), self.on_fontComboBoxPython) | |
#### matplotlib fin 3/5 setupUi ################################################################# | |
#### | |
self.groupBox_02 = QtWidgets.QGroupBox() | |
self.DS_Radius_Circle = QtWidgets.QDoubleSpinBox() | |
self.DS_Radius_Circle.setMinimum(-99999999.0) | |
self.DS_Radius_Circle.setMaximum(99999999.0) | |
self.DS_Radius_Circle.setValue(rayon) | |
self.DS_Radius_Circle.valueChanged.connect(self.on_DS_Radius_Circle) #connection doubleSpinBox | |
self.label_10 = QtWidgets.QLabel() | |
self.DS_Size_Character = QtWidgets.QDoubleSpinBox() | |
self.DS_Size_Character.setMinimum(0.0) | |
self.DS_Size_Character.setMaximum(99999999.0) | |
self.DS_Size_Character.setSingleStep(1.0) | |
self.DS_Size_Character.setValue(SizeCaractere) | |
self.DS_Size_Character.valueChanged.connect(self.on_DS_Size_Character) #connection doubleSpinBox | |
self.label_4 = QtWidgets.QLabel() | |
self.S_Begin_Angle = QtWidgets.QSpinBox() | |
self.S_Begin_Angle.setMaximum(360.0) | |
self.S_Begin_Angle.setValue(debut) | |
self.S_Begin_Angle.valueChanged.connect(self.on_S_Begin_Angle) #connection SpinBox | |
self.label_13 = QtWidgets.QLabel() | |
self.S_End_Angle = QtWidgets.QSpinBox() | |
self.S_End_Angle.setMaximum(360) | |
self.S_End_Angle.setValue(rotation) | |
self.S_End_Angle.valueChanged.connect(self.on_S_End_Angle) #connection SpinBox | |
self.label_14 = QtWidgets.QLabel() | |
self.DS_Correction_Angle = QtWidgets.QDoubleSpinBox() | |
self.DS_Correction_Angle.setMinimum(-359.00) | |
self.DS_Correction_Angle.setMaximum(359.00) | |
self.DS_Correction_Angle.setValue(correctionAngle) | |
self.DS_Correction_Angle.valueChanged.connect(self.on_DS_Correction_Angle) #connection doubleSpinBox | |
self.label_7 = QtWidgets.QLabel() | |
self.DS_Correction_Radius = QtWidgets.QDoubleSpinBox() | |
self.DS_Correction_Radius.setMinimum(-99999999.0) | |
self.DS_Correction_Radius.setMaximum(99999999.0) | |
self.DS_Correction_Angle.setValue(correctionAngle) | |
self.DS_Correction_Radius.setValue(correctionRayon) | |
self.DS_Correction_Radius.valueChanged.connect(self.on_DS_Correction_Radius) #connection doubleSpinBox | |
self.label_8 = QtWidgets.QLabel() | |
self.DS_Extrude = QtWidgets.QDoubleSpinBox() | |
self.DS_Extrude.setEnabled(False) | |
self.DS_Extrude.setMinimum(-99999999.0) | |
self.DS_Extrude.setMaximum(99999999.0) | |
self.DS_Extrude.setValue(epaisseurExtrus) | |
self.DS_Extrude.valueChanged.connect(self.on_DS_Extrude) #connection doubleSpinBox | |
self.CH_Extrude = QtWidgets.QCheckBox() | |
self.CH_Extrude.clicked.connect(self.on_CH_Extrude) #connection checkBox | |
self.DS_PlacementX = QtWidgets.QDoubleSpinBox() | |
self.DS_PlacementX.setEnabled(False) | |
self.DS_PlacementX.setSpecialValueText(_fromUtf8("")) | |
self.DS_PlacementX.setMinimum(-9999999.0) | |
self.DS_PlacementX.setMaximum(9999999.99) | |
self.DS_PlacementX.valueChanged.connect(self.on_DS_PlacementX) #connection doubleSpinBox | |
self.DS_PlacementY = QtWidgets.QDoubleSpinBox() | |
self.DS_PlacementY.setEnabled(False) | |
self.DS_PlacementY.setSpecialValueText(_fromUtf8("")) | |
self.DS_PlacementY.setMinimum(-9999999.0) | |
self.DS_PlacementY.setMaximum(9999999.99) | |
self.DS_PlacementY.valueChanged.connect(self.on_DS_PlacementY) #connection doubleSpinBox | |
self.DS_PlacementZ = QtWidgets.QDoubleSpinBox() | |
self.DS_PlacementZ.setEnabled(False) | |
self.DS_PlacementZ.setSpecialValueText(_fromUtf8("")) | |
self.DS_PlacementZ.setMinimum(-9999999.0) | |
self.DS_PlacementZ.setMaximum(9999999.99) | |
self.DS_PlacementZ.valueChanged.connect(self.on_DS_PlacementZ) #connection doubleSpinBox | |
self.CH_Sp_Placement = QtWidgets.QCheckBox() | |
self.CH_Sp_Placement.clicked.connect(self.on_CH_Sp_Placement) #connection checkBox | |
self.DS_InclinaisonX = QtWidgets.QSpinBox() | |
self.DS_InclinaisonX.setEnabled(False) | |
self.DS_InclinaisonX.setMinimum(-360.0) | |
self.DS_InclinaisonX.setMaximum(360.0) | |
self.DS_InclinaisonX.setValue(inclinaisonX) | |
self.DS_InclinaisonX.valueChanged.connect(self.on_DS_InclinaisonX) #connection doubleSpinBox | |
self.DS_InclinaisonY = QtWidgets.QSpinBox() | |
self.DS_InclinaisonY.setEnabled(False) | |
self.DS_InclinaisonY.setMinimum(-360) | |
self.DS_InclinaisonY.setMaximum(360) | |
self.DS_InclinaisonY.setValue(inclinaisonY) | |
self.DS_InclinaisonY.valueChanged.connect(self.on_DS_InclinaisonY) #connection doubleSpinBox | |
self.DS_InclinaisonZ = QtWidgets.QSpinBox() | |
self.DS_InclinaisonZ.setEnabled(False) | |
self.DS_InclinaisonZ.setMinimum(-360.0) | |
self.DS_InclinaisonZ.setMaximum(360.0) | |
self.DS_InclinaisonZ.setValue(inclinaisonZ) | |
self.DS_InclinaisonZ.valueChanged.connect(self.on_DS_InclinaisonZ) #connection doubleSpinBox | |
self.CH_Sp_Inclination = QtWidgets.QCheckBox() | |
self.CH_Sp_Inclination.clicked.connect(self.on_CH_Sp_Inclination) #connection checkBox | |
#### | |
self.groupBox_03 = QtWidgets.QGroupBox() | |
self.graphicsView = QtWidgets.QGraphicsView() | |
####Screen Graphic BitMap | |
##https://doc.qt.io/qtforpython/PySide2/QtCore/Qt.html | |
self.graphicsView = QtWidgets.QGraphicsView() | |
self.graphicsView.setObjectName("graphicsView") | |
self.graphicsView.setFixedSize(210,100) | |
pic = QtGui.QPixmap() | |
pic.loadFromData(base64.b64decode(outDoor_Icon_b64)) #indoor_Icon_b64 # bmp converti | |
self.scene = QtWidgets.QGraphicsScene() | |
self.scene.addPixmap(QtGui.QPixmap(pic)) | |
self.graphicsView.setScene(self.scene) | |
# pic = QtGui.QPixmap(outDoorIcon) # xpm | |
# self.scene = QtWidgets.QGraphicsScene() # xpm bmp converti (general) | |
# self.scene.addPixmap(QtGui.QPixmap(pic)) # xpm bmp converti (general) | |
# self.graphicsView.setScene(self.scene) # xpm bmp converti (general) | |
# ####Screen Graphic BitMap | |
#### | |
self.RA_Choice_Outdoor = QtWidgets.QRadioButton() | |
self.RA_Choice_Outdoor.setChecked(True) | |
self.RA_Choice_Outdoor.setIcon(QtGui.QIcon(QtGui.QPixmap(setIconOutDoor))) # icone dans une variable | |
self.RA_Choice_Outdoor.clicked.connect(self.on_RA_Choice_Outdoor) #connection radioButton | |
self.RA_Choice_Indoor = QtWidgets.QRadioButton() | |
self.RA_Choice_Indoor.setIcon(QtGui.QIcon(QtGui.QPixmap(setIconInDoor))) # icone dans une variable | |
self.RA_Choice_Indoor.clicked.connect(self.on_RA_Choice_Indoor) #connection radioButton | |
self.RA_Choice_Helix = QtWidgets.QRadioButton() | |
self.RA_Choice_Helix.setIcon(QtGui.QIcon(QtGui.QPixmap(setIconHelix))) # icone dans une variable | |
self.RA_Choice_Helix.clicked.connect(self.on_RA_Choice_Helix) #connection radioButton | |
self.RA_Choice_Clock = QtWidgets.QRadioButton() | |
self.RA_Choice_Clock.setIcon(QtGui.QIcon(QtGui.QPixmap(setIconClock))) # icone dans une variable | |
self.RA_Choice_Clock.clicked.connect(self.on_RA_Choice_Clock) #connection radioButton | |
#self.RA_Choice_Stamp = QtWidgets.QRadioButton() | |
#self.RA_Choice_Stamp.setIcon(QtGui.QIcon(QtGui.QPixmap(setIconStamp))) # icone dans une variable | |
#self.RA_Choice_Stamp.clicked.connect(self.on_RA_Choice_Stamp) #connection radioButton | |
self.PU_Flat = QtWidgets.QPushButton() | |
self.PU_Flat.setEnabled(True) | |
self.PU_Flat.setIcon(QtGui.QIcon(QtGui.QPixmap(standIcon))) # icone dans une variable | |
self.PU_Flat.clicked.connect(self.on_PU_Flat) | |
#### | |
#### Tab Onglets | |
self.tabWidget = QtWidgets.QTabWidget() | |
self.tabWidget.setTabPosition(QtWidgets.QTabWidget.North) | |
self.tabWidget.setTabShape(QtWidgets.QTabWidget.Rounded) | |
self.tabWidget.blockSignals(False) #just for not showing the initial message | |
self.tabWidget.tabBarClicked.connect(self.on_tabWidget) #changed! | |
#self.tabWidget.currentChanged.connect(self.on_tabWidget) #changed! | |
self.DS_Step_Of_The_Helix = QtWidgets.QDoubleSpinBox() | |
self.DS_Step_Of_The_Helix.setMaximum(99999999.99) | |
self.DS_Step_Of_The_Helix.setValue(pasHelix) | |
self.DS_Step_Of_The_Helix.valueChanged.connect(self.on_DS_Step_Of_The_Helix) #connection doubleSpinBox | |
self.label_12 = QtWidgets.QLabel() | |
self.DS_Number_Char_Per_Turn = QtWidgets.QSpinBox() | |
self.DS_Number_Char_Per_Turn.setMaximum(99999999) | |
self.DS_Number_Char_Per_Turn.setValue(nombreCarParTour) | |
self.DS_Number_Char_Per_Turn.valueChanged.connect(self.on_DS_Number_Char_Per_Turn) #connection doubleSpinBox | |
self.label = QtWidgets.QLabel() | |
self.DS_Base_Helix = QtWidgets.QDoubleSpinBox() | |
self.DS_Base_Helix.setEnabled(False) | |
self.DS_Base_Helix.setMinimum(-99999999.0) | |
self.DS_Base_Helix.setMaximum(99999999.0) | |
self.DS_Base_Helix.setValue(baseHelix) | |
self.DS_Base_Helix.valueChanged.connect(self.on_DS_Base_Helix) #connection doubleSpinBox | |
self.label_2 = QtWidgets.QLabel() | |
self.DS_End_Helix = QtWidgets.QDoubleSpinBox() | |
self.DS_End_Helix.setEnabled(False) | |
self.DS_End_Helix.setMinimum(-99999999.0) | |
self.DS_End_Helix.setMaximum(99999999.0) | |
self.DS_End_Helix.setValue(endHelix) | |
self.DS_End_Helix.valueChanged.connect(self.on_DS_End_Helix) #connection doubleSpinBox | |
self.label_3 = QtWidgets.QLabel() | |
#### clock | |
self.DS_Number_Faces_Support = QtWidgets.QSpinBox() | |
self.DS_Number_Faces_Support.setMaximum(999) | |
self.DS_Number_Faces_Support.setValue(nombreFaces) | |
self.DS_Number_Faces_Support.valueChanged.connect(self.on_DS_Number_Faces_Support) #connection SpinBox | |
self.label_5 = QtWidgets.QLabel() | |
self.CB_RomanOrArabic = QtWidgets.QCheckBox() # replace by CheckBox pour ne plus avoir le flip/flop | |
self.CB_RomanOrArabic.setIcon(QtGui.QIcon(QtGui.QPixmap(arabicIcon))) # icone dans une variable | |
self.CB_RomanOrArabic.clicked.connect(self.on_PU_Roman) | |
self.DS_Radius_Support = QtWidgets.QDoubleSpinBox() | |
self.DS_Radius_Support.setMaximum(99999999.99) | |
self.DS_Radius_Support.setValue(cercleClock) | |
self.DS_Radius_Support.setEnabled(False) | |
self.DS_Radius_Support.valueChanged.connect(self.on_DS_Radius_Support) #connection doubleSpinBox | |
self.label_11 = QtWidgets.QLabel() | |
self.CB_RedressChiffres = QtWidgets.QCheckBox() # replace by CheckBox pour ne plus avoir le flip/flop | |
self.CB_RedressChiffres.setIcon(QtGui.QIcon(QtGui.QPixmap(axialIcon))) # icone dans une variable | |
self.CB_RedressChiffres.clicked.connect(self.on_PU_Redress) | |
self.DS_Extrude_Support = QtWidgets.QDoubleSpinBox() | |
self.DS_Extrude_Support.setMaximum(99999999.0) | |
self.DS_Extrude_Support.setEnabled(False) | |
self.DS_Extrude_Support.setValue(epaisSupportClock) | |
self.DS_Extrude_Support.valueChanged.connect(self.on_DS_Extrude_Support) #connection doubleSpinBox | |
self.label_6 = QtWidgets.QLabel() | |
#### Path | |
self.frame_Path = QtWidgets.QFrame() | |
self.frame_Path.setFrameShape(QtWidgets.QFrame.StyledPanel) | |
self.frame_Path.setFrameShadow(QtWidgets.QFrame.Plain) #Raised) Sunken | |
self.RB_Path_01 = QtWidgets.QRadioButton() | |
self.RB_Path_01.setChecked(setPathOrthogonal) | |
self.RB_Path_01.clicked.connect(self.on_RB_Path_Image) | |
self.RB_Path_02 = QtWidgets.QRadioButton() | |
self.RB_Path_02.setChecked(setPathTangent) | |
self.RB_Path_02.clicked.connect(self.on_RB_Path_Image) | |
self.frame_Position = QtWidgets.QFrame() | |
self.frame_Position.setFrameShape(QtWidgets.QFrame.StyledPanel) | |
self.frame_Position.setFrameShadow(QtWidgets.QFrame.Plain) #.Raised) Sunken | |
self.RB_Position_01 = QtWidgets.QRadioButton() | |
self.RB_Position_01.setChecked(setPositionBase) | |
self.RB_Position_01.clicked.connect(self.on_RB_Path_Image) | |
self.RB_Position_02 = QtWidgets.QRadioButton() | |
self.RB_Position_02.setChecked(setPositionCenter) | |
self.RB_Position_02.clicked.connect(self.on_RB_Path_Image) | |
self.RB_Position_03 = QtWidgets.QRadioButton() | |
self.RB_Position_03.setChecked(setPositionTop) | |
self.RB_Position_03.clicked.connect(self.on_RB_Path_Image) | |
#### plus tard | |
# self.horizontalSlider_01_Str = QtWidgets.QSlider() | |
# self.horizontalSlider_01_Str.setOrientation(QtCore.Qt.Horizontal) | |
# self.label_Path_01 = QtWidgets.QLabel() | |
# self.horizontalSlider_02_Car = QtWidgets.QSlider() | |
# self.horizontalSlider_02_Car.setOrientation(QtCore.Qt.Horizontal) | |
# self.label_Path_02 = QtWidgets.QLabel() | |
# self.horizontalSlider_03_Tra = QtWidgets.QSlider() | |
# self.horizontalSlider_03_Tra.setOrientation(QtCore.Qt.Horizontal) | |
# self.label_Path_03 = QtWidgets.QLabel() | |
#### plus tard | |
#### Command | |
self.CB_01_Points = QtWidgets.QCheckBox() | |
self.CB_01_Points.setIcon(QtGui.QIcon.fromTheme("Draft",QtGui.QIcon(":/icons/Draft_Dot.svg"))) | |
self.CB_02_Circle = QtWidgets.QCheckBox() | |
self.CB_02_Circle.setIcon(QtGui.QIcon.fromTheme("Draft",QtGui.QIcon(":/icons/Draft_Circle.svg"))) | |
self.CB_03_BBox = QtWidgets.QCheckBox() | |
self.CB_03_BBox.setIcon(QtGui.QIcon.fromTheme("Draft",QtGui.QIcon(":/icons/sel-bbox.svg"))) | |
self.CB_04_Progression = QtWidgets.QCheckBox() | |
self.CB_04_Progression.setIcon(QtGui.QIcon(QtGui.QPixmap(setIconProgress))) # progress icone dans une variable | |
self.CB_05_Reset = QtWidgets.QCheckBox() | |
if switchResetFALSE == 1: | |
self.CB_05_Reset.setChecked(True) | |
self.CB_05_Reset.setIcon(QtGui.QIcon(QtGui.QPixmap(setIconNoReset))) # reset icone dans une variable | |
else: | |
self.CB_05_Reset.setChecked(False) | |
self.CB_05_Reset.setIcon(QtGui.QIcon(QtGui.QPixmap(resetIcon))) # reset icone dans une variable | |
self.CB_05_Reset.clicked.connect(self.on_CB_05_Reset) | |
self.CB_06_ModeFree = QtWidgets.QCheckBox() | |
self.CB_06_ModeFree.setIcon(QtGui.QIcon(QtGui.QPixmap(setIconFree))) # progress icone dans une variable | |
self.CB_06_ModeFree.clicked.connect(self.on_CB_06_ModeFree) | |
self.PB_Delete_Last = QtWidgets.QPushButton() | |
self.PB_Delete_Last.setIcon(QtGui.QIcon(QtGui.QPixmap(setIconDel))) # del icone dans une variable | |
self.PB_Delete_Last.clicked.connect(self.on_PB_Delete_Last) | |
self.PU_Exit = QtWidgets.QPushButton() | |
self.PU_Exit.setIcon(QtGui.QIcon(QtGui.QPixmap(quitIcon))) # quit icone dans une variable | |
#self.PU_Exit.setIconSize(QtCore.QSize(26, 26)) | |
self.PU_Exit.clicked.connect(self.on_PU_Exit) | |
self.PU_Reset = QtWidgets.QPushButton() | |
self.PU_Reset.setEnabled(True) | |
self.PU_Reset.setIcon(QtGui.QIcon(QtGui.QPixmap(resetIcon))) # reset icone dans une variable | |
self.PU_Reset.clicked.connect(self.on_PU_Reset) | |
self.PU_Benchmarks = QtWidgets.QPushButton() | |
self.PU_Benchmarks.setIcon(QtGui.QIcon(QtGui.QPixmap(executeIcon)))# execute icone dans une variable | |
self.PU_Benchmarks.clicked.connect(self.on_PU_Benchmarks) | |
self.PU_Execute = QtWidgets.QPushButton() | |
self.PU_Execute.setIcon(QtGui.QIcon(QtGui.QPixmap(executeIcon)))# execute icone dans une variable | |
self.PU_Execute.clicked.connect(self.on_PU_Execute) | |
#### Tab Onglets | |
#### | |
#### gridLayout begin ####################### | |
self.grid_00 = QtWidgets.QGridLayout() #self.centralWidget #scrollAreaWidgetContents_2 #self. | |
#self.grid_00.setContentsMargins(10, 10, 10, 10) | |
self.grid_00.addWidget(self.groupBox_00, 0, 0, 1, 1) # groupBox_01 | |
vbox.addWidget(self.groupBox_00) # englobe le cadre principal (titre + date) | |
#### | |
## | |
self.gridLayout_2 = QtWidgets.QGridLayout(self.groupBox_00) | |
self.gridLayout_2.setContentsMargins(10, 10, 10, 10) | |
## | |
self.gridLayout_Texte = QtWidgets.QGridLayout(self.groupBox_01) # groupes ..... | |
self.gridLayout_Texte.setContentsMargins(10, 10, 10, 10) | |
self.gridLayout_Texte.addWidget(self.textEdit, 0, 0, 1, 1) | |
## | |
self.gridLayout_frame_Option = QtWidgets.QGridLayout(self.frame_Option) | |
self.gridLayout_frame_Option.setContentsMargins(10, 10, 10, 10) | |
self.gridLayout_frame_Option.addWidget(self.PB_Reverse, 0, 0, 1, 1) | |
self.gridLayout_frame_Option.addWidget(self.CB_Word, 1, 0, 1, 1) | |
self.gridLayout_frame_Option.addWidget(self.PB_Help,2, 0, 1, 1) | |
self.gridLayout_Texte.addWidget(self.frame_Option, 0, 1, 1, 1) | |
## | |
self.gridLayout_Texte.addWidget(self.lineEdit_NameFile,1, 0, 1, 1)#_Font | |
self.gridLayout_Texte.addWidget(self.lineEdit_NameFile_button,1, 1, 1, 1)#_Font | |
self.gridLayout_Texte.addWidget(self.comboBoxPy,2, 0, 1, 1)#_Font | |
self.gridLayout_Texte.addWidget(self.PB_systemPath,2, 1, 1, 1)#_Font | |
self.gridLayout_2.addWidget(self.groupBox_01, 0, 0, 1, 1) | |
#### | |
self.gridLayout_Config = QtWidgets.QGridLayout(self.groupBox_02) | |
self.gridLayout_Config.setContentsMargins(10, 10, 10, 10) | |
self.gridLayout_Config.addWidget(self.groupBox_03, 0, 0, 7, 2) | |
self.gridLayout_Choice = QtWidgets.QGridLayout(self.groupBox_03) | |
self.gridLayout_Choice.addWidget(self.RA_Choice_Outdoor, 0, 0, 1, 1) | |
self.gridLayout_Choice.addWidget(self.RA_Choice_Indoor, 1, 0, 1, 1) | |
self.gridLayout_Choice.addWidget(self.RA_Choice_Helix, 0, 1, 1, 1) # Visible False not used but stay cause new TAB | |
self.gridLayout_Choice.addWidget(self.RA_Choice_Clock, 1, 1, 1, 1) # Visible False not used but stay cause new TAB | |
#self.gridLayout_Choice.addWidget(self.RA_Choice_Stamp,2, 1, 1, 1) | |
self.gridLayout_Choice.addWidget(self.PU_Flat, 2, 0, 1, 2) | |
self.gridLayout_Choice.addWidget(self.graphicsView, 3, 0, 1, 2) | |
## | |
self.gridLayout_Config.addWidget(self.DS_Radius_Circle, 0, 2, 1, 1) | |
self.gridLayout_Config.addWidget(self.label_10, 0, 3, 1, 1) | |
self.gridLayout_Config.addWidget(self.DS_Size_Character, 1, 2, 1, 1) | |
self.gridLayout_Config.addWidget(self.label_4, 1, 3, 1, 1) | |
self.gridLayout_Config.addWidget(self.S_Begin_Angle, 2, 2, 1, 1) | |
self.gridLayout_Config.addWidget(self.label_13, 2, 3, 1, 1) | |
self.gridLayout_Config.addWidget(self.S_End_Angle, 3, 2, 1, 1) | |
self.gridLayout_Config.addWidget(self.label_14, 3, 3, 1, 1) | |
self.gridLayout_Config.addWidget(self.DS_Correction_Angle, 4, 2, 1, 1) | |
self.gridLayout_Config.addWidget(self.label_7, 4, 3, 1, 1) | |
self.gridLayout_Config.addWidget(self.DS_Correction_Radius, 5, 2, 1, 1) | |
self.gridLayout_Config.addWidget(self.label_8, 5, 3, 1, 1) | |
self.gridLayout_Config.addWidget(self.DS_Extrude, 6, 2, 1, 1) | |
self.gridLayout_Config.addWidget(self.CH_Extrude, 6, 3, 1, 1) | |
self.gridLayout_Config.addWidget(self.DS_PlacementX, 7, 0, 1, 1) | |
self.gridLayout_Config.addWidget(self.DS_PlacementY, 7, 1, 1, 1) | |
self.gridLayout_Config.addWidget(self.DS_PlacementZ, 7, 2, 1, 1) | |
self.gridLayout_Config.addWidget(self.CH_Sp_Placement, 7, 3, 1, 1) | |
self.gridLayout_Config.addWidget(self.DS_InclinaisonX, 8, 0, 1, 1) | |
self.gridLayout_Config.addWidget(self.DS_InclinaisonY, 8, 1, 1, 1) | |
self.gridLayout_Config.addWidget(self.DS_InclinaisonZ, 8, 2, 1, 1) | |
self.gridLayout_Config.addWidget(self.CH_Sp_Inclination, 8, 3, 1, 1) | |
self.gridLayout_2.addWidget(self.groupBox_02, 1, 0, 1, 1) | |
#### | |
self.TAB_Command = QtWidgets.QWidget() | |
self.gridLayout_Command = QtWidgets.QGridLayout(self.TAB_Command) | |
self.gridLayout_Command.setContentsMargins(10, 10, 10, 10) | |
self.gridLayout_Command.addWidget(self.CB_01_Points, 0, 0, 1, 1) | |
self.gridLayout_Command.addWidget(self.CB_02_Circle, 0, 1, 1, 1) | |
self.gridLayout_Command.addWidget(self.CB_03_BBox, 0, 2, 1, 1) | |
self.gridLayout_Command.addWidget(self.CB_04_Progression, 0, 3, 1, 1) | |
self.gridLayout_Command.addWidget(self.CB_06_ModeFree, 1, 0, 1, 1) | |
self.gridLayout_Command.addWidget(self.CB_05_Reset, 1, 2, 1, 1) | |
self.gridLayout_Command.addWidget(self.PB_Delete_Last, 1, 3, 1, 1) | |
self.gridLayout_Command.addWidget(self.PU_Execute, 2, 0, 1, 1) | |
self.gridLayout_Command.addWidget(self.PU_Benchmarks, 2, 1, 1, 1) | |
self.gridLayout_Command.addWidget(self.PU_Reset, 2, 2, 1, 1) | |
self.gridLayout_Command.addWidget(self.PU_Exit, 2, 3, 1, 1) | |
self.tabWidget.addTab(self.TAB_Command, QtGui.QIcon(QtGui.QPixmap(setIconCommand)), "") | |
#### | |
self.gridLayout_2.addWidget(self.tabWidget, 2, 0, 1, 2) #linge, colonne, ligne case, nombre de cases) | |
self.TAB_Helix = QtWidgets.QWidget() | |
self.gridLayout_Helix = QtWidgets.QGridLayout(self.TAB_Helix) | |
self.gridLayout_Helix.setContentsMargins(10, 10, 10, 10) | |
self.gridLayout_Helix.addWidget(self.DS_Step_Of_The_Helix, 0, 0, 1, 1) | |
self.gridLayout_Helix.addWidget(self.label_12, 0, 1, 1, 1) | |
self.gridLayout_Helix.addWidget(self.DS_Number_Char_Per_Turn, 0, 2, 1, 1) | |
self.gridLayout_Helix.addWidget(self.label, 0, 3, 1, 1) | |
self.gridLayout_Helix.addWidget(self.DS_Base_Helix, 1, 0, 1, 1) | |
self.gridLayout_Helix.addWidget(self.label_2, 1, 1, 1, 1) | |
self.gridLayout_Helix.addWidget(self.DS_End_Helix, 1, 2, 1, 1) | |
self.gridLayout_Helix.addWidget(self.label_3, 1, 3, 1, 1) | |
self.tabWidget.addTab(self.TAB_Helix, QtGui.QIcon(QtGui.QPixmap(setIconHelix)), "") | |
#### | |
self.TAB_Clock = QtWidgets.QWidget() | |
self.gridLayout_Clock = QtWidgets.QGridLayout(self.TAB_Clock) | |
self.gridLayout_Clock.addWidget(self.DS_Number_Faces_Support, 0, 0, 1, 1) | |
self.gridLayout_Clock.addWidget(self.label_5, 0, 1, 1, 1) | |
self.gridLayout_Clock.addWidget(self.CB_RomanOrArabic, 0, 2, 1, 1) | |
self.gridLayout_Clock.addWidget(self.DS_Radius_Support, 1, 0, 1, 1) | |
self.gridLayout_Clock.addWidget(self.label_11, 1, 1, 1, 1) | |
self.gridLayout_Clock.addWidget(self.CB_RedressChiffres, 1, 2, 1, 1) | |
self.gridLayout_Clock.addWidget(self.DS_Extrude_Support, 2, 0, 1, 1) | |
self.gridLayout_Clock.addWidget(self.label_6, 2, 1, 1, 1) | |
self.tabWidget.addTab(self.TAB_Clock, QtGui.QIcon(QtGui.QPixmap(setIconClock)), "") | |
#### | |
self.TAB_Path = QtWidgets.QWidget() | |
self.gridLayout_Path = QtWidgets.QGridLayout(self.TAB_Path) | |
self.gridLayout_Path.setContentsMargins(10, 10, 10, 10) | |
self.gridLayout_frame_Path = QtWidgets.QGridLayout(self.frame_Path) | |
self.gridLayout_frame_Path.setContentsMargins(10, 10, 10, 10) | |
self.gridLayout_frame_Path.addWidget(self.RB_Path_01, 0, 1, 1, 1) | |
self.gridLayout_frame_Path.addWidget(self.RB_Path_02, 0, 2, 1, 1) | |
self.gridLayout_Path.addWidget(self.frame_Path, 0, 0, 1, 1) | |
## | |
self.gridLayout_frame_Position = QtWidgets.QGridLayout(self.frame_Position) | |
self.gridLayout_frame_Position.setContentsMargins(10, 10, 10, 10) | |
self.gridLayout_frame_Position.addWidget(self.RB_Position_01, 0, 0, 1, 1) | |
self.gridLayout_frame_Position.addWidget(self.RB_Position_02, 0, 1, 1, 1) | |
self.gridLayout_frame_Position.addWidget(self.RB_Position_03, 0, 2, 1, 1) | |
self.gridLayout_Path.addWidget(self.frame_Position, 1, 0, 1, 1) | |
self.tabWidget.addTab(self.TAB_Path, QtGui.QIcon(QtGui.QPixmap(setIconPath)), "") | |
#### | |
# self.TAB_Stamp = QtWidgets.QWidget() # tab Stamp | |
# self.gridLayout_Stamp = QtWidgets.QGridLayout(self.TAB_Stamp) | |
# self.gridLayout_Stamp.setContentsMargins(10, 10, 10, 10) | |
# | |
# self.tabWidget.addTab(self.TAB_Stamp, QtGui.QIcon(QtGui.QPixmap(setIconStamp)), "") | |
#### | |
###########################################################scrollArea | |
self.scrollArea.setWidget(self.scrollAreaWidgetContents_2) | |
###########################################################scrollArea | |
#### gridLayout end ####################### | |
#### | |
#### | |
MainWindow.setCentralWidget(self.centralWidget) | |
self.retranslateUi(MainWindow) | |
QtCore.QMetaObject.connectSlotsByName(MainWindow) | |
def retranslateUi(self, MainWindow): | |
global originalFontPath | |
global originalFontName | |
global setPathLatestDirectoryManual | |
MainWindow.setWindowFlags(PySide2.QtCore.Qt.WindowStaysOnTopHint) # PySide cette fonction met la fenetre en avant | |
MainWindow.setWindowTitle(_fromUtf8(__Title__)) | |
MainWindow.setWindowIcon(QtGui.QIcon(_fromUtf8(self.path + "FCCircularTextButtom.png"))) # change l'icone de la fenetre principale | |
self.groupBox_00.setTitle(_fromUtf8("Ver : " + __Version__ + " : " + __Date__) + " (rmu)") | |
self.groupBox_01.setTitle(_fromUtf8("Text to be displayed ( "+str(len(texte))+" characters )")) | |
self.textEdit.setHtml(_fromUtf8(texte)) | |
self.textEdit.setToolTip(_fromUtf8("Your text to be displayed" + "\n" | |
"the last character superpose de first character ! " + "\n" | |
"you must adding one space after the last character" + "\n" | |
"you must adding space for adjust, the space is consirdered as character")) | |
self.PB_Reverse.setText(_fromUtf8("Reverse")) | |
self.PB_Reverse.setToolTip(_fromUtf8("Reverse the text edited")) | |
try: | |
self.lineEdit_NameFile.setText(_fromUtf8("(" + str(self.index + 1) + "/" + str(len(self.tableau)) + ") " + self.tableau[self.index][1])) | |
except Exception: | |
None | |
self.lineEdit_NameFile.setToolTip(_fromUtf8("(Number index / Number Fonts) Complete path and name of Font file")) | |
self.lineEdit_NameFile_button.setText(_fromUtf8("Other")) | |
self.lineEdit_NameFile_button.setToolTip(_fromUtf8("Search other folder font" + "\n" | |
"Latest directory visited :" + "\n" + | |
setPathLatestDirectoryManual)) | |
self.PB_systemPath.setText(_fromUtf8("Origine")) | |
self.PB_systemPath.setToolTip(_fromUtf8("Return origine" + "\n" + | |
"( " + originalFontPath + originalFontName + " )")) | |
self.PB_Help.setText(_fromUtf8("Help")) | |
self.CB_Word.setText(_fromUtf8("Word")) | |
self.CB_Word.setToolTip(_fromUtf8("If Word is checked, the text are clipped to each space" + "\n" | |
"one space egual one character." + "\n\n" | |
"If in mode Path you work with a circle," + "\n" | |
"the last character superpose de first character ! " + "\n" | |
"you must adding one space after the last character" + "\n" | |
"for spacing the last and the first character" + "\n\n" | |
"You must work with the space as the character")) | |
#### matplotlib debut 4/5 retranslateUi ################################################################# | |
self.comboBoxPy.setToolTip("Choice your Font" + "\n" + | |
"\n" + | |
"You must modify the configuration of display" + "\n" + | |
"Menu Edit parameter: User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__ + ":" + "\n" + | |
"####" + "\n" + | |
"switchModeTextList= 1\t# 0 = mode text normal (the switchFontComBox is enabled)" + "\n" | |
"\t\t\t# 1 = switchFontComBox authorized (default)" + "\n" | |
"\t\t\t#####" + "\n" | |
"switchFontComBox = 1\t# 0 = mode text in color .. faster" + "\n" | |
"\t\t\t# 1 = fontFamily listed ComboBox slower but beautiful (default)" + "\n" | |
"\t\t\t#####" + "\n" | |
"setSystemFonts = 1\t# 0 = matplotlib.font_manager.findSystemFonts" + "\n" | |
"\t\t\t# all fonts in System font" + "\n" | |
"\t\t\t# 1 = fontman.findSystemFonts(self.pathFont) (default)" + "\n" | |
"\t\t\t# all fonts in all directory and sub directory" + "\n" | |
"\t\t\t#####" + "\n" | |
"seTtextAlignement = 0\t# 0 = AlignLeft (default)" + "\n" | |
"\t\t\t# 1 = AlignCenter" + "\n" | |
"\t\t\t# 2 = AlignRight" + "\n" | |
"\t\t\t#####" + "\n" | |
"setFontByDefault = ""ARIAL""\t # ARIAL" + "\n" | |
"\t\t\t#####" + "\n" | |
"switchResetFALSE = 0\t # 0 by default." + "\n" | |
"If you use this option [ switchResetFALSE = 1 ] some switch can be opened when it should not be" + "\n" | |
"then it is advisable to do a reset after a change one option" + "\n" | |
"####" + "\n" | |
"Actual configuration : " + str(switchModeTextList) + ", " + str(switchFontComBox) + ", " + str(setSystemFonts) + ", " | |
+ str(seTtextAlignement) + ", " + setFontByDefault + ", " + str(switchResetFALSE) + "\n" | |
"####" + "\n" + | |
"Read the info") | |
#### matplotlib fin 4/5 retranslateUi ################################################################# | |
self.groupBox_02.setTitle(_fromUtf8("Configuration")) | |
self.DS_Radius_Circle.setToolTip(_fromUtf8("Give the radius of circle")) | |
self.DS_Radius_Circle.setSuffix(_fromUtf8(" mm")) | |
self.label_10.setText(_fromUtf8("Radius of circle")) | |
self.DS_Size_Character.setToolTip(_fromUtf8("Size of the font")) | |
self.DS_Size_Character.setSuffix(_fromUtf8(" mm")) | |
self.label_4.setText(_fromUtf8("Character size")) | |
self.S_Begin_Angle.setToolTip(_fromUtf8("Starting text of the circle ")) | |
self.S_Begin_Angle.setSuffix(_fromUtf8(" deg")) | |
self.label_13.setText(_fromUtf8("Starting angle")) | |
self.S_End_Angle.setToolTip(_fromUtf8("End text of the circle ")) | |
self.S_End_Angle.setSuffix(_fromUtf8(" deg")) | |
self.label_14.setText(_fromUtf8("Ending angle")) | |
self.DS_Correction_Angle.setToolTip(_fromUtf8("Correct angle for tangent the text of thr circle or give a tilt angle" + "\n" | |
"this option is adding to the original angle (Sp. inclination)")) | |
self.DS_Correction_Angle.setSuffix(_fromUtf8(" deg")) | |
self.label_7.setText(_fromUtf8("Correction Angle")) | |
self.DS_Correction_Radius.setToolTip(_fromUtf8("Correct of the radius (depend of correction angle)" + "\n" | |
"this option is adding to the original radius (Radius of circle)")) | |
self.DS_Correction_Radius.setSuffix(_fromUtf8(" mm")) | |
self.label_8.setText(_fromUtf8("Correction Radius")) | |
self.DS_Extrude.setSuffix(_fromUtf8(" mm")) | |
self.DS_Extrude.setToolTip(_fromUtf8("Thickness of the extrude of character. If thickness = 0 then not extrude")) | |
self.CH_Extrude.setText(_fromUtf8("Extrude Char.")) | |
self.CH_Extrude.setToolTip(_fromUtf8("Choice extrude character or not")) | |
#### | |
self.DS_PlacementX.setSuffix(_fromUtf8(" X mm")) | |
self.DS_PlacementX.setToolTip(_fromUtf8("Placement direction X" + "\n" | |
"Not used with the Clock option")) | |
self.DS_PlacementY.setSuffix(_fromUtf8(" Y mm")) | |
self.DS_PlacementY.setToolTip(_fromUtf8("Placement direction Y" + "\n" | |
"Not used with the Clock option")) | |
self.DS_PlacementZ.setSuffix(_fromUtf8(" Z mm")) | |
self.DS_PlacementZ.setToolTip(_fromUtf8("Placement direction Z"+ "\n" | |
"For Clock option only this Z axis is available")) | |
self.CH_Sp_Placement.setText(_fromUtf8("Placement")) | |
self.CH_Sp_Placement.setToolTip(_fromUtf8("Placement of character in the choice")) | |
#carDegrees = b' \xc2\xb0'.decode("utf-8") #thanks wmayer https://forum.freecadweb.org/viewtopic.php?f=13&t=36380&p=308476#p308357 | |
self.DS_InclinaisonX.setSuffix(_fromUtf8(" deg (Yaw)")) | |
self.DS_InclinaisonX.setToolTip(_fromUtf8("Inclination character in axis Z")) | |
self.DS_InclinaisonY.setSuffix(_fromUtf8(" deg (Pitch)")) | |
self.DS_InclinaisonY.setToolTip(_fromUtf8("Inclination character axis Y")) | |
self.DS_InclinaisonZ.setSuffix(_fromUtf8(" deg (Roll)")) | |
self.DS_InclinaisonZ.setToolTip(_fromUtf8("Inclination character axis X")) | |
self.CH_Sp_Inclination.setText(_fromUtf8("Sp. inclination")) | |
self.CH_Sp_Inclination.setToolTip(_fromUtf8("Inclination of character in the choice or alls plane ")) | |
#### | |
self.groupBox_03.setTitle(_fromUtf8("Choice")) | |
self.RA_Choice_Outdoor.setText(_fromUtf8("Outdoor")) | |
self.RA_Choice_Outdoor.setToolTip(_fromUtf8("Create the text on the outer face of the cylinder")) | |
self.RA_Choice_Indoor.setText(_fromUtf8("Indoor")) | |
self.RA_Choice_Indoor.setToolTip(_fromUtf8("Create the text on the inside of the cylinder")) | |
self.RA_Choice_Helix.setText(_fromUtf8("Helix")) | |
self.RA_Choice_Helix.setToolTip(_fromUtf8("Create the text in a helix")) | |
self.RA_Choice_Clock.setText(_fromUtf8("Clock")) | |
self.RA_Choice_Clock.setToolTip(_fromUtf8("Create the text to form a clock")) | |
#self.RA_Choice_Stamp.setText(_fromUtf8("Stamp")) | |
#self.RA_Choice_Stamp.setToolTip(_fromUtf8("Create stamp text (text reversed)")) | |
self.PU_Flat.setText(_fromUtf8("Mode Stand")) | |
self.PU_Flat.setToolTip(_fromUtf8("Click for create the text Flat")) | |
#### | |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.TAB_Helix), _fromUtf8("Helix")) | |
self.tabWidget.setTabToolTip(1,_fromUtf8("Create one helix")) | |
self.DS_Step_Of_The_Helix.setSuffix(_fromUtf8(" mm")) | |
self.DS_Step_Of_The_Helix.setToolTip(_fromUtf8("Step of the text along the helix (min Size Caractere)")) | |
self.label_12.setText(_fromUtf8("Step of Helix")) | |
self.DS_Number_Char_Per_Turn.setToolTip(_fromUtf8("Number of characters for one turn of helix")) | |
self.label.setText(_fromUtf8("Char. per turn")) | |
self.DS_Base_Helix.setToolTip(_fromUtf8("Base (begin) of helix (to activate Step of Helix must be zero)")) | |
self.DS_Base_Helix.setSuffix(_fromUtf8(" mm")) | |
self.label_2.setText(_fromUtf8("Base Helix")) | |
self.DS_End_Helix.setToolTip(_fromUtf8("Final height of the helix (to activate Step of Helix must be zero)")) | |
self.DS_End_Helix.setSuffix(_fromUtf8(" mm")) | |
self.label_3.setText(_fromUtf8("End Helix")) | |
#### | |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.TAB_Clock), _fromUtf8("Clock")) | |
self.tabWidget.setTabToolTip(2,_fromUtf8("Create one clock with character mode Arabic or Roman")) | |
self.DS_Radius_Support.setSuffix(_fromUtf8(" mm")) | |
self.DS_Radius_Support.setToolTip(_fromUtf8("Radius of the support the clock (By defaut : Radius of circle)")) | |
self.label_11.setText(_fromUtf8("Radius of support")) | |
self.CB_RomanOrArabic.setText(_fromUtf8("Mode Arabic")) | |
self.CB_RomanOrArabic.setToolTip(_fromUtf8("The characters is in Roman or Arabic (default)")) | |
self.DS_Number_Faces_Support.setToolTip(_fromUtf8("Number of side of the support 0=none, 1=circle, 2=rectangle, 3=triangle, 4=square, 5=pentagon . . . . (Thickness egal extrude)")) | |
self.label_5.setText(_fromUtf8("Support number face")) | |
self.CB_RedressChiffres.setText(_fromUtf8("Axial")) | |
self.CB_RedressChiffres.setToolTip(_fromUtf8("Click for activate the mode Redress")) | |
self.DS_Extrude_Support.setToolTip(_fromUtf8("Thickness of the extrude the support." + "\n" | |
"If thickness = 0 then not extrude" + "\n" | |
"If thickness of support is bigger than character" + "\n" | |
"the SpinBox is colored in red" + "\n" | |
"if the CheckBox [Extrude Char.] is not checked" + "\n" | |
"the SpinBox is colored in orange for warn that the character is at the base of the support")) | |
self.DS_Extrude_Support.setSuffix(_fromUtf8(" mm")) | |
self.label_6.setText(_fromUtf8("Extrude support")) | |
#### | |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.TAB_Path), _fromUtf8("Path")) # tab Path | |
self.tabWidget.setTabEnabled(3, False) | |
self.tabWidget.setTabToolTip(3,_fromUtf8("The string follow the wire selected (Based on X, Y plane)" + "\n" | |
"The buttons Outdoor, Helix, Indoor, Clock and" | |
"the button Mode Stand / Flat are ignored" + "\n" | |
"The direction of the text depend of the direction Left/Right of the wire selected" + "\n" | |
"in this case use the Reverse Button")) | |
self.RB_Path_01.setText(_fromUtf8("Orthogonal")) | |
self.RB_Path_01.setToolTip(_fromUtf8("The character is orthogonal")) | |
self.RB_Path_02.setText(_fromUtf8("Tangent")) | |
self.RB_Path_02.setToolTip(_fromUtf8("The character is tangent on position wire selected")) | |
self.RB_Position_01.setText(_fromUtf8("BB Base")) | |
self.RB_Position_01.setToolTip(_fromUtf8("The BoundBox of the character is on Base")) | |
self.RB_Position_02.setText(_fromUtf8("BB Center")) | |
self.RB_Position_02.setToolTip(_fromUtf8("The BoundBox of the character is on BB Center")) | |
self.RB_Position_03.setText(_fromUtf8("BB Top")) | |
self.RB_Position_03.setToolTip(_fromUtf8("The BoundBox of the character is on BB Top")) | |
# later self.label_Path_01.setText(_fromUtf8("Rotation str")) | |
# later self.label_Path_02.setText(_fromUtf8("Rotation car")) | |
# later self.label_Path_03.setText(_fromUtf8("Translation")) | |
#### | |
# self.tabWidget.setTabText(self.tabWidget.indexOf(self.TAB_Stamp), _fromUtf8("Stamp")) # tab Stamp | |
# self.tabWidget.setTabToolTip(4,_fromUtf8("Stamp")) | |
#### | |
self.tabWidget.setTabText(self.tabWidget.indexOf(self.TAB_Command), _fromUtf8("Command")) | |
self.tabWidget.setTabToolTip(0,_fromUtf8("Command section")) | |
self.CB_01_Points.setText(_fromUtf8("Points")) | |
self.CB_01_Points.setToolTip(_fromUtf8("Create points repere")) | |
self.CB_02_Circle.setText(_fromUtf8("Circle")) | |
self.CB_02_Circle.setToolTip(_fromUtf8("Create Circle repere" + "\n" | |
"if helix is used one helix is created with the circle")) | |
self.CB_03_BBox.setText(_fromUtf8("BoundBox")) | |
self.CB_03_BBox.setToolTip(_fromUtf8("Create BoundBox on character")) | |
self.CB_04_Progression.setText(_fromUtf8("Progression")) | |
self.CB_04_Progression.setToolTip(_fromUtf8("Visualise the character in construction")) | |
self.CB_05_Reset.setText(_fromUtf8("Reset")) | |
self.CB_05_Reset.setToolTip(_fromUtf8("Reset checkBox False by default (reset on all push button execute)" + "\n" | |
"If you check this option No reset is performed" + "\n" | |
"and if the result is not good" + "\n" | |
"ex: the old internal coordinate hare conserved or other..." + "\n" | |
"push the Reset button or " + "\n" | |
"uncheck this checkBox and try or restart FCCircularText")) | |
self.CB_06_ModeFree.setText(_fromUtf8("Free")) | |
self.CB_06_ModeFree.setToolTip(_fromUtf8("Mode Free, all pre-settings are ignored" + "\n" | |
"Free as a cloud")) | |
self.PB_Delete_Last.setText(_fromUtf8("Del")) | |
self.PB_Delete_Last.setToolTip(_fromUtf8("Delete the last object created")) | |
self.PU_Exit.setText(_fromUtf8("Exit")) | |
self.PU_Exit.setToolTip(_fromUtf8("Exit FCCircularText")) | |
self.PU_Reset.setText(_fromUtf8("Reset")) | |
self.PU_Reset.setToolTip(_fromUtf8("Reset all parameters of the macro")) | |
self.PU_Execute.setText(_fromUtf8("Run")) | |
self.PU_Execute.setToolTip("Execute the process") # without Compount | |
self.PU_Benchmarks.setText(_fromUtf8("Run+Comp")) | |
self.PU_Benchmarks.setToolTip(_fromUtf8("Execute the process and one Compount of the characters is create")) | |
#### | |
#### matplotlib debut 5/5 ################################################################# | |
def on_fontComboBoxPython(self,indeX): # 0: for fontComboBoxPython | |
global PolicePath | |
global setFontByDefault | |
self.index = indeX | |
self.lineEdit_NameFile.setText("(" + str(self.index + 1) + "/" + str(len(self.tableau)) + ") " + self.tableau[self.index][1]) | |
PolicePath = self.tableau[self.index][1] | |
famille = typeCar = self.font = "" | |
self.font = QtGui.QFont() | |
typeCar = family(self.tableau[self.index][2])[1] | |
self.font.setBold(False) | |
self.font.setItalic(False) | |
if len(typeCar) > 0: | |
for option in typeCar: | |
if option == "Bold": | |
self.font.setBold(True) | |
if (option == "Italic") or (option == "It") or (option == "Slanted"): | |
self.font.setItalic(True) | |
if option == "Oblique": | |
self.font.setItalic(True) | |
#'Bold''Regular''Slanted''Italic''Medium''Extra''Light''Condensed''Black''It''Semibold'#+ | |
self.font.setFamily(self.tableau[self.index][5]) | |
self.font.setPointSize(self.FontTextSize) | |
#### | |
self.fonteComp = self.tableau[self.index][1] | |
setFontByDefault = self.tableau[self.index][2] | |
# FreeCAD.Console.PrintMessage(str(self.index) + " , " + self.tableau[self.index][1] + " , " + self.tableau[self.index][2] + " , ' " + famille + "' , ' " + typeCar + " ' \n") | |
#### matplotlib fin 5/5 ################################################################# | |
def on_lineEdit_NameFile(self, setFontByDefault): | |
self.pathFont = self.lineEdit_NameFile.text() | |
try: | |
self.pathFont = self.pathFont.split(")") [1] | |
except Exception: | |
self.pathFont = self.pathFont | |
ui.searchFont(self.pathFont, setFontByDefault) | |
QtCore.QObject.connect(self.comboBoxPy, QtCore.SIGNAL("currentIndexChanged(int)"), self.on_fontComboBoxPython) | |
def on_lineEdit_NameFile_button(self): # path manual | |
global setPathLatestDirectoryManual | |
global ui | |
OpenName = "" | |
#### mint | |
if platform.node() == "mint": | |
OpenName, Filter = PySide2.QtWidgets.QFileDialog.getOpenFileName(None, u"Read a font file", setPathLatestDirectoryManual, "(otf *.otf);;(ttf *.ttf);;(ttc *.ttc);;(*.*);;(*)")#PySide2 Mint | |
#### mint | |
else: | |
OpenName, Filter = PySide2.QtWidgets.QFileDialog.getOpenFileName(None, u"Read a font file", setPathLatestDirectoryManual, "*.otf *.ttf *.ttc ;;OpenType Font (*.otf);;TrueType Font (*.ttf);;TrueType Collection (*.ttc);;All (*.*);;All (*)")#PySide2 | |
try: | |
if OpenName != "": # "C:/Temp/FontesTemp/arial.ttf" | |
####new2 | |
pathFile = os.path.dirname(OpenName) + "/" #1# = C:/Provisoire400/ | |
racineDrive = os.path.splitdrive(OpenName)[0] #2# = C: | |
formatFichier = os.path.splitext(OpenName)[1] #4# = .png | |
OpenName = os.path.splitext(OpenName)[0] #5# = /home/kubuntu/.FreeCAD/Macro/Texture_007_H #= C:/Provisoire400/image3D | |
nomFichier = os.path.basename(OpenName) #3# = image3D | |
SaveNameformatFichier = OpenName + formatFichier #6# = C:/Provisoire400/image3D.png | |
pathFileSaveNameformatFichier = pathFile + nomFichier + formatFichier #7# = C:/Provisoire400/image3D.png | |
####new2 | |
setPathLatestDirectoryManual = pathFile | |
FreeCAD.ParamGet(u"User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetString(u"setPathLatestDirectoryManual", setPathLatestDirectoryManual) #*"C:\ ???" | |
ui.searchFont(pathFile, nomFichier) | |
except Exception: | |
None | |
def on_PB_systemPath(self): # return font origin system | |
global ui | |
global setSystemFonts | |
global originalFontPath | |
global originalFontName | |
global setLastFontPath | |
global searchFontName | |
setSystemFonts = 1 | |
setLastFontPath = originalFontPath | |
ui.searchFont(originalFontPath, originalFontName) | |
def on_textEdit_Changed(self): #connection textEdit | |
global ui | |
ui.on_CB_Word() | |
def on_PB_Reverse(self): #connection Reverse | |
global texte | |
texte = self.textEdit.toPlainText() | |
texte = texte[::-1] | |
self.textEdit.setText(_fromUtf8(texte)) | |
def on_CB_Word(self): | |
global texte | |
texte = "" | |
texte = self.textEdit.toPlainText() | |
try: | |
selectedEdge = FreeCADGui.Selection.getSelectionEx()[0].SubObjects[0] | |
except Exception: | |
selectedEdge = "" | |
if self.CB_Word.isChecked(): | |
texte = texte.split(" ") | |
mot = "word" | |
else: | |
mot = "characters" | |
if (texte.count(" ") == 1) or (texte.count(" ") == 0): | |
espace = "space" | |
else: | |
espace = "spaces" | |
if str(selectedEdge) != "": | |
self.groupBox_01.setTitle("Text to be displayed ( "+str(len(texte))+ " " + mot + " ) ( " + str(texte.count(" ")) + " " + espace + " ) ( Lenght " + str(round(selectedEdge.Length,3)) + " mm )") | |
else: | |
self.groupBox_01.setTitle("Text to be displayed ( "+str(len(texte))+ " " + mot + " ) ( " + str(texte.count(" ")) + " " + espace + " )") | |
if self.RA_Choice_Outdoor.isChecked(): | |
self.Image_RA_Choice_Outdoor() | |
if self.RA_Choice_Indoor.isChecked(): | |
self.Image_RA_Choice_Indoor() | |
def on_PU_Reset_Placement(self): # Reset_Placement | |
global PlacementX | |
global PlacementY | |
global PlacementZ | |
global coor_X | |
global coor_Y | |
global coor_Z | |
coor_X = coor_Y = coor_Z = 0.0 | |
PlacementX = PlacementY = PlacementZ = 0.0 | |
self.CH_Sp_Placement.setChecked(False) ; self.CH_Sp_Placement.setStyleSheet("QCheckBox {" + setStyleBase + "}") | |
self.DS_PlacementX.setValue(PlacementX) | |
self.DS_PlacementX.setEnabled(False) ; self.DS_PlacementX.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
self.DS_PlacementY.setValue(PlacementY) | |
self.DS_PlacementY.setEnabled(False) ; self.DS_PlacementY.setStyleSheet("QDoubleSpinBox {" +setStyleBase + "}") | |
self.DS_PlacementZ.setValue(PlacementZ) | |
self.DS_PlacementZ.setEnabled(False) ; self.DS_PlacementZ.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
# App.Console.PrintMessage(str("on_PU_Reset_Placement ")+"\n") | |
def on_PU_Reset_Inclination(self): # Reset_Inclination | |
global inclinaisonX | |
global inclinaisonY | |
global inclinaisonZ | |
inclinaisonX = inclinaisonY = inclinaisonZ = 0.0 | |
self.CH_Sp_Inclination.setChecked(False); self.CH_Sp_Inclination.setStyleSheet("QCheckBox {" + setStyleBase + "}") | |
self.DS_InclinaisonX.setValue(inclinaisonX) | |
self.DS_InclinaisonX.setEnabled(False) ; self.DS_InclinaisonX.setStyleSheet("QSpinBox {" + setStyleBase + "}") | |
self.DS_InclinaisonY.setValue(inclinaisonY) | |
self.DS_InclinaisonY.setEnabled(False) ; self.DS_InclinaisonY.setStyleSheet("QSpinBox {" + setStyleBase + "}") | |
self.DS_InclinaisonZ.setValue(inclinaisonZ) | |
self.DS_InclinaisonZ.setEnabled(False) ; self.DS_InclinaisonZ.setStyleSheet("QSpinBox {" + setStyleBase + "}") | |
# App.Console.PrintMessage(str("on_PU_Reset_Inclination ")+"\n") | |
def Image_RA_Choice_Outdoor(self): # | |
global debout | |
#### | |
pic = QtGui.QPixmap() | |
if debout == 1: | |
if self.CB_Word.isChecked(): | |
pic.loadFromData(base64.b64decode(outDoorWord_Icon_b64)) # bmp converti | |
else: | |
pic.loadFromData(base64.b64decode(outDoor_Icon_b64)) # bmp converti | |
else: | |
if self.CB_Word.isChecked(): | |
pic.loadFromData(base64.b64decode(FlatOutDoorWord_Icon_b64)) # bmp converti | |
else: | |
pic.loadFromData(base64.b64decode(FlatOutDoor_Icon_b64)) # bmp converti | |
self.scene = QtWidgets.QGraphicsScene() | |
self.scene.addPixmap(QtGui.QPixmap(pic)) | |
self.graphicsView.setScene(self.scene) | |
#### | |
def on_RA_Choice_Outdoor(self): # | |
global ui | |
global exterieur | |
global epaisseurExtrus | |
global switchResetFALSE | |
ui.Image_RA_Choice_Outdoor() | |
epaisseurExtrus = 0.0 | |
self.tabWidget.setCurrentIndex(0) | |
self.DS_Extrude.setValue(epaisseurExtrus) | |
self.DS_Extrude.setEnabled(False) | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") # origin system | |
self.CH_Extrude.setChecked(False) | |
exterieur = 1 | |
self.S_Begin_Angle.setEnabled(True) | |
self.S_End_Angle.setEnabled(True) | |
self.DS_Correction_Radius.setEnabled(True) | |
self.DS_Correction_Angle.setEnabled(True) | |
self.PU_Flat.setEnabled(True) | |
if switchResetFALSE == 0: # zero (False) by default = reset | |
ui.on_PU_Reset_Placement() | |
ui.on_PU_Reset_Inclination() | |
def Image_RA_Choice_Indoor(self): # | |
global debout | |
#### | |
pic = QtGui.QPixmap() | |
if debout == 1: | |
if self.CB_Word.isChecked(): | |
pic.loadFromData(base64.b64decode(inDoorWord_Icon_b64)) # bmp converti | |
else: | |
pic.loadFromData(base64.b64decode(inDoor_Icon_b64)) # bmp converti | |
else: | |
if self.CB_Word.isChecked(): | |
pic.loadFromData(base64.b64decode(FlatInDoorWord_Icon_b64)) # bmp converti | |
else: | |
pic.loadFromData(base64.b64decode(FlatInDoor_Icon_b64)) # bmp converti | |
self.scene = QtWidgets.QGraphicsScene() | |
self.scene.addPixmap(QtGui.QPixmap(pic)) | |
self.graphicsView.setScene(self.scene) | |
#### | |
def on_RA_Choice_Indoor(self): # | |
global ui | |
global exterieur | |
global epaisseurExtrus | |
global switchResetFALSE | |
ui.Image_RA_Choice_Indoor() | |
epaisseurExtrus = 0.0 | |
self.tabWidget.setCurrentIndex(0) | |
self.DS_Extrude.setValue(epaisseurExtrus) | |
self.DS_Extrude.setEnabled(False) | |
self.CH_Extrude.setChecked(False) | |
exterieur = 0 | |
self.S_Begin_Angle.setEnabled(True) | |
self.S_End_Angle.setEnabled(True) | |
self.DS_Correction_Radius.setEnabled(True) | |
self.DS_Correction_Angle.setEnabled(True) | |
self.PU_Flat.setEnabled(True) | |
if switchResetFALSE == 0: # zero (False) by default = reset | |
ui.on_PU_Reset_Placement() | |
ui.on_PU_Reset_Inclination() | |
def Image_RA_Choice_Helix(self): # | |
#### | |
pic = QtGui.QPixmap() | |
pic.loadFromData(base64.b64decode(helix_Icon_b64)) # bmp converti | |
self.scene = QtWidgets.QGraphicsScene() | |
self.scene.addPixmap(QtGui.QPixmap(pic)) | |
self.graphicsView.setScene(self.scene) | |
#### | |
def on_RA_Choice_Helix(self): # | |
global ui | |
global exterieur | |
global cercleClock | |
global nombreFaces | |
global debout | |
global epaisseurExtrus | |
global switchResetFALSE | |
ui.Image_RA_Choice_Helix() | |
ui.tabWidget.setTabEnabled(1, True) | |
ui.tabWidget.setCurrentIndex(1) | |
epaisseurExtrus = 0.0 | |
self.DS_Extrude.setValue(epaisseurExtrus) | |
self.DS_Extrude.setEnabled(False) | |
self.CH_Extrude.setChecked(False) | |
exterieur = 2 | |
nombreFaces = 0 | |
self.DS_Number_Faces_Support.setValue(nombreFaces) | |
cercleClock = 0 | |
self.DS_Radius_Support.setValue(cercleClock) | |
self.DS_Radius_Support.setEnabled(False) | |
debout = 1 | |
self.PU_Flat.setText(_fromUtf8("Mode Stand")) | |
self.S_Begin_Angle.setEnabled(True) | |
self.S_End_Angle.setEnabled(True) | |
self.DS_Correction_Radius.setEnabled(True) | |
self.DS_Correction_Angle.setEnabled(True) | |
self.PU_Flat.setEnabled(False)## | |
if switchResetFALSE == 0: # zero (False) by default = reset | |
ui.on_PU_Reset_Placement() | |
ui.on_PU_Reset_Inclination() | |
def Image_RA_Choice_Clock(self): | |
global redressement | |
#### | |
pic = QtGui.QPixmap() | |
if self.CB_RomanOrArabic.isChecked(): | |
if redressement == 1: | |
pic.loadFromData(base64.b64decode(ClockRomanRedress_Icon_b64)) # bmp converti | |
else: | |
pic.loadFromData(base64.b64decode(ClockRomanAxis_Icon_b64)) # bmp converti | |
else: | |
if redressement == 1: | |
pic.loadFromData(base64.b64decode(ClockArabicRedress_Icon_b64)) # bmp converti | |
else: | |
pic.loadFromData(base64.b64decode(ClockArabicAxis_Icon_b64)) # bmp converti | |
self.scene = QtWidgets.QGraphicsScene() | |
self.scene.addPixmap(QtGui.QPixmap(pic)) | |
self.graphicsView.setScene(self.scene) | |
#### | |
def on_RA_Choice_Clock(self): | |
global ui | |
global exterieur | |
global debout | |
global correctionRayon | |
global correctionAngle | |
global epaisseurExtrus | |
global switchResetFALSE | |
global romain | |
ui.Image_RA_Choice_Clock() | |
ui.tabWidget.setTabEnabled(2, True) | |
ui.tabWidget.setCurrentIndex(2) | |
epaisseurExtrus = 0.0 | |
self.DS_Extrude.setValue(epaisseurExtrus) | |
self.DS_Extrude.setEnabled(False) | |
self.CH_Extrude.setChecked(False) | |
exterieur = 3 | |
debout = 0 | |
self.PU_Flat.setEnabled(False) | |
self.S_Begin_Angle.setEnabled(False) | |
self.S_End_Angle.setEnabled(False) | |
# correctionRayon = 0 | |
self.DS_Correction_Radius.setEnabled(False) | |
self.DS_Correction_Radius.setValue(0.0) | |
# correctionAngle = 10.0 | |
self.DS_Correction_Angle.setEnabled(False) | |
self.DS_Correction_Angle.setValue(0.0) | |
if switchResetFALSE == 0: # zero (False) by default = reset | |
ui.on_PU_Reset_Placement() | |
ui.on_PU_Reset_Inclination() | |
def on_tabWidget(self, value): # Tab | |
global ui | |
global setStylePathG | |
global setStyleBase | |
if value == 0: # Command | |
self.tabWidget.setStyleSheet("QTabWidget {" + setStyleBase + "}") | |
None | |
elif value == 1: # Helix | |
self.RA_Choice_Helix.setChecked(True) | |
self.on_RA_Choice_Helix() | |
elif value == 2: # Clock | |
self.RA_Choice_Clock.setChecked(True) | |
self.on_RA_Choice_Clock() | |
elif value == 3: # Path | |
self.tabWidget.setStyleSheet("QTabWidget {" + setStylePathG + "}") | |
None | |
elif value == 4: # Stamp | |
#self.tabWidget.setStyleSheet("QTabWidget {" + setStyleBase + "}") | |
#self.RA_Choice_Stamp.setChecked(True) | |
#self.on_RA_Choice_Stamp() | |
#self.on_RA_Choice_Stamp() | |
None | |
def on_PU_Flat(self): # Flat or Stand | |
global debout | |
pic = QtGui.QPixmap() | |
if debout == 1: | |
debout = 0 | |
self.PU_Flat.setText(_fromUtf8("Mode Flat")) | |
self.PU_Flat.setToolTip(_fromUtf8("Click for create the text Stand")) | |
self.PU_Flat.setIcon(QtGui.QIcon(QtGui.QPixmap(flatIcon))) # icone dans une variable | |
# self.RA_Choice_Outdoor.setText(_fromUtf8("Indoor")) | |
# self.RA_Choice_Indoor.setText(_fromUtf8("Outdoor")) | |
if self.RA_Choice_Outdoor.isChecked(): | |
if self.CB_Word.isChecked(): | |
pic.loadFromData(base64.b64decode(FlatOutDoorWord_Icon_b64)) # bmp converti | |
else: | |
pic.loadFromData(base64.b64decode(FlatOutDoor_Icon_b64)) # bmp converti | |
elif self.RA_Choice_Indoor.isChecked(): | |
if self.CB_Word.isChecked(): | |
pic.loadFromData(base64.b64decode(FlatInDoorWord_Icon_b64)) # bmp converti | |
else: | |
pic.loadFromData(base64.b64decode(FlatInDoor_Icon_b64)) # bmp converti | |
else: | |
debout = 1 | |
self.PU_Flat.setText(_fromUtf8("Mode Stand")) | |
self.PU_Flat.setToolTip(_fromUtf8("Click for create the text Flat")) | |
self.PU_Flat.setIcon(QtGui.QIcon(QtGui.QPixmap(standIcon))) # icone dans une variable | |
# self.RA_Choice_Outdoor.setText(_fromUtf8("Outdoor")) | |
# self.RA_Choice_Indoor.setText(_fromUtf8("Indoor")) | |
if self.RA_Choice_Outdoor.isChecked(): | |
pic.loadFromData(base64.b64decode(outDoor_Icon_b64)) # bmp converti | |
elif self.RA_Choice_Indoor.isChecked(): | |
pic.loadFromData(base64.b64decode(inDoor_Icon_b64)) # bmp converti | |
self.scene = QtWidgets.QGraphicsScene() | |
self.scene.addPixmap(QtGui.QPixmap(pic)) | |
self.graphicsView.setScene(self.scene) | |
# App.Console.PrintMessage(str("on_PU_Flat ")+str(debout)+"\n") | |
# def on_RA_Choice_Stamp(self): | |
# global ui | |
# | |
# if self.RA_Choice_Helix.isChecked() or self.RA_Choice_Clock.isChecked(): | |
# self.RA_Choice_Outdoor.setChecked(True) | |
# self.on_RA_Choice_Outdoor() | |
def on_DS_Radius_Circle(self,value): | |
global rayon | |
global cercleClock | |
rayon = value | |
cercleClock = rayon | |
self.DS_Radius_Support.setValue(cercleClock) | |
def on_DS_Size_Character(self,value): | |
global SizeCaractere | |
SizeCaractere = value | |
def on_S_Begin_Angle(self,value): # | |
global debut | |
debut = value | |
def on_S_End_Angle(self,value): # | |
global rotation | |
rotation = value | |
def on_DS_PlacementX(self,value): # | |
global PlacementX | |
PlacementX = value | |
def on_DS_PlacementY(self,value): # | |
global PlacementY | |
PlacementY = value | |
def on_DS_PlacementZ(self,value): # | |
global PlacementZ | |
PlacementZ = value | |
def on_CH_Sp_Placement(self): # Placement or not Placement | |
global ui | |
if self.CH_Sp_Placement.isChecked(): | |
self.DS_PlacementX.setEnabled(True) | |
self.DS_PlacementY.setEnabled(True) | |
self.DS_PlacementZ.setEnabled(True) | |
self.DS_PlacementX.setStyleSheet(u"QDoubleSpinBox {border-width: 2px; border-style: solid; border-color: #FF0000}") # Red rgb(255,0,0) | |
self.DS_PlacementY.setStyleSheet(u"QDoubleSpinBox {border-width: 2px; border-style: solid; border-color: #008500}") # Green rgb(0, 133, 0) | |
self.DS_PlacementZ.setStyleSheet(u"QDoubleSpinBox {border-width: 2px; border-style: solid; border-color: #0000FF}") # Blue rgb(0,0,255) | |
else: | |
ui.on_PU_Reset_Placement() | |
if self.RA_Choice_Clock.isChecked(): | |
self.DS_PlacementX.setEnabled(False) | |
self.DS_PlacementY.setEnabled(False) | |
def on_DS_Correction_Angle(self,value): # | |
global correctionAngle | |
correctionAngle = value | |
def on_DS_Correction_Radius(self,value): # | |
global correctionRayon | |
correctionRayon = value | |
def on_DS_Extrude(self,value): # | |
global epaisseurExtrus | |
global epaisSupportClock | |
global setStyleBase | |
global setStyleRed | |
global setStyleOrange | |
global setStyleBlueLight | |
epaisseurExtrus = value | |
if self.CB_06_ModeFree.isChecked(): | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleBlueLight + "}") | |
else: | |
if self.RA_Choice_Clock.isChecked(): | |
if epaisseurExtrus > epaisSupportClock: | |
self.DS_Extrude_Support.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") # origin system | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") # origin system | |
self.CH_Extrude.setStyleSheet("QCheckBox {" + setStyleBase + "}") # origin system | |
else: | |
if epaisSupportClock >= epaisseurExtrus: | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleRed + "}") | |
self.DS_Extrude_Support.setStyleSheet("QDoubleSpinBox {" + setStyleRed + "}") | |
else: | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleOrange + "}") | |
if epaisseurExtrus == 0: | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleOrange + "}") | |
def on_CH_Extrude(self): # | |
global epaisseurExtrus | |
global epaisSupportClock | |
global setStyleBase | |
global setStyleOrange | |
global setStyleBlueLight | |
if self.CH_Extrude.isChecked(): | |
self.DS_Extrude.setEnabled(True) | |
epaisseurExtrus = 1.0 | |
else: | |
self.DS_Extrude.setEnabled(False) | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") # origin system | |
epaisseurExtrus = 0.0 | |
if self.CB_06_ModeFree.isChecked(): | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleBlueLight + "}") | |
else: | |
if (epaisSupportClock != 0) and (epaisSupportClock >= epaisseurExtrus): | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleOrange + "}") | |
self.DS_Extrude_Support.setStyleSheet("QDoubleSpinBox {" + setStyleOrange + "}") | |
self.CH_Extrude.setStyleSheet("QCheckBox {" + setStyleOrange + "}") | |
else: | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") # origin system | |
self.CH_Extrude.setStyleSheet("QCheckBox {" + setStyleBase + "}") # origin system | |
self.DS_Extrude.setValue(epaisseurExtrus) | |
def on_DS_InclinaisonX(self,value): # | |
global inclinaisonX | |
inclinaisonX = value | |
def on_DS_InclinaisonY(self,value): # | |
global inclinaisonY | |
inclinaisonY = value | |
def on_DS_InclinaisonZ(self,value): # | |
global inclinaisonZ | |
inclinaisonZ = value | |
def on_CH_Sp_Inclination(self): # | |
global ui | |
if self.CH_Sp_Inclination.isChecked(): | |
self.DS_InclinaisonX.setEnabled(True) | |
self.DS_InclinaisonY.setEnabled(True) | |
self.DS_InclinaisonZ.setEnabled(True) | |
else: | |
ui.on_PU_Reset_Inclination() | |
def on_DS_Step_Of_The_Helix(self,value): # | |
global pasHelix | |
global baseHelix | |
global endHelix | |
pasHelix = value | |
if pasHelix == 0: | |
baseHelix = endHelix = 0.0 | |
self.DS_Base_Helix.setValue(baseHelix) | |
self.DS_Base_Helix.setEnabled(True) | |
self.DS_End_Helix.setValue(endHelix) | |
self.DS_End_Helix.setEnabled(True) | |
else: | |
baseHelix = endHelix = 0.0 | |
self.DS_Base_Helix.setValue(baseHelix) | |
self.DS_Base_Helix.setEnabled(False) | |
self.DS_End_Helix.setValue(endHelix) | |
self.DS_End_Helix.setEnabled(False) | |
def on_DS_Number_Char_Per_Turn(self,value):# | |
global nombreCarParTour | |
nombreCarParTour = value | |
def on_DS_Base_Helix(self,value): # | |
global baseHelix | |
baseHelix = value | |
def on_DS_End_Helix(self,value): # | |
global endHelix | |
endHelix = value | |
def on_RB_Path_Image(self): # Path Images a Afficher | |
pic = QtGui.QPixmap() | |
if self.RB_Path_01.isChecked(): # Orthogonal | |
if self.RB_Position_01.isChecked(): # Path BB Base | |
pic.loadFromData(base64.b64decode(PathBaseOrthogonal_Icon_b64)) # bmp converti | |
elif self.RB_Position_02.isChecked(): # Path BB Center | |
pic.loadFromData(base64.b64decode(PathCenterOrthogonal_Icon_b64))# bmp converti | |
elif self.RB_Position_03.isChecked(): # Path BB Top | |
pic.loadFromData(base64.b64decode(PathTopOrthogonal_Icon_b64)) # bmp converti | |
elif self.RB_Path_02.isChecked(): # Follow on direction | |
if self.RB_Position_01.isChecked(): # Path BB Base | |
pic.loadFromData(base64.b64decode(PathBase_Icon_b64)) # bmp converti | |
elif self.RB_Position_02.isChecked(): # Path BB Center | |
pic.loadFromData(base64.b64decode(PathCenter_Icon_b64)) # bmp converti | |
elif self.RB_Position_03.isChecked(): # Path BB Top | |
pic.loadFromData(base64.b64decode(PathTop_Icon_b64)) # bmp converti | |
self.scene = QtWidgets.QGraphicsScene() | |
self.scene.addPixmap(QtGui.QPixmap(pic)) | |
self.graphicsView.setScene(self.scene) | |
def on_DS_Radius_Support(self,value): # Clock | |
global cercleClock | |
cercleClock = value | |
def on_DS_Number_Faces_Support(self,value): # number Faces of support 0=none 1=circle 2=rectangle 3=triangle 4,5 ... polygon | |
global nombreFaces # Clock | |
global epaisSupportClock | |
global cercleClock | |
nombreFaces = value | |
self.DS_Radius_Support.setEnabled(True) | |
self.DS_Extrude_Support.setEnabled(True) | |
self.DS_Extrude_Support.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") # origin system | |
if nombreFaces == 0: | |
self.label_5.setText(_fromUtf8("Support number face")) | |
epaisSupportClock = 0.0 | |
self.DS_Radius_Support.setEnabled(False) | |
self.DS_Radius_Support.setValue(cercleClock) | |
self.DS_Extrude_Support.setEnabled(False) | |
self.DS_Extrude_Support.setValue(epaisSupportClock) | |
elif nombreFaces == 1: | |
self.label_5.setText(_fromUtf8("Support Circle")) | |
elif nombreFaces == 2: | |
self.label_5.setText(_fromUtf8("Support Rectangle")) | |
elif nombreFaces == 3: | |
self.label_5.setText(_fromUtf8("Support Triangle")) | |
elif nombreFaces == 4: | |
self.label_5.setText(_fromUtf8("Support Square")) | |
else : | |
self.label_5.setText(_fromUtf8("Support Polygone")) | |
def on_DS_Extrude_Support(self,value): # Clock | |
global epaisSupportClock | |
global epaisseurExtrus | |
global setStyleBase | |
global setStyleRed | |
global setStyleOrange | |
epaisSupportClock = value | |
if epaisSupportClock >= epaisseurExtrus: | |
if self.CH_Extrude.isChecked(): | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleRed + "}") | |
self.DS_Extrude_Support.setStyleSheet("QDoubleSpinBox {" + setStyleRed + "}") | |
self.CH_Extrude.setStyleSheet("QCheckBox {" + setStyleBase + "}") | |
else: | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleOrange + "}") | |
self.DS_Extrude_Support.setStyleSheet("QDoubleSpinBox {" + setStyleOrange + "}") | |
self.CH_Extrude.setStyleSheet("QCheckBox {" + setStyleOrange + "}") | |
else: | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
self.DS_Extrude_Support.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
self.CH_Extrude.setStyleSheet("QCheckBox {" + setStyleBase + "}") | |
if epaisSupportClock == 0: | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
self.DS_Extrude_Support.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
self.CH_Extrude.setStyleSheet("QCheckBox {" + setStyleBase + "}") | |
self.DS_PlacementZ.setEnabled(True) | |
def on_PU_Roman(self): # Roman or Arabic Clock | |
global redressement | |
global romain | |
pic = QtGui.QPixmap() | |
if self.CB_RomanOrArabic.isChecked(): | |
#### | |
if redressement == 1: | |
pic.loadFromData(base64.b64decode(ClockRomanRedress_Icon_b64)) # bmp converti | |
else: | |
pic.loadFromData(base64.b64decode(ClockRomanAxis_Icon_b64)) # bmp converti | |
#### | |
romain = 1 | |
self.CB_RomanOrArabic.setText(_fromUtf8("Mode Roman")) | |
self.CB_RomanOrArabic.setToolTip(_fromUtf8("Check for activate the mode Arabic")) | |
self.CB_RomanOrArabic.setIcon(QtGui.QIcon(QtGui.QPixmap(romanIcon))) # icone dans une variable | |
else: | |
#### | |
if redressement == 1: | |
pic.loadFromData(base64.b64decode(ClockArabicRedress_Icon_b64)) # bmp converti | |
else: | |
pic.loadFromData(base64.b64decode(ClockArabicAxis_Icon_b64)) # bmp converti | |
#### | |
romain = 0 | |
self.CB_RomanOrArabic.setText(_fromUtf8("Mode Arabic")) | |
self.CB_RomanOrArabic.setToolTip(_fromUtf8("Check for activate the mode Roman")) | |
self.CB_RomanOrArabic.setIcon(QtGui.QIcon(QtGui.QPixmap(arabicIcon))) # icone dans une variable | |
self.scene = QtWidgets.QGraphicsScene() | |
self.scene.addPixmap(QtGui.QPixmap(pic)) | |
self.graphicsView.setScene(self.scene) | |
def on_PU_Redress(self): # Redress or circumferencial Clock | |
global redressement | |
global romain | |
pic = QtGui.QPixmap() | |
# if redressement == 1: | |
if self.CB_RedressChiffres.isChecked(): | |
#### | |
if romain == 1: | |
pic.loadFromData(base64.b64decode(ClockRomanRedress_Icon_b64)) # bmp converti | |
else: | |
pic.loadFromData(base64.b64decode(ClockArabicRedress_Icon_b64)) # bmp converti | |
#### | |
redressement = 1 | |
self.CB_RedressChiffres.setText(_fromUtf8("Redress")) | |
self.CB_RedressChiffres.setIcon(QtGui.QIcon(QtGui.QPixmap(redressIcon))) # icone dans une variable | |
self.CB_RedressChiffres.setToolTip(_fromUtf8("Click for activate the mode Axial")) | |
else: | |
#### | |
if romain == 1: | |
pic.loadFromData(base64.b64decode(ClockRomanAxis_Icon_b64)) # bmp converti | |
else: | |
pic.loadFromData(base64.b64decode(ClockArabicAxis_Icon_b64)) # bmp converti | |
#### | |
redressement = 0 | |
self.CB_RedressChiffres.setText(_fromUtf8("Axial")) | |
self.CB_RedressChiffres.setIcon(QtGui.QIcon(QtGui.QPixmap(axialIcon))) # icone dans une variable | |
self.CB_RedressChiffres.setToolTip(_fromUtf8("Click for activate the mode Redress")) | |
self.scene = QtWidgets.QGraphicsScene() | |
self.scene.addPixmap(QtGui.QPixmap(pic)) | |
self.graphicsView.setScene(self.scene) | |
def on_CB_05_Reset(self): # | |
global switchResetFALSE | |
if self.CB_05_Reset.isChecked(): | |
switchResetFALSE = 1 | |
self.CB_05_Reset.setText(_fromUtf8("Not Reset")) | |
self.CB_05_Reset.setIcon(QtGui.QIcon(QtGui.QPixmap(setIconNoReset))) # reset icone dans une variable | |
self.CB_05_Reset.setToolTip(_fromUtf8("Reset checkBox False by default (reset on all push button execute)" + "\n" | |
"If you check this option No reset is performed" + "\n" | |
"and if the result is not good" + "\n" | |
"ex: the old internal coordinate hare conserved or other..." + "\n" | |
"push the Reset button or " + "\n" | |
"uncheck this checkBox and try or restart FCCircularText" + "\n" | |
" ACTUAL TRUE NOT RESET")) | |
else: | |
switchResetFALSE = 0 | |
self.CB_05_Reset.setText(_fromUtf8("Reset")) | |
self.CB_05_Reset.setIcon(QtGui.QIcon(QtGui.QPixmap(resetIcon))) # reset icone dans une variable | |
self.CB_05_Reset.setToolTip(_fromUtf8("Reset checkBox False by default (reset on all push button execute)" + "\n" | |
"If you check this option No reset is performed" + "\n" | |
"and if the result is not good" + "\n" | |
"ex: the old internal coordinate hare conserved or other..." + "\n" | |
"push the Reset button or " + "\n" | |
"uncheck this checkBox and try or restart FCCircularText" + "\n" | |
" ACTUAL FALSE RESET ALL PUSH EXECUTE BUTTON")) | |
def on_PB_Delete_Last(self): # delete the last object created | |
global FcString | |
global FcStringPoints | |
global circleGuide | |
global helixGuide | |
global suppExtrude | |
global createCompound | |
global selComplete | |
try: | |
App.ActiveDocument.getObject(FcStringPoints.Name).removeObjectsFromDocument() | |
App.ActiveDocument.removeObject(FcStringPoints.Name) | |
except Exception: None | |
try: | |
App.ActiveDocument.getObject(FcString.Name).removeObjectsFromDocument() | |
App.ActiveDocument.removeObject(FcString.Name) | |
except Exception: None | |
try: | |
App.ActiveDocument.removeObject(circleGuide.Name) | |
except Exception: None | |
try: | |
App.ActiveDocument.removeObject(helixGuide.Name) | |
except Exception: None | |
try: | |
App.ActiveDocument.removeObject(suppExtrude.Name) | |
except Exception: None | |
try: | |
App.ActiveDocument.removeObject(createCompound.Name) | |
except Exception: None | |
App.ActiveDocument.recompute() | |
try: | |
#restore previous selection | |
Gui.Selection.clearSelection() | |
for s in selComplete: | |
Gui.Selection.addSelection(s.Object,s.SubElementNames) | |
selComplete = "" | |
except Exception: None | |
def on_CB_06_ModeFree(self): # | |
global ui | |
global setStyleBlueLight | |
global setStyleBase | |
global debout | |
if self.CB_06_ModeFree.isChecked(): | |
self.RA_Choice_Outdoor.setChecked(True) | |
self.on_RA_Choice_Outdoor() | |
debout = 0 | |
self.on_PU_Flat() | |
self.PU_Flat.setEnabled(True) | |
self.groupBox_03.setEnabled(False) | |
self.tabWidget.setTabEnabled(1, False) | |
self.tabWidget.setTabEnabled(2, False) | |
self.tabWidget.setTabEnabled(4, False) | |
self.S_Begin_Angle.setEnabled(False) | |
self.S_End_Angle.setEnabled(False) | |
self.DS_Correction_Angle.setEnabled(False) | |
self.DS_Correction_Radius.setEnabled(False) | |
self.CB_06_ModeFree.setStyleSheet("QCheckBox {" + setStyleBlueLight + "}") | |
self.DS_Radius_Circle.setStyleSheet("QDoubleSpinBox {" + setStyleBlueLight + "}") | |
self.label_10.setStyleSheet("QLabel {" + setStyleBlueLight + "}") | |
self.DS_Size_Character.setStyleSheet("QDoubleSpinBox {" + setStyleBlueLight + "}") | |
self.label_4.setStyleSheet("QLabel {" + setStyleBlueLight + "}") | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleBlueLight + "}") | |
self.CH_Extrude.setStyleSheet("QCheckBox {" + setStyleBlueLight + "}") | |
self.CH_Sp_Placement.setChecked(True) ; self.CH_Sp_Placement.setStyleSheet("QCheckBox {" + setStyleBlueLight + "}") | |
self.DS_PlacementX.setEnabled(True) ; self.DS_PlacementX.setStyleSheet("QDoubleSpinBox {" + setStyleBlueLight + "}") | |
self.DS_PlacementY.setEnabled(True) ; self.DS_PlacementY.setStyleSheet("QDoubleSpinBox {" + setStyleBlueLight + "}") | |
self.DS_PlacementZ.setEnabled(True) ; self.DS_PlacementZ.setStyleSheet("QDoubleSpinBox {" + setStyleBlueLight + "}") | |
self.CH_Sp_Inclination.setChecked(True) ; self.CH_Sp_Inclination.setStyleSheet("QCheckBox {" + setStyleBlueLight + "}") | |
self.DS_InclinaisonX.setEnabled(True) ; self.DS_InclinaisonX.setStyleSheet("QSpinBox {" + setStyleBlueLight + "}") | |
self.DS_InclinaisonY.setEnabled(True) ; self.DS_InclinaisonY.setStyleSheet("QSpinBox {" + setStyleBlueLight + "}") | |
self.DS_InclinaisonZ.setEnabled(True) ; self.DS_InclinaisonZ.setStyleSheet("QSpinBox {" + setStyleBlueLight + "}") | |
else: | |
self.CB_06_ModeFree.setStyleSheet("QCheckBox {" + setStyleBase + "}") | |
self.groupBox_03.setEnabled(True) | |
self.tabWidget.setTabEnabled(1, True) | |
self.tabWidget.setTabEnabled(2, True) | |
self.tabWidget.setTabEnabled(4, True) | |
self.S_Begin_Angle.setEnabled(True) | |
self.S_End_Angle.setEnabled(True) | |
self.DS_Correction_Angle.setEnabled(True) | |
self.DS_Correction_Radius.setEnabled(True) | |
self.DS_Radius_Circle.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
self.label_10.setStyleSheet("QLabel {" + setStyleBase + "}") | |
self.DS_Size_Character.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
self.label_4.setStyleSheet("QLabel {" + setStyleBase + "}") | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
self.CH_Extrude.setStyleSheet("QCheckBox {" + setStyleBase + "}") | |
self.on_PU_Reset() | |
def on_PU_Reset(self): # | |
global ui | |
global points | |
global coor_X | |
global coor_Y | |
global coor_Z | |
global vec | |
global PolicePath | |
global rayon | |
global texte | |
global debut | |
global rotation | |
global SizeCaractere | |
global precision | |
global correctionAngle | |
global correctionRayon | |
global debout | |
global exterieur | |
global baseHelix | |
global endHelix | |
global pasHelix | |
global nombreCarParTour | |
global PlacementX | |
global PlacementY | |
global PlacementZ | |
global inclinaisonX | |
global inclinaisonY | |
global inclinaisonZ | |
global cercleClock | |
global nombreFaces | |
global romain | |
global redressement | |
global comP | |
global nameL | |
global epaisseurExtrus | |
global epaisSupportClock | |
global compount1 | |
global setStyleBase | |
texte = "" | |
self.CB_Word.setChecked(False) | |
exterieur = 1 | |
self.RA_Choice_Outdoor.setText(_fromUtf8("Outdoor")) | |
self.RA_Choice_Indoor.setText(_fromUtf8("Indoor")) | |
self.RA_Choice_Outdoor.setChecked(True) | |
pic = QtGui.QPixmap() | |
pic.loadFromData(base64.b64decode(outDoor_Icon_b64)) # bmp converti | |
self.scene = QtWidgets.QGraphicsScene() | |
self.scene.addPixmap(QtGui.QPixmap(pic)) | |
self.graphicsView.setScene(self.scene) | |
self.tabWidget.setCurrentIndex(0) | |
debout = 1 | |
self.PU_Flat.setText(_fromUtf8("Mode Stand")) | |
self.PU_Flat.setToolTip(_fromUtf8("Click for create the text Flat")) | |
self.PU_Flat.setEnabled(True) | |
self.PU_Flat.setIcon(QtGui.QIcon(QtGui.QPixmap(standIcon))) # icone dans une variable | |
SizeCaractere = 2.0 | |
self.DS_Size_Character.setValue(SizeCaractere) | |
self.DS_Size_Character.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
rayon = 10.0 | |
self.DS_Radius_Circle.setValue(rayon) | |
self.DS_Radius_Circle.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
self.label_10.setStyleSheet("QLabel {" + setStyleBase + "}") | |
debut = 0 | |
self.S_Begin_Angle.setValue(debut) | |
self.S_Begin_Angle.setEnabled(True) | |
rotation = 360 | |
self.S_End_Angle.setValue(rotation) | |
self.S_End_Angle.setEnabled(True) | |
correctionAngle = 0.0 | |
self.DS_Correction_Angle.setValue(correctionAngle) | |
self.DS_Correction_Radius.setEnabled(True) | |
correctionRayon = 0.0 #0.15 | |
self.DS_Correction_Radius.setValue(correctionRayon) | |
self.DS_Correction_Angle.setEnabled(True) | |
epaisseurExtrus = 0.0 | |
self.DS_Extrude.setValue(epaisseurExtrus) | |
self.DS_Extrude.setEnabled(False) | |
self.DS_Extrude.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
self.CH_Extrude.setChecked(False) | |
self.CH_Extrude.setStyleSheet("QCheckBox {" + setStyleBase + "}") | |
self.label_4.setStyleSheet("QLabel {" + setStyleBase + "}") | |
ui.on_PU_Reset_Placement() | |
ui.on_PU_Reset_Inclination() | |
self.CB_06_ModeFree.setChecked(False) | |
baseHelix = 0.0 | |
self.DS_Base_Helix.setValue(baseHelix) | |
self.DS_Base_Helix.setEnabled(False) | |
endHelix = 0.0 | |
self.DS_End_Helix.setValue(endHelix) | |
self.DS_Base_Helix.setEnabled(False) | |
pasHelix = 2.0 | |
self.DS_Step_Of_The_Helix.setValue(pasHelix) | |
nombreCarParTour = 10 | |
self.DS_Number_Char_Per_Turn.setValue(nombreCarParTour) | |
nombreFaces = 0 | |
self.DS_Number_Faces_Support.setValue(nombreFaces) | |
self.label_5.setText(_fromUtf8("Support number face")) | |
cercleClock = rayon | |
self.DS_Radius_Support.setValue(cercleClock) | |
self.DS_Radius_Support.setEnabled(False) | |
epaisSupportClock = 0.0 | |
self.DS_Extrude_Support.setEnabled(False) | |
self.DS_Extrude_Support.setValue(epaisSupportClock) | |
self.DS_Extrude_Support.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
romain = 0 | |
self.CB_RomanOrArabic.setIcon(QtGui.QIcon(QtGui.QPixmap(arabicIcon))) # icone dans une variable | |
self.CB_RomanOrArabic.setText(_fromUtf8("Mode Arabic")) | |
self.CB_RomanOrArabic.setChecked(False) | |
redressement = 0 | |
self.CB_RedressChiffres.setText(_fromUtf8("Axial")) | |
self.CB_RedressChiffres.setIcon(QtGui.QIcon(QtGui.QPixmap(axialIcon))) # icone dans une variable | |
self.CB_RedressChiffres.setToolTip(_fromUtf8("Check for activate the mode Redress")) | |
self.CB_RedressChiffres.setChecked(False) | |
compount1 = 0 | |
ui.on_CB_Word() # texte = self.textEdit.toPlainText() | |
def on_PU_Benchmarks(self): # Benchmarks | |
try: | |
global compount1 | |
global ui | |
compount1 = 1 | |
ui.on_PU_Execute() | |
except: | |
sayexc("Error") | |
def on_PU_Execute(self): # Execute | |
global ui | |
global PolicePath | |
global switchResetFALSE | |
global points | |
global coor_X | |
global coor_Y | |
global coor_Z | |
global PlacementX | |
global PlacementY | |
global PlacementZ | |
global inclinaisonX | |
global inclinaisonY | |
global inclinaisonZ | |
global vec | |
global rayon | |
global texte | |
global debut | |
global rotation | |
global SizeCaractere | |
global ii | |
global precision | |
global correctionAngle | |
global correctionRayon | |
global debout | |
global exterieur | |
global baseHelix | |
global endHelix | |
global pasHelix | |
global nombreCarParTour | |
global cercleClock | |
global nombreFaces | |
global romain | |
global redressement | |
global comP | |
global nameL | |
global epaisseurExtrus | |
global epaisSupportClock | |
global compount1 | |
#### for delete | |
global FcString | |
global FcStringPoints | |
global circleGuide | |
global helixGuide | |
global suppExtrude | |
global createCompound | |
global selComplete | |
#### for delete | |
points = [] | |
comP = [] | |
nameL = [] | |
del points[:] | |
del comP[:] | |
del nameL[:] | |
doc = FreeCAD.ActiveDocument | |
if doc == None: | |
doc = FreeCAD.newDocument("FCCircularText") | |
#### Path | |
# create text on wire, arc, circle edge... | |
# | |
try: | |
ssel = FreeCADGui.Selection.getSelectionEx() | |
selectedEdge = lineSelected = FreeCADGui.Selection.getSelectionEx()[0].SubObjects[0] # select one element | |
selComplete = Gui.Selection.getCompleteSelection() | |
except Exception: | |
selectedEdge = None | |
ssel = "" | |
Gui.Selection.clearSelection() | |
None | |
passNoOk = 0 | |
if (hasattr(selectedEdge,'Surface')) or (hasattr(selectedEdge,'Point')): | |
passNoOk = 1 | |
if (len(ssel) != 0) and (passNoOk == 0): # Path | |
textLabel = texte[0:10] | |
if self.CB_Word.isChecked(): | |
textLabel = textLabel[0] | |
else: | |
textLabel = textLabel[0:10] | |
FreeCAD.ActiveDocument.openTransaction("FCCTp") | |
FcString = doc.addObject("App::DocumentObjectGroup","FcStringP_" + textLabel) | |
if self.CB_01_Points.isChecked(): | |
FcStringPoints = doc.addObject("App::DocumentObjectGroup","FcStringPoints_" + textLabel) | |
try: | |
numberOfPoints = len(texte) # Decomposition number (or precision you can change) | |
points = selectedEdge.discretize(numberOfPoints) # discretize the element | |
pasTab = 0 | |
for position in range(len(texte)): # list and display the coordinates | |
if texte[position] != " ": | |
ss=Draft.makeShapeString(String=texte[position],FontFile=PolicePath,Size=SizeCaractere,Tracking=0) | |
XLongueur = ss.Shape.BoundBox.XLength # Length x boundBox rectangle | |
YLongueur = ss.Shape.BoundBox.YLength # Length y boundBox rectangle | |
ZLongueur = ss.Shape.BoundBox.ZLength # Length z boundBox rectangle | |
XXLongueur = 0.0 | |
YYLongueur = 0.0 | |
ZZLongueur = 0.0 | |
if self.RB_Position_01.isChecked(): | |
None | |
elif self.RB_Position_02.isChecked(): | |
XXLongueur = -XLongueur/2.0; YYLongueur = -YLongueur/2.0; #ZZLongueur = -ZLongueur/2.0 | |
elif self.RB_Position_03.isChecked(): | |
XXLongueur = 0; YYLongueur = -YLongueur; #ZZLongueur = -ZLongueur | |
pl = FreeCAD.Placement() # placement object | |
if self.RB_Path_01.isChecked(): | |
# pl.Base=FreeCAD.Vector(points[position][0] - (XXLongueur), points[position][1] - (YYLongueur), points[position][2]) | |
pl.Base=FreeCAD.Vector(points[position][0] + (XXLongueur), points[position][1] + (YYLongueur), points[position][2]) | |
pl.Rotation = App.Rotation(inclinaisonX, inclinaisonY, inclinaisonZ) | |
pl = pl.multiply(App.Placement(App.Vector(PlacementX, PlacementY, PlacementZ), App.Rotation(0.0,0.0,0.0), App.Vector(0.0,0.0,0.0))) | |
else: | |
##Extract macro_Perpendicular_To_Wire | |
if pasTab == 0: | |
pointsDirection = [] | |
pointsDirection = lineSelected.discretize(Number = ((len(texte)-1) * 10)) # discretize the path line first selection | |
pasTab = 1 | |
try: | |
v=pointsDirection[position*10].sub(pointsDirection[(position*10) + 1]) # avec vecteurs 1 et 2 (direction debut ligne) | |
except Exception: | |
v=pointsDirection[-2].sub(pointsDirection[-1]) # avec vecteurs 1 et 2 (direction debut ligne) | |
r=App.Rotation(App.Vector(-1,0,0),v) | |
pl.Rotation.Q = r.Q | |
pl = pl.multiply(App.Placement(App.Vector(0.0,0.0,0.0), App.Rotation(inclinaisonX, inclinaisonY, inclinaisonZ), App.Vector(0.0,0.0,0.0))) | |
try: | |
pl.Base = pointsDirection[position*10] | |
except Exception: | |
pl.Base = pointsDirection[-1] | |
pl = pl.multiply(App.Placement(App.Vector(XXLongueur + PlacementX, YYLongueur + PlacementY, ZZLongueur + PlacementZ), App.Rotation(correctionAngle, 0.0,0.0), App.Vector(0.0,0.0,0.0))) | |
#### | |
if self.CB_03_BBox.isChecked(): | |
ss.ViewObject.BoundingBox = True | |
#### | |
ssLabel = texte[position] | |
ss.Label = ssLabel | |
try: | |
if texte[position + 1] == " ": | |
ss.Label = ssLabel + "+[space]" | |
except Exception: | |
None | |
FcString.addObject(ss) # contener character | |
# FcString = doc.addObject("App::DocumentObjectGroup","FcString") | |
#### | |
if epaisseurExtrus != 0: # extrusion characrters | |
CharExtrude = Draft.extrude(ss,Base.Vector(0.0,0.0,epaisseurExtrus)) | |
CharExtrude.Placement=pl | |
CharExtrude.Label = ssLabel #texte[position] | |
App.ActiveDocument.getObject(CharExtrude.Name).recompute() | |
try: | |
CharExtrude.ViewObject.DisplayMode = u"Flat Lines" | |
except Exception: | |
None | |
#### | |
if self.CB_03_BBox.isChecked(): | |
CharExtrude.ViewObject.BoundingBox = True | |
#### | |
comP.append(CharExtrude.Shape) | |
# nameL.append(CharExtrude.Name) | |
FcString.addObject(CharExtrude) # contener extrude | |
else: | |
ss.Placement = pl | |
#ss.Support=None | |
try: | |
ss.ViewObject.DisplayMode = u"Flat Lines" | |
except Exception: | |
None | |
comP.append(ss.Shape) | |
# nameL.append(ss.Name) | |
#### | |
if self.CB_01_Points.isChecked(): | |
pointRepere = Draft.makePoint(pl.Base) | |
pointRepere.ViewObject.PointColor = (1.0,0.0,0.0) | |
pointRepere.Label = ssLabel #texte[position] | |
App.ActiveDocument.getObject(pointRepere.Name).recompute() | |
FcStringPoints.addObject(pointRepere) | |
#### | |
if self.CB_04_Progression.isChecked(): | |
FreeCADGui.updateGui() # rafraichi l'ecran | |
#### | |
except Exception: | |
App.Console.PrintError(str("Discretize Error or selection error")+"\n") | |
FreeCAD.ActiveDocument.commitTransaction() | |
#### Path fin | |
# | |
#### Circular begin | |
else: | |
FreeCAD.ActiveDocument.openTransaction("FCCTc") | |
if ((exterieur == 0) and (debout == 0)): # normal circular | |
vecligne=[FreeCAD.Vector(PlacementX,PlacementY,PlacementZ),FreeCAD.Vector(rayon + correctionRayon,0.0,0.0)] # | |
else: | |
if exterieur == 3: | |
vecligne=[FreeCAD.Vector(PlacementX,PlacementY,PlacementZ),FreeCAD.Vector(rayon - (SizeCaractere/2),0.0,0.0)] # | |
elif debout == 0: | |
vecligne=[FreeCAD.Vector(PlacementX,PlacementY,PlacementZ),FreeCAD.Vector(rayon + correctionRayon - SizeCaractere,0.0,0.0)] # | |
else: | |
vecligne=[FreeCAD.Vector(PlacementX,PlacementY,PlacementZ),FreeCAD.Vector(rayon + correctionRayon,0.0,0.0)] # | |
ligne = Draft.makeWire(vecligne,closed=False,face=False,support=None) # creation de la ligne de base | |
lineName = ligne.Name | |
FreeCAD.activeDocument().recompute(None,True,True) | |
ii = -1 | |
ii2 = -1 | |
#nombre = len(texte) - 1 # moins - 1 pour aller de 0 degres a 0 degres dans la boucle pour compatible avec Path | |
nombre = len(texte) # si pas - 1 ex: pour 36 lettres va de 0 degres a 350 degres | |
coor_Z = PlacementZ | |
boucler = 1 | |
helixSpline = [] | |
texteLabel = texte[0:10] | |
if (exterieur == 0) or (debout == 0): | |
texte = texte[::-1] | |
if (exterieur == 0) and (debout == 0): | |
texte = texte[::-1] | |
if exterieur == 2: # helix | |
if nombreCarParTour == 0: | |
nombreCarParTour = 1 | |
App.Console.PrintError("Insufficient number"+"\n") | |
pas = 0.0 | |
nombre = nombreCarParTour | |
if pasHelix != 0: | |
pas = pasHelix / (nombreCarParTour) | |
else: | |
pas = ((((endHelix - SizeCaractere)-baseHelix)/(len(texte) / nombreCarParTour))/(nombreCarParTour)) # pas of helix | |
coor_Z += baseHelix | |
boucler = int(len(texte) / nombreCarParTour) | |
if (len(texte) % nombreCarParTour) != 0: # calcul number spires Helix | |
boucler += 1 | |
else: | |
nombreCarParTour = 1 | |
if exterieur == 3: # Clock | |
FcString = doc.addObject("App::DocumentObjectGroup","FcClock") | |
if self.CB_01_Points.isChecked(): | |
FcStringPoints = doc.addObject("App::DocumentObjectGroup","FcStringPoints_Clock") | |
nombre = 12 | |
if romain == 0: | |
texte = ["1","2","3","4","5","6","7","8","9","10","11","12"] | |
textLabel = "Arabic" | |
else: | |
texte = ["I","II","III","IIII","V","VI","VII","VIII","IX","X","XI","XII"] | |
textLabel = "Roman" | |
texte = texte[::-1] | |
else: | |
textLabel = texte[0:10] | |
#print(textLabel) | |
if self.CB_Word.isChecked(): | |
textLabel = texteLabel[0] | |
else: | |
textLabel = texteLabel[0:10] | |
FcString = doc.addObject("App::DocumentObjectGroup","FcString_" + textLabel) | |
if self.CB_01_Points.isChecked(): | |
FcStringPoints = doc.addObject("App::DocumentObjectGroup","FcStringPoints_" + textLabel) | |
# if exterieur == 2: # helix | |
# boucler = int(len(texte) / nombreCarParTour) | |
# if (len(texte) % nombreCarParTour) != 0: # calcul number spires Helix | |
# boucler += 1 | |
####Boucle principale############################################################################ | |
for hel in range(boucler): | |
ii = -1 | |
####Boucle de travail################################################# | |
#for angleTr in range(debut,rotation,((rotation-debut)/nombre)): # old | |
for angleTrFloat in range((debut*10000),(rotation*10000),int((round(((float(rotation)-float(debut))/float(nombre)),4)*10000)) ): # 10000 pour 4 decimales | |
angleTr = (float(angleTrFloat)/10000.0) | |
ii += 1 | |
ii2 += 1 | |
ligne.Placement = App.Placement(App.Vector(PlacementX,PlacementY,PlacementZ), App.Rotation(App.Vector(0.0,0.0,1.0),angleTr), App.Vector(0.0,0.0,0.0)) | |
ligne.ViewObject.LineColor = (1.0,0.,0.0) | |
lineName = ligne.Name | |
FreeCAD.activeDocument().recompute(None,True,True) | |
#print(ii+1," ",angleTr) | |
a = ligne.End # fin de ligne | |
coor_X = (a[0]) | |
coor_Y = (a[1]) | |
if (ii < nombre) and (ii2 < len(texte)): | |
if exterieur == 3: # clock | |
ligne.Placement = App.Placement(App.Vector(PlacementX,PlacementY,PlacementZ), App.Rotation(App.Vector(0.0,0.0,1.0),angleTr+90), App.Vector(0.0,0.0,0.0)) | |
FreeCAD.activeDocument().recompute(None,True,True) | |
try: | |
a = ligne.Shape.Edges[0].Vertexes[1] # fin de ligne | |
except Exception: | |
a = ligne.End # 0.19 fin de ligne | |
try: | |
coor_X = (a.Point.x) | |
coor_Y = (a.Point.y) | |
except Exception: | |
coor_X = (a.x) # 0.19 fin de ligne | |
coor_Y = (a.y) | |
if texte[ii2] != " ": | |
ss = Draft.makeShapeString(String=texte[ii2],FontFile=PolicePath,Size=SizeCaractere,Tracking=0) | |
ssLabel = texte[ii2] | |
ss.Label = ssLabel | |
FcString.addObject(ss) # contener character | |
try: | |
if texte[ii2 + 1] == " ": | |
ss.Label = ssLabel = ss.Label + "+[space]" | |
except Exception: | |
None | |
centreX = (ss.Shape.BoundBox.Center[0]) | |
centreY = (ss.Shape.BoundBox.Center[1]) | |
centreZ = (ss.Shape.BoundBox.Center[2]) | |
lengthX = (ss.Shape.BoundBox.XLength) | |
lengthY = (ss.Shape.BoundBox.YLength) | |
lengthZ = (ss.Shape.BoundBox.ZLength) | |
plm="" | |
plm=FreeCAD.Placement() | |
plm.Base=FreeCAD.Vector(coor_X, coor_Y, coor_Z) | |
FreeCAD.activeDocument().recompute(None,True,True) | |
if self.CB_06_ModeFree.isChecked(): | |
plm = App.Placement(App.Vector(coor_X, coor_Y, coor_Z), App.Rotation(angleTr+inclinaisonX+correctionAngle, inclinaisonY, inclinaisonZ), App.Vector(0.0, 0.0, 0.0)) # pitch,roll...1 | |
FreeCAD.activeDocument().recompute(None,True,True) | |
else: | |
if debout == 1: # debout | |
if exterieur == 0: # circumferential internal | |
plm = App.Placement(App.Vector(coor_X,coor_Y,coor_Z), App.Rotation(angleTr-90-correctionAngle+inclinaisonX,inclinaisonY,90+inclinaisonZ), App.Vector(0.0,0.0,0.0)) # pitch,roll...1 | |
elif exterieur == 1: # circumferential external | |
plm = App.Placement(App.Vector(coor_X,coor_Y,coor_Z), App.Rotation(angleTr+90+correctionAngle+inclinaisonX,inclinaisonY,90+inclinaisonZ), App.Vector(0.0,0.0,0.0)) # pitch,roll...1 | |
elif exterieur == 2: # circumferential helix | |
plm = App.Placement(App.Vector(coor_X,coor_Y,coor_Z), App.Rotation(angleTr+90+correctionAngle+inclinaisonX,inclinaisonY,90+inclinaisonZ), App.Vector(0.0,0.0,0.0)) # pitch,roll...1 | |
coor_Z = coor_Z + pas | |
else: # a plat | |
if exterieur == 1: # exterieur (superieur) | |
plm = App.Placement(App.Vector(coor_X,coor_Y,coor_Z), App.Rotation(angleTr-90-correctionAngle+inclinaisonX,inclinaisonY,inclinaisonZ), App.Vector(0.0,0.0,0.0)) # pitch,roll...1 | |
elif exterieur == 3: # circumferential plat (clock) | |
if redressement == 1: | |
plm = App.Placement(App.Vector(coor_X-centreX,coor_Y-centreY,coor_Z), App.Rotation(inclinaisonX,inclinaisonY,inclinaisonZ), App.Vector(0.0,0.0,0.0)) # pitch,roll...1 | |
else: | |
plm = App.Placement(App.Vector(coor_X-centreX,coor_Y-centreY,coor_Z), App.Rotation(angleTr+inclinaisonX,inclinaisonY,inclinaisonZ), App.Vector(centreX,centreY,centreZ)) # pitch,roll...1 | |
else: # interieur (inferieur) | |
plm = App.Placement(App.Vector(-coor_X,-coor_Y,-coor_Z), App.Rotation(angleTr+90+correctionAngle+inclinaisonX,180+inclinaisonY,180+inclinaisonZ), App.Vector(0.0,0.0,0.0)) # pitch,roll...1 | |
FreeCAD.activeDocument().recompute(None,True,True) | |
####################################################### | |
#### plm = plm.multiply(App.Placement(App.Vector(0.0, 0.0, 0.0), App.Rotation(App.Vector(0.0, 0.0, 1.0), 0.0), App.Vector(0.0, 0.0, 0.0))) | |
####################################################### | |
#### ___________________Test_Memo | |
#### normal outdoor stand | |
#### Placement [Pos=(10,0,0), Yaw-Pitch-Roll=(90,0,90)] | |
#### _____ | |
#### plus 90 degres "X" Yaw (macro) *Psi* | |
#### Placement [Pos=(10,0,0), Yaw-Pitch-Roll=(180,0,90)] | |
#### plus 90 Z (FC) | |
#### App.getDocument("FCCircularText").ShapeString.Placement=App.Placement(App.Vector(10,0,0), App.Rotation(180,0,90), App.Vector(0,0,0)) | |
#### _____ | |
#### plus 90 degres "Y" Pitch (macro) *Phi* | |
#### Placement [Pos=(10,0,0), Yaw-Pitch-Roll=(0,90,0)] | |
#### plus 90 Y (FC) | |
#### App.getDocument("FCCircularText").ShapeString.Placement=App.Placement(App.Vector(10,0,0), App.Rotation(90,90,90), App.Vector(0,0,0)) | |
#### _____ | |
#### plus 90 degres "Z" Roll (macro) *Theta* | |
#### Placement [Pos=(10,0,0), Yaw-Pitch-Roll=(90,0,180)] | |
#### plus 90 X (FC) | |
#### App.getDocument("FCCircularText").ShapeString.Placement=App.Placement(App.Vector(10,0,0), App.Rotation(90,0,180), App.Vector(0,0,0)) | |
#### ____________________Test_Memo | |
###################################################### | |
if self.RA_Choice_Helix.isChecked(): | |
helixSpline.append(plm.Base) # helix | |
if epaisseurExtrus != 0: # extrusion characrters | |
CharExtrude = Draft.extrude(ss,Base.Vector(0,0,epaisseurExtrus)) | |
CharExtrude.Label = ssLabel # texte[ii2] | |
CharExtrude.Placement=plm | |
try: | |
CharExtrude.ViewObject.DisplayMode = u"Flat Lines" | |
except Exception: | |
None | |
if self.CB_03_BBox.isChecked(): | |
CharExtrude.ViewObject.BoundingBox = True | |
App.ActiveDocument.getObject(CharExtrude.Name).recompute() | |
comP.append(CharExtrude.Shape) | |
# nameL.append(CharExtrude.Name) | |
FcString.addObject(CharExtrude) # contener extrude | |
else: # | |
ss.Placement=plm | |
#ss.Support=None | |
try: | |
ss.ViewObject.DisplayMode = u"Flat Lines" | |
except Exception: | |
None | |
if self.CB_03_BBox.isChecked(): | |
ss.ViewObject.BoundingBox = True | |
comP.append(ss.Shape) | |
# nameL.append(ss.Name) | |
# points += [FreeCAD.Vector(coor_X,coor_Y,coor_Z)] # coordinates makeBSpline | |
#### | |
if self.CB_01_Points.isChecked(): | |
pointRepere = Draft.makePoint(plm.Base) | |
pointRepere.ViewObject.PointColor = (1.0,0.,0.0) | |
pointRepere.Label = ssLabel #texte[ii2] | |
App.ActiveDocument.getObject(pointRepere.Name).recompute() | |
FcStringPoints.addObject(pointRepere) | |
#### | |
if self.CB_04_Progression.isChecked(): | |
FreeCADGui.updateGui() # rafraichi l'ecran | |
#### | |
FreeCAD.ActiveDocument.commitTransaction() | |
#BSpline = Draft.makeBSpline(points,closed=False) # makeBSpline repere | |
App.ActiveDocument.removeObject(lineName) # remove ligne de base directrice | |
FreeCAD.ActiveDocument.openTransaction("FCCTc") | |
if (self.CB_02_Circle.isChecked()) and (passNoOk == 0): # create Circle | |
pll = FreeCAD.Placement() | |
pll = App.Placement(App.Vector(PlacementX,PlacementY,PlacementZ), App.Rotation(App.Vector(0,0,1),0), App.Vector(0,0,0)) | |
circleGuide = Draft.makeCircle(radius=rayon, placement=pll, face=False, support=None) | |
FreeCAD.activeDocument().recompute(None,True,True) | |
circleGuide.Label = "circleRepere_" + textLabel | |
circleGuide.ViewObject.LineColor = (1.0,0.0,0.0) | |
Draft.autogroup(circleGuide) | |
if self.RA_Choice_Helix.isChecked(): # helix | |
helixGuide = Draft.makeBSpline(helixSpline, closed=False, face=False, support=None) | |
FreeCAD.activeDocument().recompute(None,True,True) | |
helixGuide.Label = "helixRepere_" + textLabel | |
helixGuide.ViewObject.LineColor = (1.0,0.0,0.0) | |
Draft.autogroup(helixGuide) | |
if compount1 == 1: # create compount | |
comp = Part.makeCompound(comP) | |
Part.show(comp) | |
createCompound = App.ActiveDocument.ActiveObject | |
createCompound.Label = "Comp_" + textLabel | |
####Boucle de travail fin######################################################################## | |
####Extrude support clock############################################# | |
if nombreFaces > 0: # support clock | |
pl = FreeCAD.Placement() | |
if nombreFaces == 1: # circle | |
pl.Base = FreeCAD.Vector(0.0,0.0,0.0) | |
supp = Draft.makeCircle(cercleClock,placement=pl,face=True,support=None) | |
if nombreFaces == 2: # rectangle | |
cercleClock = cercleClock * 2 | |
pl.Base = FreeCAD.Vector(-cercleClock, (-cercleClock / 2.0), 0.0) | |
supp = Draft.makeRectangle((cercleClock * 2.0), cercleClock, placement=pl, face = True) | |
if nombreFaces > 2: # polygone with number faces | |
if nombreFaces == 4: | |
rotateSupport = 45 | |
else: | |
rotateSupport = 90 | |
pl = App.Placement(App.Vector(0.0,0.0,0.0), App.Rotation(rotateSupport,0,0), App.Vector(0,0,0)) | |
supp = Draft.makePolygon(nombreFaces,cercleClock,inscribed = False,placement = pl,face = True,support=None) | |
supp.MakeFace = True | |
FreeCAD.activeDocument().recompute(None,True,True) | |
FcString.addObject(supp) # contener support | |
if epaisSupportClock != 0: # extrude support clock | |
suppExtrude = Draft.extrude(supp,Base.Vector(0,0,epaisSupportClock)) | |
App.ActiveDocument.getObject(suppExtrude.Name).recompute() | |
# try: | |
suppExtrude.ViewObject.DisplayMode = u"Flat Lines" | |
if self.CB_03_BBox.isChecked(): | |
suppExtrude.ViewObject.BoundingBox = True | |
# except Exception: | |
# None | |
FcString.addObject(suppExtrude) # contener support extrude | |
if ui.RA_Choice_Helix.isChecked(): | |
ui.tabWidget.setCurrentIndex(1) | |
ui.Image_RA_Choice_Helix() | |
elif ui.RA_Choice_Clock.isChecked(): | |
ui.tabWidget.setCurrentIndex(2) | |
ui.Image_RA_Choice_Clock() | |
# deselectionner tous les objets | |
try: | |
for obj in FreeCAD.ActiveDocument.Objects:# deselectionne tout | |
FreeCADGui.Selection.removeSelection(obj) | |
except Exception: | |
None | |
App.activeDocument().recompute() | |
FreeCAD.ActiveDocument.commitTransaction() | |
#### Circular end | |
####Info################################################ | |
App.Console.PrintMessage("______________" +"\n") | |
App.Console.PrintMessage( PolicePath + "\n") | |
App.Console.PrintMessage("Texte : " + str(texte) + "\n") | |
App.Console.PrintMessage("Rayon : " + str(rayon) + "\n") | |
App.Console.PrintMessage("SizeCaractere : " + str(SizeCaractere) + "\n") | |
App.Console.PrintMessage("Rotation : " + str(debut) + "/" + str(rotation) + "\n") | |
App.Console.PrintMessage("Debout : " + str(debout) + "\n") | |
App.Console.PrintMessage("Placement : " + str(PlacementX) + ", " + str(PlacementY) + ", " + str(PlacementZ) + "\n") | |
App.Console.PrintMessage("Rotation : " + str(inclinaisonX) + ", " + str(inclinaisonY) + ", " + str(inclinaisonZ) + "\n") | |
App.Console.PrintMessage("_______________" +"\n") | |
####Reset################################################ | |
if switchResetFALSE == 0: # zero (False) by default = reset | |
ui.on_PU_Reset() | |
def on_PB_Help_clicked(self): | |
try: | |
webbrowser.open(__Wiki__) | |
App.Console.PrintMessage("https://wiki.freecadweb.org/Macro_FCCircularText" + "\n") | |
except Exception: | |
App.Console.PrintMessage(u"Not access") | |
def on_PU_Exit(self): # Exit | |
global ui | |
global s | |
global switchResetFALSE | |
global setFontByDefault | |
global switchModeTextList | |
global switchFontComBox | |
global setSystemFonts | |
global seTtextAlignement | |
global switchVersionSearch | |
global setMainWindowMoveX | |
global setMainWindowMoveY | |
global setFrameWindowSizeX | |
global setFrameWindowSizeY | |
FreeCADGui.Selection.removeObserver(s) # desinstalle la fonction residente | |
###### Write Configuration begin #### | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetBool("switchResetFALSE", switchResetFALSE) # True or False (False by default) | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetString("setFontByDefault", setFontByDefault) # "Arial" | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetBool("switchModeTextList", switchModeTextList) # True or False | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetBool("switchFontComBox", switchFontComBox) # True or False | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetBool("setSystemFonts", setSystemFonts) # True or False | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetInt("seTtextAlignement", seTtextAlignement) # 0, 1, 2 | |
#### geometry | |
positionWindowXY = MainWindow.geometry() | |
setMainWindowMoveX = positionWindowXY.x() | |
setMainWindowMoveY = positionWindowXY.y() | |
positionWindowXY = MainWindow.size() | |
setFrameWindowSizeX = positionWindowXY.width() | |
setFrameWindowSizeY = positionWindowXY.height() | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetInt("setMainWindowMoveX", setMainWindowMoveX) # setMainWindowMoveX | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetInt("setMainWindowMoveY", setMainWindowMoveY) # setMainWindowMoveY | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetInt("setFrameWindowSizeX", setFrameWindowSizeX) # setFrameWindowSizeX | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetInt("setFrameWindowSizeY", setFrameWindowSizeY) # setFrameWindowSizeY | |
#### geometry | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetBool("setPathOrthogonal", ui.RB_Path_01.isChecked()) # True or False | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetBool("setPathTangent", ui.RB_Path_02.isChecked()) # True or False | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetBool("setPositionBase", ui.RB_Position_01.isChecked()) # True or False | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetBool("setPositionCenter", ui.RB_Position_02.isChecked())# True or False | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetBool("setPositionTop", ui.RB_Position_03.isChecked()) # True or False | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetBool("switchVersionSearch", switchVersionSearch) # True or False | |
###### Write Configuration end #### | |
App.Console.PrintMessage("Fin FCCircularText"+"\n") | |
self.window.hide() | |
#### | |
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).SetString("Version",__Version__ + " (" + __Date__ + ")")# | |
##StyleSheet = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/MainWindow").GetString("StyleSheet") | |
####### Read Configuration begin #### | |
#seTtextAlignement = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetInt("seTtextAlignement") | |
#setSystemFonts = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("setSystemFonts") | |
#switchFontComBox = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("switchFontComBox") | |
#switchModeTextList = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("switchModeTextList") | |
#setFontByDefault = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetString("setFontByDefault") | |
#switchResetFALSE = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("switchResetFALSE") | |
## switchResetFALSE: desactive cree des erreurs de fonctionnement attention a l utilisation !! | |
#setMainWindowMoveX = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetInt("setMainWindowMoveX") | |
#setMainWindowMoveY = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetInt("setMainWindowMoveY") | |
#setFrameWindowSizeX= FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetInt("setFrameWindowSizeX") | |
#setFrameWindowSizeY= FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetInt("setFrameWindowSizeY") | |
# | |
#setPathOrthogonal = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("setPathOrthogonal") | |
#setPathTangent = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("setPathTangent") | |
#setPositionBase = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("setPositionBase") | |
#setPositionCenter = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("setPositionCenter") | |
#setPositionTop = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__).GetBool("setPositionTop") | |
# | |
#if setFontByDefault == "": | |
# if platform.system() == "Windows" : | |
# PolicePath = originalFontPath = "C:/Windows/Fonts/" | |
# setFontByDefault = originalFontName = "ARIAL" | |
# elif platform.system() == "Linux" : | |
# PolicePath = originalFontPath = "/usr/share/fonts/" | |
# setFontByDefault = originalFontName = "UBUNTU-M" | |
# elif platform.system() == "Darwin": | |
# PolicePath = originalFontPath = "/Library/Fonts/" | |
# setFontByDefault = originalFontName = "Arial" | |
#if platform.system() == "Linux" : | |
# PolicePath = originalFontPath = "/usr/share/fonts/" | |
####### Read Configuration end #### | |
################################################################################################## | |
class SelObserver: | |
def addSelection(self, document, object, element, position): # Selection | |
global ui | |
global PlacementX | |
global PlacementY | |
global PlacementZ | |
global correctionAngle | |
global setStylePathR # #F8E0E0 | |
global setStylePathG # #E0F8E0 | |
global setStyleBase | |
if ui.CB_06_ModeFree.isChecked(): | |
None | |
else: | |
try: | |
selectedEdge = FreeCADGui.Selection.getSelectionEx()[0].SubObjects[0] # select one subElement | |
if (hasattr(selectedEdge,'Surface')) or (hasattr(selectedEdge,'Point')): | |
if (hasattr(selectedEdge,'Point')): | |
PlacementX = position[0] | |
PlacementY = position[1] | |
PlacementZ = position[2] | |
ui.CH_Sp_Placement.setChecked(True) | |
ui.DS_PlacementX.setValue(PlacementX) | |
ui.DS_PlacementY.setValue(PlacementY) | |
ui.DS_PlacementZ.setValue(PlacementZ) | |
ui.on_CH_Sp_Placement() | |
elif (hasattr(selectedEdge,'Surface')): | |
None # later | |
else: | |
ui.tabWidget.setTabEnabled(3, True) | |
ui.tabWidget.setCurrentIndex(3) | |
ui.tabWidget.setStyleSheet("QTabWidget {" + setStylePathG + "}") | |
pathLength = "Path ( " + str(round(selectedEdge.Length, 2)) + " mm )" | |
ui.tabWidget.setTabText(3, _fromUtf8(pathLength)) | |
ui.tabWidget.setTabEnabled(1, False) | |
ui.tabWidget.setTabEnabled(2, False) | |
ui.groupBox_03.setEnabled(False) | |
ui.groupBox_03.setStyleSheet("QGroupBox {" + setStylePathR + "}") | |
ui.DS_Radius_Circle.setEnabled(False) | |
ui.DS_Radius_Circle.setStyleSheet("QDoubleSpinBox {" + setStylePathR + "}") | |
ui.S_Begin_Angle.setEnabled(False) | |
ui.S_Begin_Angle.setStyleSheet("QSpinBox {" + setStylePathR + "}") | |
ui.S_End_Angle.setEnabled(False) | |
ui.S_End_Angle.setStyleSheet("QSpinBox {" + setStylePathR + "}") | |
ui.DS_Correction_Radius.setEnabled(False) | |
ui.DS_Correction_Radius.setStyleSheet("QDoubleSpinBox {" + setStylePathR + "}") | |
ui.CB_02_Circle.setChecked(False) | |
ui.CB_02_Circle.setEnabled(False) | |
ui.CB_02_Circle.setStyleSheet("QCheckBox {" + setStylePathR + "}") | |
correctionAngle = 0.0 | |
ui.DS_Correction_Angle.setValue(correctionAngle) | |
ui.on_RB_Path_Image() | |
except Exception: | |
selectedEdge = None | |
ui.tabWidget.setTabEnabled(1, True) | |
ui.tabWidget.setTabEnabled(2, True) | |
None | |
## def setPreselection(self,doc,obj,sub): # preselection | |
## print "setPreselection" | |
## def removeSelection(self,doc,obj,sub): # Effacer l'objet selectionne | |
## print "removeSelection" | |
## def setSelection(self,doc): # Selection dans ComboView | |
## print "SelObserver quit macro" | |
def clearSelection(self,doc): # Si clic sur l'ecran, effacer la selection | |
global ui | |
if ui.CB_06_ModeFree.isChecked(): | |
None | |
else: | |
ui.tabWidget.setStyleSheet("QTabWidget {" + setStyleBase + "}") # tab | |
ui.tabWidget.setTabEnabled(3, False) # tab Path | |
ui.tabWidget.setTabEnabled(1, True) # tab | |
ui.tabWidget.setTabEnabled(2, True) # tab | |
ui.tabWidget.setTabText(3, _fromUtf8("Path")) | |
ui.groupBox_03.setEnabled(True) | |
ui.groupBox_03.setStyleSheet("QGroupBox {" + setStyleBase + "}") | |
if ui.CB_06_ModeFree.isChecked(): | |
None | |
else: | |
ui.DS_Radius_Circle.setEnabled(True) | |
ui.DS_Radius_Circle.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
ui.S_Begin_Angle.setEnabled(True) | |
ui.S_Begin_Angle.setStyleSheet("QSpinBox {" + setStyleBase + "}") | |
ui.S_End_Angle.setEnabled(True) | |
ui.S_End_Angle.setStyleSheet("QSpinBox {" + setStyleBase + "}") | |
ui.DS_Correction_Radius.setEnabled(True) | |
ui.DS_Correction_Radius.setStyleSheet("QDoubleSpinBox {" + setStyleBase + "}") | |
ui.CB_02_Circle.setEnabled(True) | |
ui.CB_02_Circle.setStyleSheet("QCheckBox {" + setStyleBase + "}") | |
if ui.RA_Choice_Outdoor.isChecked(): | |
ui.Image_RA_Choice_Outdoor() | |
elif ui.RA_Choice_Indoor.isChecked(): | |
ui.Image_RA_Choice_Indoor() | |
elif ui.RA_Choice_Helix.isChecked(): | |
ui.Image_RA_Choice_Helix() | |
elif ui.RA_Choice_Clock.isChecked(): | |
ui.Image_RA_Choice_Clock() | |
s=SelObserver() | |
FreeCADGui.Selection.addObserver(s) # installe la fonction en mode resident | |
################################################################################################### | |
# create new document | |
doc = FreeCAD.ActiveDocument | |
if doc == None: | |
doc = FreeCAD.newDocument("FCCircularText") | |
# deselectionner tous les objets | |
try: | |
for obj in FreeCAD.ActiveDocument.Objects: # deselectionne tout | |
FreeCADGui.Selection.removeSelection(obj) | |
except Exception: | |
None | |
MainWindow = QtWidgets.QMainWindow() | |
ui = Ui_MainWindow() | |
ui.setupUi(MainWindow) | |
MainWindow.show() |
Hi Mario, why did you comment out line 1455?
self.lineEdit_NameFile.returnPressed.connect(self.on_lineEdit_NameFile)
That is the only way, I found, to use user-installed fonts on Linux.
Is there a different/better method?
Thanks
Hi
Tanks for report this problem , i don't remember it is commented from the beginning (but good to know)
for testing please : comment the line 1455 (as origin)
and check by 0 the setSystemFonts variable line (1153) for obtain :
global setSystemFonts ; setSystemFonts = 0 # 0 = matplotlib.font_manager.findSystemFonts("C:/", "ttf")
# fait toutes les fontes (dans tous les dossiers et sous dossiers du DD) time !!
and tray
i wait you report thanks
mario
Hello Mario, setting setSystemFonts=0
(either in source file or in FreeCAD parameters) has no effect, no user-installed font are listed.
In Linux, user-installed fonts can be found in /home/$USER/.fonts
or /home/$USER/.local/share/fonts
, so you can add those folders to search paths in the macro code, but I think it could be better to leave line 1455 uncommented, at least on Linux, to allow the user to choose a custom folder, maybe I have a temporary font on /tmp... so just type /tmp[enter]
et voila I can use that font.
Thanks, bye
Hi
ok , other test i change line 198 by original macro without change the configuration :
PolicePath="C://" #cm.get("PolicePath","/usr/share/fonts/","C:/Windows/Fonts/ARIAL.TTF","/Library/Fonts/Arial.ttf")
and ths macro search +/- 30 minutes and give 940 fonts files in my DD and "(1/389) on "C:/Windows/Fonts/ "
Do you want to do a test ? please , tray with root path one slatch root/ and after two slatch root//
(maybe /home/ and /home// in Linux ??)
what your linux is ?
i have to work on the paths maybe the same as my other macro with button supplementary :
https://wiki.freecadweb.org/Macro_Fonts_Win10_PYMP
thanks for report
mario
Hi Mario, on Linux if you want to search the whole disk you need to use /
, so I tried /
(and //
because you suggested) on line 198 with no success, it always finds 466 system fonts.
Then I changed line 3680 to PolicePath = '/'
and it finds no fonts, using two slashes //
it runs for ~10sec and finds 1067 fonts (system and user fonts). If I set it to /home/droscy/
(with final slash) it finds only my user installed fonts.
Maybe also line 3674 should be edited the same way...
My system is Debian Linux 10.9 (buster).
Hi droscy
thanks , then if i replace the path by "//"
lines 3671 and 3680 without touch the line 198 all is good ?
ex lines 3671 and 3680 :
PolicePath = "//"
mario
Yes, exactly!
Sorry for the very very late answer.
Hi drosci
not problem for the time , many thanks for reply
I will put a QtWidgets.QFileDialog and not trust the automatism of matplotlib
je vais mettre un QtWidgets.QFileDialog et ne plus faire confiance a l'automatisme de matplotlib
your mind ?
mario
Can this macro be run from a script?
Hi
I have never thought about !
but:
for command in the FreeCAD Python console or appeal it in a macro
give a complete example script or command line desired
thanks
mario
This is an example using external workbench freecad.gears https://wiki.freecadweb.org/FCGear_Workbench
name = "GearA"
teeth= 25
gear = freecad.gears.commands.CreateInvoluteGear.create()
gear.teeth = teeth
text_to_use = name + " z" + str(teeth)
# desired command: make curved text using text_to_use and place it on the side of the gear :)
# If possible, I'd love text that's a different color than the gear so that it's readable when I export the gear as a "Flattened SVG."
# I want that because my laser cutter will turn filled, colored text into laser-etched/engraved text on the side of the gear!
Thanks!
Seth
Hi
Ok i see what i can do
I need to learn how to do a command line
thanks appreciate my little macro
mario
Fantastic macro, thanks for sharing it!
I have a feature request though: If the extrusion height is negative could you make the characters as (sub surface) pockets?
I would also like to bump the requests about manually adjusting start and end angles. It would be great to just specify the start and let the macro use 'standard' spacing for the font.
Hi @MrAndy42
Fantastic macro, thanks for sharing it!
many thanks
If the extrusion height is negative could you make the characters as (sub surface) pockets?
as this ? https://forum.freecadweb.org/viewtopic.php?p=513384#p513384 (addition in progress)
I would also like to bump the requests about manually adjusting start and end angles. It would be great to just specify the start and let the macro use 'standard' spacing for the font.
for the moment the principle of my macro work with angle by degrees : circle cut in x part = x degrees
here more explanation how it work https://forum.freecadweb.org/viewtopic.php?p=523393#p523393
i search for work with the boundBox and https://forum.freecadweb.org/viewtopic.php?p=421829#p421829
i need to study a method for ameliorate but ...
mario
Hi
@droscy
would you like to try the new version
I have added a button for free path and a back button for origin font
mario
Yes, great, many thanks. It works.
Now I can choose a custom folder easily and switch back to system font.
Hi
thanks for report i correct with suppress the FC 0.18 test
mario