Skip to content

Instantly share code, notes, and snippets.

@normandc
Last active August 29, 2015 14:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save normandc/e16edd908300e3a13901 to your computer and use it in GitHub Desktop.
Save normandc/e16edd908300e3a13901 to your computer and use it in GitHub Desktop.
This FreeCAD macro by mario52 writes a text, standing or flat, circumferential or helical in the manner of a Trajan Column and creates a clock with Arabic or Roman numerals.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
"""
***************************************************************************
* Copyright (c) 2014 2015 <mario52> *
* *
* This file is a supplement to the FreeCAD CAx development system. *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License (LGPL) *
* as published by the Free Software Foundation; either version 2 of *
* the License, or (at your option) any later version. *
* for detail see the LICENCE text file. *
* *
* This software is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this macro; if not, write to the Free Software *
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
* USA *
***************************************************************************
* 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
# ver 0.8 10/05/2015 /_ #
##################################################################################################
# OS: Ubuntu 14.04.1 LTS # OS: Ubuntu 14.04.2 LTS
# Platform: 32-bit # Word size of OS: 32-bit
# Version: 0.14.2935 (Git) # Word size of FreeCAD: 32-bit
# Branch: master # Version: 0.16.4928 (Git)
# Hash: eab159b6ee675012bf79de838c206a311e911d85 # Branch: master
# Python version: 2.7.6 # Hash: d8f63bcfd10301f3d1e141cced4370f0782238d0
# Qt version: 4.8.6 # Python version: 2.7.6
# Coin version: 4.0.0a # Qt version: 4.8.6
# SoQt version: 1.6.0a # Coin version: 4.0.0a
# OCC version: 6.7.0 # OCC version: 6.8.0.oce-0.17
##################################################################################################
# OS: Windows Vista # OS: Windows Vista
# Word size of OS: 32-bit # Word size of OS: 32-bit
# Word size of FreeCAD: 32-bit # Word size of FreeCAD: 32-bit
# Version: 0.15.4527 (Git) # Version: 0.15.4671 (Git)
# Branch: master # Branch: releases/FreeCAD-0-15
# Hash: 0da2e4c45a9a259c26abd54c2a35393e1c15696f # Hash: 244b3aef360841646cbfe80a1b225c8b39c8380c
# Python version: 2.7.8 # Python version: 2.7.8
# Qt version: 4.8.6 # Qt version: 4.8.6
# Coin version: 4.0.0a # Coin version: 4.0.0a
# OCC version: 6.7.1 # OCC version: 6.8.0.oce-0.17
##################################################################################################
__title__="FCCircularText"
__author__ = "Mario52"
__version__ = "00.80"
__date__ = "10/05/2015"
try:
import PyQt4
from PyQt4 import QtGui ,QtCore
from PyQt4.QtGui import *
from PyQt4.QtCore import *
except Exception:
import PySide
from PySide import QtGui ,QtCore
from PySide.QtGui import *
from PySide.QtCore 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
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 ;PolicePath = "C:/Windows/Fonts/ARIAL.TTF" # path font for Windows
#global PolicePath ;PolicePath = "/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-M.ttf" # path font for Linux
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 = 10.0
global correctionRayon ;correctionRayon = 0.15
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 roman or arabic
global redressement ;redressement = 0 # character V or circular
global comP ;comP = "" # contener
global nameL ;nameL = "" # contener
global epaisseur ;epaisseur = 0.0 # epaisseur extrusion chacacter
global epaisSupp ;epaisSupp = 0.0 # epaisseur extrusion support
global extrusion ;extrusion = 0.0 # epaisseur extrusion
global compount1 ;compount1 = 0 # cree un compose des carachteres
# pointColor
global red ;red = 1.0 # 1 = 255 [ color num x = (1/255)*x ]
global green ;green = 0.0 #
global blue ;blue = 0.0 #
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 setupUi(self, MainWindow):
self.window = MainWindow
path = FreeCAD.ConfigGet("AppHomePath")
#path = FreeCAD.ConfigGet("UserAppData")
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 epaisseur
global epaisSupp
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(370, 638)
MainWindow.setMaximumSize(QtCore.QSize(370, 638))
MainWindow.setMinimumSize(QtCore.QSize(370, 638))
self.centralWidget = QtGui.QWidget(MainWindow)
self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
self.groupBox_02 = QtGui.QGroupBox(self.centralWidget)
self.groupBox_02.setGeometry(QtCore.QRect(10, 100, 351, 301))
self.groupBox_02.setAccessibleDescription(_fromUtf8(""))
self.groupBox_02.setObjectName(_fromUtf8("groupBox_02"))
self.DS_Size_Character = QtGui.QDoubleSpinBox(self.groupBox_02)
self.DS_Size_Character.setGeometry(QtCore.QRect(140, 60, 81, 22))
self.DS_Size_Character.setAccessibleDescription(_fromUtf8(""))
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.setObjectName(_fromUtf8("DS_Size_Character"))
self.DS_Size_Character.setToolTip(_fromUtf8("Size of the font"))
self.DS_Size_Character.valueChanged.connect(self.on_DS_Size_Character) #connection doubleSpinBox
self.label_4 = QtGui.QLabel(self.groupBox_02)
self.label_4.setGeometry(QtCore.QRect(230, 60, 91, 16))
self.label_4.setAccessibleDescription(_fromUtf8(""))
self.label_4.setText(_fromUtf8("Size character"))
self.label_4.setObjectName(_fromUtf8("label_4"))
self.DS_Extrude = QtGui.QDoubleSpinBox(self.groupBox_02)
self.DS_Extrude.setEnabled(False)
self.DS_Extrude.setGeometry(QtCore.QRect(140, 210, 81, 22))
self.DS_Extrude.setToolTip(_fromUtf8("Thickness of the extrude of character. If thickness = 0 then not extrude"))
self.DS_Extrude.setAccessibleDescription(_fromUtf8(""))
self.DS_Extrude.setMinimum(-99999999.0)
self.DS_Extrude.setMaximum(99999999.0)
self.DS_Extrude.setValue(epaisseur)
self.DS_Extrude.setObjectName(_fromUtf8("DS_Extrude"))
self.DS_Extrude.valueChanged.connect(self.on_DS_Extrude) #connection doubleSpinBox
self.label_7 = QtGui.QLabel(self.groupBox_02)
self.label_7.setGeometry(QtCore.QRect(230, 150, 101, 20))
self.label_7.setAccessibleDescription(_fromUtf8(""))
self.label_7.setText(_fromUtf8("Correction Angle"))
self.label_7.setObjectName(_fromUtf8("label_7"))
self.DS_Correction_Angle = QtGui.QDoubleSpinBox(self.groupBox_02)
self.DS_Correction_Angle.setGeometry(QtCore.QRect(140, 150, 81, 22))
self.DS_Correction_Angle.setToolTip(_fromUtf8("Correct angle for tangent the text of thr circle or give a tilt angle "))
self.DS_Correction_Angle.setAccessibleDescription(_fromUtf8(""))
self.DS_Correction_Angle.setMinimum(-359.00)
self.DS_Correction_Angle.setMaximum(359.00)
self.DS_Correction_Angle.setValue(correctionAngle)
self.DS_Correction_Angle.setObjectName(_fromUtf8("DS_Correction_Angle"))
self.DS_Correction_Angle.valueChanged.connect(self.on_DS_Correction_Angle) #connection doubleSpinBox
self.label_8 = QtGui.QLabel(self.groupBox_02)
self.label_8.setGeometry(QtCore.QRect(230, 180, 111, 16))
self.label_8.setAccessibleDescription(_fromUtf8(""))
self.label_8.setText(_fromUtf8("Correction Radius"))
self.label_8.setObjectName(_fromUtf8("label_8"))
self.DS_Correction_Radius = QtGui.QDoubleSpinBox(self.groupBox_02)
self.DS_Correction_Radius.setGeometry(QtCore.QRect(140, 180, 81, 22))
self.DS_Correction_Radius.setToolTip(_fromUtf8("Correct of the radius (depend of correction angle)"))
self.DS_Correction_Radius.setAccessibleDescription(_fromUtf8(""))
self.DS_Correction_Radius.setMinimum(-99999999.0)
self.DS_Correction_Radius.setMaximum(99999999.0)
self.DS_Correction_Radius.setValue(correctionRayon)
self.DS_Correction_Radius.setObjectName(_fromUtf8("DS_Correction_Radius"))
self.DS_Correction_Radius.valueChanged.connect(self.on_DS_Correction_Radius) #connection doubleSpinBox
self.DS_Radius_Circle = QtGui.QDoubleSpinBox(self.groupBox_02)
self.DS_Radius_Circle.setGeometry(QtCore.QRect(140, 30, 81, 22))
self.DS_Radius_Circle.setToolTip(_fromUtf8("Give the radius of circle"))
self.DS_Radius_Circle.setAccessibleDescription(_fromUtf8(""))
self.DS_Radius_Circle.setMinimum(-99999999.0)
self.DS_Radius_Circle.setMaximum(99999999.0)
self.DS_Radius_Circle.setValue(rayon)
self.DS_Radius_Circle.setObjectName(_fromUtf8("DS_Radius_Circle"))
self.DS_Radius_Circle.valueChanged.connect(self.on_DS_Radius_Circle) #connection doubleSpinBox
self.label_10 = QtGui.QLabel(self.groupBox_02)
self.label_10.setGeometry(QtCore.QRect(230, 30, 101, 16))
self.label_10.setAccessibleDescription(_fromUtf8(""))
self.label_10.setObjectName(_fromUtf8("label_10"))
self.groupBox_03 = QtGui.QGroupBox(self.groupBox_02)
self.groupBox_03.setGeometry(QtCore.QRect(10, 20, 101, 211))
self.groupBox_03.setAccessibleDescription(_fromUtf8(""))
self.groupBox_03.setObjectName(_fromUtf8("groupBox_03"))
self.RA_Choice_Outdoor = QtGui.QRadioButton(self.groupBox_03)
self.RA_Choice_Outdoor.setGeometry(QtCore.QRect(10, 20, 71, 20))
self.RA_Choice_Outdoor.setAccessibleDescription(_fromUtf8(""))
self.RA_Choice_Outdoor.setChecked(True)
self.RA_Choice_Outdoor.setObjectName(_fromUtf8("RA_Choice_Outdoor"))
self.RA_Choice_Outdoor.clicked.connect(self.on_RA_Choice_Outdoor) #connection radioButton
self.RA_Choice_Indoor = QtGui.QRadioButton(self.groupBox_03)
self.RA_Choice_Indoor.setGeometry(QtCore.QRect(10, 40, 71, 20))
self.RA_Choice_Indoor.setAccessibleDescription(_fromUtf8(""))
self.RA_Choice_Indoor.setObjectName(_fromUtf8("RA_Choice_Indoor"))
self.RA_Choice_Indoor.clicked.connect(self.on_RA_Choice_Indoor) #connection radioButton
self.RA_Choice_Helix = QtGui.QRadioButton(self.groupBox_03)
self.RA_Choice_Helix.setGeometry(QtCore.QRect(10, 60, 61, 20))
self.RA_Choice_Helix.setAccessibleDescription(_fromUtf8(""))
self.RA_Choice_Helix.setObjectName(_fromUtf8("RA_Choice_Helix"))
self.RA_Choice_Helix.clicked.connect(self.on_RA_Choice_Helix) #connection radioButton
self.RA_Choice_Clock = QtGui.QRadioButton(self.groupBox_03)
self.RA_Choice_Clock.setGeometry(QtCore.QRect(10, 80, 61, 20))
self.RA_Choice_Clock.setAccessibleDescription(_fromUtf8(""))
self.RA_Choice_Clock.setObjectName(_fromUtf8("RA_Choice_Clock"))
self.RA_Choice_Clock.clicked.connect(self.on_RA_Choice_Clock) #connection radioButton
self.PU_Flat = QtGui.QPushButton(self.groupBox_03)
self.PU_Flat.setEnabled(True)
self.PU_Flat.setGeometry(QtCore.QRect(10, 105, 81, 28))
self.PU_Flat.setAccessibleDescription(_fromUtf8(""))
self.PU_Flat.setText(_fromUtf8("Mode Stand"))
self.PU_Flat.setToolTip(_fromUtf8("Click for create the text Flat"))
self.PU_Flat.setObjectName(_fromUtf8("PU_Flat"))
self.PU_Flat.clicked.connect(self.on_PU_Flat)
self.graphicsView = QtGui.QGraphicsView(self.groupBox_03)
self.graphicsView.setGeometry(QtCore.QRect(10, 140, 81, 61))
self.graphicsView.setObjectName(_fromUtf8("graphicsView"))
self.label_13 = QtGui.QLabel(self.groupBox_02)
self.label_13.setGeometry(QtCore.QRect(230, 90, 71, 16))
self.label_13.setAccessibleDescription(_fromUtf8(""))
self.label_13.setObjectName(_fromUtf8("label_13"))
self.label_14 = QtGui.QLabel(self.groupBox_02)
self.label_14.setGeometry(QtCore.QRect(230, 120, 71, 16))
self.label_14.setAccessibleDescription(_fromUtf8(""))
self.label_14.setObjectName(_fromUtf8("label_14"))
self.CH_Extrude = QtGui.QCheckBox(self.groupBox_02)
self.CH_Extrude.setGeometry(QtCore.QRect(230, 210, 105, 20))
self.CH_Extrude.setToolTip(_fromUtf8("Choice extrude character or not"))
self.CH_Extrude.setAccessibleDescription(_fromUtf8(""))
self.CH_Extrude.setObjectName(_fromUtf8("CH_Extrude"))
self.CH_Extrude.clicked.connect(self.on_CH_Extrude) #connection checkBox
self.DS_InclinaisonX = QtGui.QSpinBox(self.groupBox_02)
self.DS_InclinaisonX.setEnabled(False)
self.DS_InclinaisonX.setGeometry(QtCore.QRect(10, 270, 61, 22))
self.DS_InclinaisonX.setToolTip(_fromUtf8("Inclination character in axis X"))
self.DS_InclinaisonX.setMinimum(-360)
self.DS_InclinaisonX.setMaximum(360)
self.DS_InclinaisonX.setValue(inclinaisonX)
self.DS_InclinaisonX.setObjectName(_fromUtf8("DS_InclinaisonX"))
self.DS_InclinaisonX.valueChanged.connect(self.on_DS_InclinaisonX) #connection doubleSpinBox
self.DS_InclinaisonY = QtGui.QSpinBox(self.groupBox_02)
self.DS_InclinaisonY.setEnabled(False)
self.DS_InclinaisonY.setGeometry(QtCore.QRect(85, 270, 61, 22))
self.DS_InclinaisonY.setToolTip(_fromUtf8("Inclination character axis Y"))
self.DS_InclinaisonY.setMinimum(-360)
self.DS_InclinaisonY.setMaximum(360)
self.DS_InclinaisonY.setValue(inclinaisonY)
self.DS_InclinaisonY.setObjectName(_fromUtf8("DS_InclinaisonY"))
self.DS_InclinaisonY.valueChanged.connect(self.on_DS_InclinaisonY) #connection doubleSpinBox
self.DS_InclinaisonZ = QtGui.QSpinBox(self.groupBox_02)
self.DS_InclinaisonZ.setEnabled(False)
self.DS_InclinaisonZ.setGeometry(QtCore.QRect(160, 270, 61, 22))
self.DS_InclinaisonZ.setToolTip(_fromUtf8("Inclination character axis Z"))
self.DS_InclinaisonZ.setMinimum(-360)
self.DS_InclinaisonZ.setMaximum(360)
self.DS_InclinaisonZ.setValue(inclinaisonZ)
self.DS_InclinaisonZ.setObjectName(_fromUtf8("DS_InclinaisonZ"))
self.DS_InclinaisonZ.valueChanged.connect(self.on_DS_InclinaisonZ) #connection doubleSpinBox
self.CH_Sp_Inclination = QtGui.QCheckBox(self.groupBox_02)
self.CH_Sp_Inclination.setGeometry(QtCore.QRect(230, 270, 111, 20))
self.CH_Sp_Inclination.setToolTip(_fromUtf8("Inclination of character in the choice or alls plane "))
self.CH_Sp_Inclination.setText(_fromUtf8("Sp. inclination"))
self.CH_Sp_Inclination.setObjectName(_fromUtf8("CH_Sp_Inclination"))
self.CH_Sp_Inclination.clicked.connect(self.on_CH_Sp_Inclination) #connection checkBox
self.S_Begin_Angle = QtGui.QSpinBox(self.groupBox_02)
self.S_Begin_Angle.setGeometry(QtCore.QRect(140, 90, 81, 22))
self.S_Begin_Angle.setMaximum(360)
self.S_Begin_Angle.setObjectName(_fromUtf8("spinBox"))
self.S_Begin_Angle.setToolTip(_fromUtf8("Starting text of the circle "))
self.S_Begin_Angle.setValue(debut)
self.S_Begin_Angle.valueChanged.connect(self.on_S_Begin_Angle) #connection SpinBox
self.S_End_Angle = QtGui.QSpinBox(self.groupBox_02)
self.S_End_Angle.setGeometry(QtCore.QRect(140, 120, 81, 22))
self.S_End_Angle.setMaximum(360)
self.S_End_Angle.setValue(rotation)
self.S_End_Angle.setToolTip(_fromUtf8("End text of the circle "))
self.S_End_Angle.setObjectName(_fromUtf8("S_End_Angle"))
self.S_End_Angle.valueChanged.connect(self.on_S_End_Angle) #connection SpinBox
self.DS_PlacementX = QtGui.QDoubleSpinBox(self.groupBox_02)
self.DS_PlacementX.setEnabled(False)
self.DS_PlacementX.setGeometry(QtCore.QRect(10, 240, 62, 22))
self.DS_PlacementX.setToolTip(_fromUtf8("Placement direction X"))
self.DS_PlacementX.setSpecialValueText(_fromUtf8(""))
self.DS_PlacementX.setMinimum(-9999999.0)
self.DS_PlacementX.setMaximum(9999999.99)
self.DS_PlacementX.setObjectName(_fromUtf8("DS_PlacementX"))
self.DS_PlacementX.valueChanged.connect(self.on_DS_PlacementX) #connection doubleSpinBox
self.DS_PlacementY = QtGui.QDoubleSpinBox(self.groupBox_02)
self.DS_PlacementY.setEnabled(False)
self.DS_PlacementY.setGeometry(QtCore.QRect(85, 240, 62, 22))
self.DS_PlacementY.setToolTip(_fromUtf8("Placement direction Y"))
self.DS_PlacementY.setSpecialValueText(_fromUtf8(""))
self.DS_PlacementY.setMinimum(-9999999.0)
self.DS_PlacementY.setMaximum(9999999.99)
self.DS_PlacementY.setObjectName(_fromUtf8("DS_PlacementY"))
self.DS_PlacementY.valueChanged.connect(self.on_DS_PlacementY) #connection doubleSpinBox
self.DS_PlacementZ = QtGui.QDoubleSpinBox(self.groupBox_02)
self.DS_PlacementZ.setEnabled(False)
self.DS_PlacementZ.setGeometry(QtCore.QRect(160, 240, 62, 22))
self.DS_PlacementZ.setToolTip(_fromUtf8("Placement direction Z"))
self.DS_PlacementZ.setSpecialValueText(_fromUtf8(""))
self.DS_PlacementZ.setMinimum(-9999999.0)
self.DS_PlacementZ.setMaximum(9999999.99)
self.DS_PlacementZ.setObjectName(_fromUtf8("DS_PlacementZ"))
self.DS_PlacementZ.valueChanged.connect(self.on_DS_PlacementZ) #connection doubleSpinBox
self.CH_Sp_Placement = QtGui.QCheckBox(self.groupBox_02)
self.CH_Sp_Placement.setGeometry(QtCore.QRect(230, 240, 111, 20))
self.CH_Sp_Placement.setToolTip(_fromUtf8("Placement of character in the choice"))
self.CH_Sp_Placement.setObjectName(_fromUtf8("CH_Sp_Placement"))
self.CH_Sp_Placement.clicked.connect(self.on_CH_Sp_Placement) #connection checkBox
self.groupBox_05 = QtGui.QGroupBox(self.centralWidget)
self.groupBox_05.setEnabled(False)
self.groupBox_05.setGeometry(QtCore.QRect(10, 480, 351, 111))
self.groupBox_05.setAccessibleDescription(_fromUtf8(""))
self.groupBox_05.setObjectName(_fromUtf8("groupBox_05"))
self.PU_Roman = QtGui.QPushButton(self.groupBox_05)
self.PU_Roman.setGeometry(QtCore.QRect(250, 20, 93, 28))
self.PU_Roman.setAccessibleDescription(_fromUtf8(""))
self.PU_Roman.setText(_fromUtf8("Mode Arabic"))
self.PU_Roman.setObjectName(_fromUtf8("PU_Roman"))
self.PU_Roman.clicked.connect(self.on_PU_Roman)
self.PU_Redress = QtGui.QPushButton(self.groupBox_05)
self.PU_Redress.setGeometry(QtCore.QRect(250, 50, 93, 28))
self.PU_Redress.setAccessibleDescription(_fromUtf8(""))
self.PU_Redress.setText(_fromUtf8("Redress"))
self.PU_Redress.setObjectName(_fromUtf8("PU_Redress"))
self.PU_Redress.clicked.connect(self.on_PU_Redress)
self.S_Number_Faces_Support = QtGui.QSpinBox(self.groupBox_05)
self.S_Number_Faces_Support.setGeometry(QtCore.QRect(10, 50, 81, 22))
self.S_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.S_Number_Faces_Support.setAccessibleDescription(_fromUtf8(""))
self.S_Number_Faces_Support.setMaximum(999)
self.S_Number_Faces_Support.setValue(nombreFaces)
self.S_Number_Faces_Support.setObjectName(_fromUtf8("S_Number_Faces_Support"))
self.S_Number_Faces_Support.valueChanged.connect(self.on_S_Number_Faces_Support) #connection SpinBox
self.label_5 = QtGui.QLabel(self.groupBox_05)
self.label_5.setGeometry(QtCore.QRect(100, 50, 131, 16))
self.label_5.setAccessibleDescription(_fromUtf8(""))
self.label_5.setText(_fromUtf8("Support number face"))
self.label_5.setObjectName(_fromUtf8("label_5"))
self.DS_Radius_Support = QtGui.QDoubleSpinBox(self.groupBox_05)
self.DS_Radius_Support.setGeometry(QtCore.QRect(10, 20, 81, 22))
self.DS_Radius_Support.setToolTip(_fromUtf8("Radius of the support the clock (By defaut : Radius of circle)"))
self.DS_Radius_Support.setAccessibleDescription(_fromUtf8(""))
self.DS_Radius_Support.setMaximum(99999999.99)
self.DS_Radius_Support.setValue(cercleClock)
self.DS_Radius_Support.setObjectName(_fromUtf8("DS_Radius_Support"))
self.DS_Radius_Support.valueChanged.connect(self.on_DS_Radius_Support) #connection doubleSpinBox
self.label_11 = QtGui.QLabel(self.groupBox_05)
self.label_11.setGeometry(QtCore.QRect(100, 20, 121, 16))
self.label_11.setAccessibleDescription(_fromUtf8(""))
self.label_11.setObjectName(_fromUtf8("label_11"))
self.doubleSpinBox = QtGui.QDoubleSpinBox(self.groupBox_05)
self.doubleSpinBox.setGeometry(QtCore.QRect(10, 80, 81, 22))
self.doubleSpinBox.setObjectName(_fromUtf8("doubleSpinBox"))
self.DS_Extrude_Support = QtGui.QDoubleSpinBox(self.groupBox_05)
self.DS_Extrude_Support.setGeometry(QtCore.QRect(10, 80, 81, 22))
self.DS_Extrude_Support.setToolTip(_fromUtf8("Thickness of the extrude the support. If thickness = 0 then not extrude"))
self.DS_Extrude_Support.setAccessibleDescription(_fromUtf8(""))
self.DS_Extrude_Support.setMaximum(99999999.0)
self.DS_Extrude_Support.setEnabled(False)
self.DS_Extrude_Support.setValue(epaisSupp)
self.DS_Extrude_Support.setObjectName(_fromUtf8("DS_Extrude_Support"))
self.DS_Extrude_Support.valueChanged.connect(self.on_DS_Extrude_Support) #connection doubleSpinBox
self.label_6 = QtGui.QLabel(self.groupBox_05)
self.label_6.setGeometry(QtCore.QRect(100, 80, 121, 16))
self.label_6.setObjectName(_fromUtf8("label_6"))
self.groupBox_04 = QtGui.QGroupBox(self.centralWidget)
self.groupBox_04.setEnabled(False)
self.groupBox_04.setGeometry(QtCore.QRect(10, 400, 351, 81))
self.groupBox_04.setAccessibleDescription(_fromUtf8(""))
self.groupBox_04.setLayoutDirection(QtCore.Qt.LeftToRight)
self.groupBox_04.setCheckable(False)
self.groupBox_04.setObjectName(_fromUtf8("groupBox_04"))
self.DS_Base_Helix = QtGui.QDoubleSpinBox(self.groupBox_04)
self.DS_Base_Helix.setGeometry(QtCore.QRect(10, 50, 81, 22))
self.DS_Base_Helix.setToolTip(_fromUtf8("Base (begin) of helix (to activate Step of Helix must be zero)"))
self.DS_Base_Helix.setEnabled(False)
self.DS_Base_Helix.setAccessibleDescription(_fromUtf8(""))
self.DS_Base_Helix.setMinimum(-99999999.0)
self.DS_Base_Helix.setMaximum(99999999.0)
self.DS_Base_Helix.setValue(baseHelix)
self.DS_Base_Helix.setObjectName(_fromUtf8("DS_Base_Helix"))
self.DS_Base_Helix.valueChanged.connect(self.on_DS_Base_Helix) #connection doubleSpinBox
self.label = QtGui.QLabel(self.groupBox_04)
self.label.setGeometry(QtCore.QRect(270, 20, 91, 16))
self.label.setAccessibleDescription(_fromUtf8(""))
self.label.setText(_fromUtf8("Char. per turn"))
self.label.setObjectName(_fromUtf8("label"))
self.DS_End_Helix = QtGui.QDoubleSpinBox(self.groupBox_04)
self.DS_End_Helix.setGeometry(QtCore.QRect(180, 50, 81, 22))
self.DS_End_Helix.setToolTip(_fromUtf8("Final height of the helix (to activate Step of Helix must be zero)"))
self.DS_End_Helix.setEnabled(False)
self.DS_End_Helix.setAccessibleDescription(_fromUtf8(""))
self.DS_End_Helix.setMinimum(-99999999.0)
self.DS_End_Helix.setMaximum(99999999.0)
self.DS_End_Helix.setValue(endHelix)
self.DS_End_Helix.setObjectName(_fromUtf8("DS_End_Helix"))
self.DS_End_Helix.valueChanged.connect(self.on_DS_End_Helix) #connection doubleSpinBox
self.label_2 = QtGui.QLabel(self.groupBox_04)
self.label_2.setGeometry(QtCore.QRect(100, 50, 81, 16))
self.label_2.setAccessibleDescription(_fromUtf8(""))
self.label_2.setText(_fromUtf8("Base Helix"))
self.label_2.setObjectName(_fromUtf8("label_2"))
self.label_3 = QtGui.QLabel(self.groupBox_04)
self.label_3.setGeometry(QtCore.QRect(270, 50, 61, 16))
self.label_3.setAccessibleDescription(_fromUtf8(""))
self.label_3.setText(_fromUtf8("End Helix"))
self.label_3.setObjectName(_fromUtf8("label_3"))
self.DS_Number_Char_Per_Turn = QtGui.QSpinBox(self.groupBox_04)
self.DS_Number_Char_Per_Turn.setGeometry(QtCore.QRect(180, 20, 81, 22))
self.DS_Number_Char_Per_Turn.setToolTip(_fromUtf8("Number of characters for one turn of helix"))
self.DS_Number_Char_Per_Turn.setAccessibleDescription(_fromUtf8(""))
self.DS_Number_Char_Per_Turn.setMaximum(99999999)
self.DS_Number_Char_Per_Turn.setValue(nombreCarParTour)
self.DS_Number_Char_Per_Turn.setObjectName(_fromUtf8("DS_Number_Char_Per_Turn"))
self.DS_Number_Char_Per_Turn.valueChanged.connect(self.on_DS_Number_Char_Per_Turn) #connection doubleSpinBox
self.DS_Step_Of_The_Helix = QtGui.QDoubleSpinBox(self.groupBox_04)
self.DS_Step_Of_The_Helix.setGeometry(QtCore.QRect(10, 20, 81, 22))
self.DS_Step_Of_The_Helix.setToolTip(_fromUtf8("Step of the text along the helix (min Size Caractere)"))
self.DS_Step_Of_The_Helix.setAccessibleDescription(_fromUtf8(""))
self.DS_Step_Of_The_Helix.setMaximum(99999999.99)
self.DS_Step_Of_The_Helix.setValue(pasHelix)
self.DS_Step_Of_The_Helix.setObjectName(_fromUtf8("DS_Step_Of_The_Helix"))
self.DS_Step_Of_The_Helix.valueChanged.connect(self.on_DS_Step_Of_The_Helix) #connection doubleSpinBox
self.label_12 = QtGui.QLabel(self.groupBox_04)
self.label_12.setGeometry(QtCore.QRect(100, 20, 81, 16))
self.label_12.setAccessibleDescription(_fromUtf8(""))
self.label_12.setObjectName(_fromUtf8("label_12"))
self.PU_Exit = QtGui.QPushButton(self.centralWidget)
self.PU_Exit.setGeometry(QtCore.QRect(10, 600, 81, 28))
self.PU_Exit.setAccessibleDescription(_fromUtf8(""))
self.PU_Exit.setText(_fromUtf8("Exit"))
self.PU_Exit.setObjectName(_fromUtf8("PU_Exit"))
self.PU_Exit.clicked.connect(self.on_PU_Exit)
self.PU_Execute = QtGui.QPushButton(self.centralWidget)
self.PU_Execute.setGeometry(QtCore.QRect(280, 600, 81, 28))
self.PU_Execute.setAccessibleDescription(_fromUtf8(""))
self.PU_Execute.setText(_fromUtf8("Run"))
self.PU_Execute.setToolTip("Execute the process") # without Compount
self.PU_Execute.setObjectName(_fromUtf8("PU_Execute"))
self.PU_Execute.clicked.connect(self.on_PU_Execute)
self.PU_Reset = QtGui.QPushButton(self.centralWidget)
self.PU_Reset.setGeometry(QtCore.QRect(100, 600, 81, 28))
self.PU_Reset.setToolTip(_fromUtf8("Reset the macro and give the number of the characters of windows Textedit"))
self.PU_Reset.setAccessibleDescription(_fromUtf8(""))
self.PU_Reset.setEnabled(True)
self.PU_Reset.setObjectName(_fromUtf8("PU_Reset"))
self.PU_Reset.clicked.connect(self.on_PU_Reset)
self.groupBox_01 = QtGui.QGroupBox(self.centralWidget)
self.groupBox_01.setGeometry(QtCore.QRect(10, 0, 351, 101))
self.groupBox_01.setAccessibleDescription(_fromUtf8(""))
self.groupBox_01.setObjectName(_fromUtf8("groupBox_01"))
self.lineEdit = QtGui.QLineEdit(self.groupBox_01)
self.lineEdit.setGeometry(QtCore.QRect(10, 70, 211, 22))
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.lineEdit.setText(PolicePath)
self.textEdit = QtGui.QTextEdit(self.groupBox_01)
self.textEdit.setGeometry(QtCore.QRect(10, 20, 331, 41))
self.textEdit.setObjectName(_fromUtf8("textEdit"))
self.textEdit.setText(texte)
self.PU_New_Font = QtGui.QPushButton(self.groupBox_01)
self.PU_New_Font.setGeometry(QtCore.QRect(230, 70, 111, 21))
self.PU_New_Font.setToolTip(_fromUtf8("Search your new font"))
self.PU_New_Font.setAccessibleDescription(_fromUtf8(""))
self.PU_New_Font.setText(_fromUtf8("New Font"))
self.PU_New_Font.setObjectName(_fromUtf8("PU_New_Font"))
self.PU_New_Font.clicked.connect(self.on_PU_New_Font)
self.PU_Benchmarks = QtGui.QPushButton(self.centralWidget)
self.PU_Benchmarks.setGeometry(QtCore.QRect(190, 600, 81, 28))
self.PU_Benchmarks.setToolTip(_fromUtf8("Execute the process and one Compount of the characters is create"))
# self.PU_Benchmarks.setEnabled(True)
self.PU_Benchmarks.setText("Run Comp")
self.PU_Benchmarks.setObjectName(_fromUtf8("PU_Benchmarks"))
self.PU_Benchmarks.clicked.connect(self.on_PU_Benchmarks)
MainWindow.setCentralWidget(self.centralWidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
try:
MainWindow.setWindowFlags(PyQt4.QtCore.Qt.WindowStaysOnTopHint) # PyQt4 cette fonction met la fenêtre en avant
except Exception:
MainWindow.setWindowFlags(PySide.QtCore.Qt.WindowStaysOnTopHint) # PySide cette fonction met la fenêtre en avant
MainWindow.setWindowTitle("FCCircularText")
self.groupBox_02.setTitle("Configuration FCCircularText Character")
self.label_10.setText("Radius of circle")
self.groupBox_03.setTitle("Choice")
self.RA_Choice_Outdoor.setToolTip("Create the text on the outer face of the cylinder")
self.RA_Choice_Outdoor.setText("Outdoor")
self.RA_Choice_Indoor.setToolTip("Create the text on the inside of the cylinder")
self.RA_Choice_Indoor.setText("Indoor")
self.RA_Choice_Helix.setToolTip("Create the text in a helix")
self.RA_Choice_Helix.setText("Helix")
self.RA_Choice_Clock.setToolTip("Create the text to form a clock")
self.RA_Choice_Clock.setText("Clock")
self.label_13.setText("Begin angle")
self.label_14.setText("End angle")
self.CH_Extrude.setText("Extrude Char.")
self.DS_InclinaisonX.setSuffix(" X°")
self.DS_InclinaisonY.setSuffix(" Y°")
self.DS_InclinaisonZ.setSuffix(" Z°")
self.DS_PlacementX.setSuffix(" X")
self.DS_PlacementY.setSuffix(" Y")
self.DS_PlacementZ.setSuffix(" Z")
self.CH_Sp_Placement.setText("Placement")
self.groupBox_05.setTitle("Clock")
self.PU_Roman.setToolTip("The characters is in Roman or Arabic (default)")
self.PU_Redress.setToolTip("The numbers is straight or tangent of the circle")
self.label_11.setText("Radius of support")
self.label_6.setText("Extrude support")
self.groupBox_04.setTitle("Helix")
self.label_12.setText("Step of Helix")
self.PU_Exit.setToolTip("Exit FCCircularText")
self.PU_Reset.setText("Reset")
self.groupBox_01.setTitle("Text to be displayed ( "+str(len(texte))+" characters )")
self.lineEdit.setToolTip("Font to defaut")
self.lineEdit.setText(PolicePath)
self.textEdit.setToolTip("Your text to be displayed")
self.textEdit.setHtml(texte)
##############################################################################
def on_PU_New_Font(self): # New Font
global PolicePath
OpenName = ""
try:
OpenName = QFileDialog.getOpenFileName(None,QString.fromLocal8Bit("New Font"),PolicePath,"*.ttf") # PyQt4
except Exception:
OpenName, Filter = PySide.QtGui.QFileDialog.getOpenFileName(None, "New Font", PolicePath, "*.ttf")#PySide
try:
if OpenName != "":
PolicePath = OpenName
self.lineEdit.setText(PolicePath)
except Exception:
None
App.Console.PrintMessage("New Font " + (PolicePath)+"\n")
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.DS_PlacementX.setValue(PlacementX)
self.DS_PlacementX.setEnabled(False)
self.DS_PlacementY.setValue(PlacementY)
self.DS_PlacementY.setEnabled(False)
self.DS_PlacementZ.setValue(PlacementZ)
self.DS_PlacementZ.setEnabled(False)
# 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.DS_InclinaisonX.setValue(inclinaisonX)
self.DS_InclinaisonX.setEnabled(False)
self.DS_InclinaisonY.setValue(inclinaisonY)
self.DS_InclinaisonY.setEnabled(False)
self.DS_InclinaisonZ.setValue(inclinaisonZ)
self.DS_InclinaisonZ.setEnabled(False)
# App.Console.PrintMessage(str("on_PU_Reset_Inclination ")+"\n")
def on_RA_Choice_Outdoor(self): #
global exterieur
global extrusion
global epaisseur
extrusion = 0
epaisseur = 0.0
self.DS_Extrude.setValue(epaisseur)
self.CH_Extrude.setChecked(False)
self.DS_Extrude.setEnabled(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)
self.groupBox_04.setEnabled(False)
self.groupBox_05.setEnabled(False)
ff2 = ui
ff2.on_PU_Reset_Placement()
ff3 = ui
ff3.on_PU_Reset_Inclination()
# App.Console.PrintMessage(str("on_RA_Choice_Outdoor ")+" "+str(exterieur)+"\n")
def on_RA_Choice_Indoor(self): #
global exterieur
global extrusion
global epaisseur
extrusion = 0
epaisseur = 0.0
self.DS_Extrude.setValue(epaisseur)
self.CH_Extrude.setChecked(False)
self.DS_Extrude.setEnabled(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)
self.groupBox_04.setEnabled(False)
self.groupBox_05.setEnabled(False)
ff2 = ui
ff2.on_PU_Reset_Placement()
ff3 = ui
ff3.on_PU_Reset_Inclination()
# App.Console.PrintMessage(str("on_RA_Choice_Indoor ")+" "+str(exterieur)+"\n")
def on_RA_Choice_Helix(self): #
global exterieur
global cercleClock
global nombreFaces
global debout
global extrusion
global epaisseur
extrusion = 0
epaisseur = 0.0
self.DS_Extrude.setValue(epaisseur)
self.CH_Extrude.setChecked(False)
self.DS_Extrude.setEnabled(False)
exterieur = 2
cercleClock = 0
nombreFaces = 0
debout = 1
self.RA_Choice_Outdoor.setText("Outdoor")
self.RA_Choice_Indoor.setText("Indoor")
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)##
self.groupBox_04.setEnabled(True)
self.groupBox_05.setEnabled(False)
ff2 = ui
ff2.on_PU_Reset_Placement()
ff3 = ui
ff3.on_PU_Reset_Inclination()
def on_RA_Choice_Clock(self): #
global exterieur
global debout
global correctionRayon
global correctionAngle
global extrusion
global epaisseur
extrusion = 0
epaisseur = 0.0
self.DS_Extrude.setValue(epaisseur)
self.CH_Extrude.setChecked(False)
self.DS_Extrude.setEnabled(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)
self.groupBox_04.setEnabled(False)
self.groupBox_05.setEnabled(True)
ff2 = ui
ff2.on_PU_Reset_Placement()
ff3 = ui
ff3.on_PU_Reset_Inclination()
# App.Console.PrintMessage(str("on_RA_Choice_Clock ")+str(exterieur)+"\n")
def on_PU_Flat(self): # Flat or Stand
global debout
if debout == 1:
debout = 0
self.RA_Choice_Outdoor.setText("Indoor")
self.RA_Choice_Indoor.setText("Outdoor")
self.PU_Flat.setText(_fromUtf8("Mode Flat"))
self.PU_Flat.setToolTip(_fromUtf8("Click for create the text Stand"))
else:
debout = 1
self.RA_Choice_Outdoor.setText("Outdoor")
self.RA_Choice_Indoor.setText("Indoor")
self.PU_Flat.setText(_fromUtf8("Mode Stand"))
self.PU_Flat.setToolTip(_fromUtf8("Click for create the text Flat"))
# App.Console.PrintMessage(str("on_PU_Flat ")+str(debout)+"\n")
def on_DS_Radius_Circle(self,value):
global rayon
global cercleClock
rayon = value
cercleClock = rayon
# App.Console.PrintMessage("on_DS_Radius_Circle Radius"+str(rayon)+"\n")
def on_DS_Size_Character(self,value):
global SizeCaractere
SizeCaractere = value
# App.Console.PrintMessage("on_DS_Size_Character Size"+str(SizeCaractere)+"\n")
def on_S_Begin_Angle(self,value): #
global debut
debut = value
# App.Console.PrintMessage(str("on_S_Begin_Angle ")+str(debut)+"\n")
def on_S_End_Angle(self,value): #
global rotation
rotation = value
# App.Console.PrintMessage(str("on_S_End_Angle ")+str(rotation)+"\n")
def on_DS_PlacementX(self,value): #
global PlacementX
PlacementX = value
# App.Console.PrintMessage(str("on_DS_PlacementX ")+str(PlacementX)+"\n")
def on_DS_PlacementY(self,value): #
global PlacementY
PlacementY = value
# App.Console.PrintMessage(str("on_DS_PlacementY ")+str(PlacementY)+"\n")
def on_DS_PlacementZ(self,value): #
global PlacementZ
PlacementZ = value
# App.Console.PrintMessage(str("on_DS_PlacementZ ")+str(PlacementZ)+"\n")
def on_CH_Sp_Placement(self): # Placement or not Placement
if self.CH_Sp_Placement.isChecked():
self.DS_PlacementX.setEnabled(True)
self.DS_PlacementY.setEnabled(True)
self.DS_PlacementZ.setEnabled(True)
# App.Console.PrintMessage(str("on_CH_Sp_Placement ")+str("True")+"\n")
else:
ff2 = ui
ff2.on_PU_Reset_Placement()
if self.RA_Choice_Clock.isChecked():
self.DS_PlacementX.setEnabled(False)
self.DS_PlacementY.setEnabled(False)
# App.Console.PrintMessage(str("on_CH_Sp_Placement ")+str("False")+"\n")
def on_DS_Correction_Angle(self,value): #
global correctionAngle
correctionAngle = value
# App.Console.PrintMessage(str("on_DS_Correction_Angle ")+str(correctionAngle)+"\n")
def on_DS_Correction_Radius(self,value): #
global correctionRayon
correctionRayon = value
# App.Console.PrintMessage(str("on_DS_Correction_Radius ")+str(correctionRayon)+"\n")
def on_DS_Extrude(self,value): #
global epaisseur
epaisseur = value
# App.Console.PrintMessage("on_DS_Extrude "+str(epaisseur)+"\n")
def on_CH_Extrude(self): #
global extrusion
global epaisseur
if self.CH_Extrude.isChecked():
self.DS_Extrude.setEnabled(True)
extrusion = 1
epaisseur = 1.0
else:
self.DS_Extrude.setEnabled(False)
extrusion = 0
epaisseur = 0.0
self.DS_Extrude.setValue(epaisseur)
# App.Console.PrintMessage(str("on_CH_Extrude ")+str(extrusion)+" "+str(epaisseur)+"\n")
def on_DS_InclinaisonX(self,value): #
global inclinaisonX
inclinaisonX = value
# App.Console.PrintMessage(str("on_DS_InclinaisonX ")+str(inclinaisonX)+"\n")
def on_DS_InclinaisonY(self,value): #
global inclinaisonY
inclinaisonY = value
# App.Console.PrintMessage(str("on_DS_InclinaisonY ")+str(inclinaisonY)+"\n")
def on_DS_InclinaisonZ(self,value): #
global inclinaisonZ
inclinaisonZ = value
# App.Console.PrintMessage(str("on_DS_InclinaisonZ ")+str(inclinaisonZ)+"\n")
def on_CH_Sp_Inclination(self): #
if self.CH_Sp_Inclination.isChecked():
self.DS_InclinaisonX.setEnabled(True)
self.DS_InclinaisonY.setEnabled(True)
self.DS_InclinaisonZ.setEnabled(True)
else:
ff3 = ui
ff3.on_PU_Reset_Inclination()
# App.Console.PrintMessage(str("on_CH_Sp_Inclination ")+str(self.CH_Sp_Inclination.isChecked())+"\n")
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)
# App.Console.PrintMessage(str("on_DS_Step_Of_The_Helix ")+str(SizeCaractere)+"\n")
def on_DS_Number_Char_Per_Turn(self,value):#
global nombreCarParTour
nombreCarParTour = value
# App.Console.PrintMessage(str("on_DS_Number_Char_Per_Turn ")+str(nombreCarParTour)+"\n")
def on_DS_Base_Helix(self,value): #
global baseHelix
baseHelix = value
# App.Console.PrintMessage(str("on_DS_Base_Helix ")+str(baseHelix)+"\n")
def on_DS_End_Helix(self,value): #
global endHelix
endHelix = value
# App.Console.PrintMessage(str("on_DS_End_Helix ")+str(endHelix)+"\n")
def on_DS_Radius_Support(self,value): #
global cercleClock
cercleClock = value
# App.Console.PrintMessage(str("on_DS_Radius_Support ")+str(cercleClock)+"\n")
def on_S_Number_Faces_Support(self,value): # number Faces of support 0=none 1=circle 2=rectangle 3=triangle 4,5 ... polygon
global nombreFaces
nombreFaces = value
self.DS_Extrude_Support.setEnabled(True)
if nombreFaces == 0:
self.label_5.setText(_fromUtf8("Support number face"))
self.DS_Extrude_Support.setEnabled(False)
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"))
# App.Console.PrintMessage(str("on_S_Number_Faces_Support ")+str(nombreFaces)+"\n")
def on_DS_Extrude_Support(self,value): #
global epaisSupp
epaisSupp = value
self.DS_PlacementZ.setEnabled(True)
# App.Console.PrintMessage(str("on_DS_Extrude_Support ")+str(epaisSupp)+"\n")
def on_PU_Roman(self): # Roman or Arabic Clock
global romain
if romain == 1:
romain = 0
self.PU_Roman.setText(_fromUtf8("Mode Arabic"))
self.PU_Roman.setToolTip(_fromUtf8("Click for activate the mode Roman"))
else:
romain = 1
self.PU_Roman.setText(_fromUtf8("Mode Roman"))
self.PU_Roman.setToolTip(_fromUtf8("Click for activate the mode Arabic"))
# App.Console.PrintMessage(str("romain ")+str(romain)+"\n")
def on_PU_Redress(self): # Redress or circumferencial Clock
global redressement
if redressement == 1:
redressement = 0
self.PU_Redress.setText(_fromUtf8("Redress"))
self.PU_Redress.setToolTip(_fromUtf8("Click for activate the mode Axial"))
else:
redressement = 1
self.PU_Redress.setText(_fromUtf8("Axial"))
self.PU_Redress.setToolTip(_fromUtf8("Click for activate the mode Redress"))
# App.Console.PrintMessage(str("redressement ")+str(redressement)+"\n")
def on_PU_Exit(self): # Exit
App.Console.PrintMessage("Fin FCCircularText"+"\n")
self.window.hide()
def on_PU_Reset(self): #
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 epaisseur
global epaisSupp
global extrusion
global compount1
texte = ""
exterieur = 1
self.RA_Choice_Outdoor.setText("Outdoor")
self.RA_Choice_Indoor.setText("Indoor")
self.RA_Choice_Outdoor.setChecked(True)
debout = 1
self.PU_Flat.setText(_fromUtf8("Mode Stand"))
self.PU_Flat.setToolTip(_fromUtf8("Click for create the text Flat"))
SizeCaractere = 2.0
self.DS_Size_Character.setValue(SizeCaractere)
rayon = 10.0
self.DS_Radius_Circle.setValue(rayon)
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 = 10.0
self.DS_Correction_Angle.setValue(correctionAngle)
self.DS_Correction_Radius.setEnabled(True)
correctionRayon = 0.15
self.DS_Correction_Radius.setValue(correctionRayon)
self.DS_Correction_Angle.setEnabled(True)
extrusion = 0
epaisseur = 0.0
self.DS_Extrude.setValue(epaisseur)
self.CH_Extrude.setChecked(False)
self.DS_Extrude.setEnabled(False)
ff2 = ui
ff2.on_PU_Reset_Placement()
ff3 = ui
ff3.on_PU_Reset_Inclination()
self.groupBox_04.setEnabled(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)
self.groupBox_05.setEnabled(False)
cercleClock = rayon
self.DS_Radius_Support.setValue(cercleClock)
nombreFaces = 0
self.S_Number_Faces_Support.setValue(nombreFaces)
self.label_5.setText(_fromUtf8("Support number face"))
epaisSupp = 0.0
self.DS_Extrude_Support.setEnabled(False)
self.DS_Extrude_Support.setValue(epaisSupp)
romain = 0
self.PU_Roman.setText(_fromUtf8("Mode Arabic"))
self.PU_Roman.setToolTip(_fromUtf8("Click for activate the mode Roman"))
redressement = 0
self.PU_Redress.setText(_fromUtf8("Redress"))
self.PU_Redress.setToolTip(_fromUtf8("Click for activate the mode Axial"))
compount1 = 0
##### update the setTitle ########################################
texte = unicode(self.textEdit.toPlainText())
self.groupBox_01.setTitle("Text to be displayed ( "+str(len(texte))+" characters )")
# App.Console.PrintMessage(str("on_PU_Reset ")+str()+"\n")
def on_PU_Benchmarks(self): # Benchmarks
global compount1
compount1 = 1
ff = ui
ff.on_PU_Execute()
# App.Console.PrintMessage(str("Benchmarks")+"\n")
##########################################################################
def on_PU_Execute(self): # Execute
global PolicePath
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 PolicePath
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 epaisseur
global epaisSupp
global extrusion
global compount1
points = []
comP = []
nameL = []
del points[:]
del comP[:]
del nameL[:]
doc = FreeCAD.ActiveDocument
if doc == None:
doc = FreeCAD.newDocument()
texte = unicode(self.textEdit.toPlainText())
self.groupBox_01.setTitle("Text to be displayed ( "+str(len(texte))+" characters )")
if ((exterieur == 0) and (debout == 0)):
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) # cr\E9ation de la ligne de base
lineName = ligne.Name
ii = -1
ii2 = -1
nombre = len(texte)
coor_Z = PlacementZ
if (exterieur == 0) or (debout == 0):
texte = texte[::-1]
if (exterieur == 0) and (debout == 0):
texte = texte[::-1]
depart = time.clock() # chrono begin
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
else:
nombreCarParTour = 1
if exterieur == 3: # Clock
FcString = doc.addObject("App::DocumentObjectGroup","FcClock")
nombre = 12
if romain == 0:
texte = ["1","2","3","4","5","6","7","8","9","10","11","12"]
else:
texte = ["I","II","III","IIII","V","VI","VII","VIII","IX","X","XI","XII"]
texte = texte[::-1]
else:
FcString = doc.addObject("App::DocumentObjectGroup","FcString")
####Boucle principale############################################################################
boucler = len(texte) / nombreCarParTour
if (len(texte) % nombreCarParTour) != 0: # calcul number spires Helix
boucler += 1
for hel in range(boucler):
ii = -1
####Boucle de travail#################################################
for angleTr in range(debut,rotation,((rotation-debut)/nombre)):
ii += 1
ii2 += 1
ligne.Placement = App.Placement(App.Vector(PlacementX,PlacementY,PlacementZ), App.Rotation(App.Vector(0,0,1),angleTr), App.Vector(0,0,0))
a = ligne.Shape.Edges[0].Vertexes[1] # fin de ligne
coor_X = (a.Point.x)
coor_Y = (a.Point.y)
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,1),angleTr+90), App.Vector(0,0,0))
a = ligne.Shape.Edges[0].Vertexes[1] # fin
coor_X = (a.Point.x)
coor_Y = (a.Point.y)
ss=Draft.makeShapeString(String=unicode(texte[ii2]),FontFile=PolicePath,Size=SizeCaractere,Tracking=0)
FcString.addObject(ss) # contener character
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)
coor_X = coor_X + PlacementX
coor_Y = coor_Y + PlacementY
plm=""
plm=FreeCAD.Placement()
plm.Base=FreeCAD.Vector(coor_X,coor_Y,coor_Z)
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)) # 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)) # 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)) # 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)) # 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)) # 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)) # pitch,roll...1
if epaisseur > 0: # extrusion characrters
CharExtrude = Draft.extrude(ss,Base.Vector(0,0,epaisseur))
CharExtrude.Placement=plm
comP.append(CharExtrude.Shape)
# nameL.append(CharExtrude.Name)
FcString.addObject(CharExtrude) # contener extrude
else: #
ss.Placement=plm
ss.Support=None
comP.append(ss.Shape)
# nameL.append(ss.Name)
# points += [FreeCAD.Vector(coor_X,coor_Y,coor_Z)] # coordinates makeBSpline
# BSpline = Draft.makeBSpline(points,closed=False) # makeBSpline repere
App.ActiveDocument.removeObject(lineName) # remove ligne de base directrice
if compount1 == 1: # create compount
comp = Part.makeCompound(comP)
Part.show(comp)
####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)
supp = Draft.makeRectangle((cercleClock * 2), 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)
FcString.addObject(supp) # contener support
if epaisSupp != 0: # extrude support clock
suppExtrude = Draft.extrude(supp,Base.Vector(0,0,epaisSupp))
FcString.addObject(suppExtrude) # contener support extrude
####Info################################################
App.Console.PrintMessage((PolicePath)+"\n")
App.Console.PrintMessage(u"texte " + unicode(texte)+"\n")
App.Console.PrintMessage("rayon " + str(rayon)+"\n")
App.Console.PrintMessage("rotation " + str(rotation)+"\n")
App.Console.PrintMessage("SizeCaractere " + str(SizeCaractere)+"\n")
App.Console.PrintMessage("debout " + str(debout)+"\n")
####Reset################################################
ff = ui
ff.on_PU_Reset()
#### Chrono end ####################################
arrivee = time.clock() # chrono end
App.Console.PrintMessage("Time : "+str("%.2f" % ((arrivee - depart)/60))+" min"+"\n\n") # chrono end
####################################################
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment