Skip to content

Instantly share code, notes, and snippets.

@mario52a
Last active October 30, 2023 12:34
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mario52a/6afc64081c4eb8be3b93 to your computer and use it in GitHub Desktop.
Save mario52a/6afc64081c4eb8be3b93 to your computer and use it in GitHub Desktop.
Donne une série de renseignements sur la forme sélectionnée et peut afficher une conversion de la longueur, de l'inclinaison de la forme (degrés, radian, grade, pourcent), de la surface, du volume et du poids de la forme dans la densité sélectionnée dans différentes unités de grandeurs internationales et anglo-saxonnes. (Version Française)
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
"""
***************************************************************************
* Copyright (c) <mario52> 2014 2015 2016 2017 2018 2019 2020 2021 2022 *
* 2023 *
* This file is a supplement to the FreeCAD CAx development system. *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU Lesser General Public License (LGPL) *
* as published by the Free Software Foundation; either version 2 of *
* the License, or (at your option) any later version. *
* for detail see the LICENCE text file. *
** **
* Use at your own risk. The author assumes no liability for data loss. *
* It is advised to backup your data frequently. *
* If you do not trust the software do not use it. *
** **
* This software is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU Library General Public License for more details. *
* *
* You should have received a copy of the GNU Library General Public *
* License along with this macro; if not, write to the Free Software *
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
* USA *
***************************************************************************
* WARNING! All changes in this file will be lost and *
* may cause malfunction of the program *
***************************************************************************
"""
# FCInfo.FCMacro fr
# https://fr.wikipedia.org/wiki/Kilogramme
# Select an object or launch the application and select an object, and a series of information appear.
# Calculations FreeCAD unit, which is the mm on each new selection, the unit of length-based his return still on mm and decimal degrees angle.
# Always leave by the "Exit" button if it exits the program without going through the button "Exit" the program remains in memory and continues to run.
# Should leave FreeCAD to erase memory.
# Only the first 200 objects are visible in the table if there are more than 200 items in the object a signal will be displayed by '(!+ 200),
# The complete list of data is visible in the backup file
#
# 05_01 01/14 Docked PyQt4 + PySide 19/12/2015 suppression de PyQt4 21/06/2017 ajout style 8 points et nouveau path
# 12/12/2017 upgrade de la section Matrix of inertia de "pinq" voir "https://forum.freecadweb.org/viewtopic.php?f=22&t=23888"
# other: Momentof Interia - FCInfo macro: https://forum.freecad.org/viewtopic.php?t=64653
# ajout de Plans, Axes, Points et optimisation
# 16/04/2019 upgrade pour 0.17.13541 (Git), 0.18.16093 (Git), 0.19.16474 (Git)Qt: 5.6.2 Python: 3.6.6 OCC: 7.3.0
# 30/05/2019 ver "01.21-rmu" rmu change fixed positions to qt layouts grid.addWidget() by rmu75 see the rmu75 fork "https://gist.github.com/rmu75/b165147bd1c2f2659c014103793ae1d8"
# 07/11/2019 ver "01.21-3-rmu" replace character micro = "U", square = "2", cube = "3", degrees = " deg" see "https://forum.freecadweb.org/viewtopic.php?f=3&t=6005&start=70#p345819"
# 12/11/2020 ver "01.22-rmu" replace self window(hide) by "self.window.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)"
# 18/11/2021 ver "01.23 rmu" ajout icones, RB clipBoard, Decimal, Hauteur texte, compatible Sketcher editeur ouvert
# 25/11/2021 ver "01.23cb rmu" delete "import Sketcher * " create conflict with open(OpenName, "r") ??
# 02/12/2021 ver "01.24 rmu" add adjustedGlobalPlacement(,), boundbox tracing
# 10/12/2021 ver "01.25 rmu" PySide2 and add comboBox materials
# 11/12/2021 ver "01.25b, 12/12/2021 ver "01.25c, 13/12/2021 ver "01.25d, 2021/12/27 ver "1.25e"
# 2022/02/06 ver "1.26" Mesh, Points, Couleurs, 2022/02/20 ver 1.26b upgrade BSPline, 2022/04/19 ver 1.26c upgrade BSpline error with Gear Bspline=Line
# 2023/06/24 ver "1.27" optimize styleSheet and litle bug
# 2023/09/01 ver "1.28" modify variable name, possibility hidden each sector, save data spreadSheet in document, surface radius, add button webWiki and webForum
#
#OS: Windows 10 build 19045
#Word size of FreeCAD: 64-bit
#Version: 0.22.0dev.33981 (Git)
#Build type: Release
#Branch: master
#Hash: 5a153e50ffb6046b6cc4dba498344032f6edb952
#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)
#
__Title__ = "FCInfo"
__Author__ = "Mario52"
__Url__ = "https://gist.github.com/mario52a/8d40ab6c018c2bde678f"
__Version__ = "1.28c"
__Date__ = "2023/10/30" #YYY/MM/DD
__Comment__ = "gives different information about the selected object with the possibility of saving information"
__Forum1__ = "http://forum.freecadweb.org/viewtopic.php?f=10&t=3185"
__Forum2__ = "https://forum.freecadweb.org/viewtopic.php?f=3&t=6005"
__Wiki__ = "https://www.freecadweb.org/wiki/Macro_FCInfo"
__Gist__ = "https://gist.github.com/mario52a/6afc64081c4eb8be3b93"
__IconL__ = ""
__IconW__ = ""
__Help__ = "Start the macro select an object and read the info displayed"
__Status__ = "stable"
__Requires__ = "freecad 0.18 and more"
__Communication__ = "http://forum.freecadweb.org/viewtopic.php?f=10&t=3185"
#
import PySide2
from PySide2 import QtGui , QtCore, QtWidgets
from PySide2.QtWidgets import QComboBox
from PySide2.QtWidgets import QMessageBox
from PySide2.QtWidgets import QTableWidget, QApplication
from PySide2.QtGui import *
from PySide2.QtCore import *
from PySide2.QtWidgets import *
#import PySide2.QtXml
import os
import platform
import Draft, Part, FreeCAD, PartGui, FreeCADGui
import FreeCAD as App
import FreeCADGui as Gui
from FreeCAD import Base
import Sketcher
import Points
import Mesh
import pivy
from pivy import coin
import Spreadsheet
import math
import decimal
from math import sqrt, pi, sin, cos, asin, acos, atan, atan2, degrees, radians, tan
import csv
import codecs
import sys
import copy # pour copier 2 tableaux
import re
####path#########################################################################
global path ; path = "" #
#path = FreeCAD.ConfigGet(u"AppHomePath") # path FreeCAD installation
#path = FreeCAD.ConfigGet(u"UserAppData") # path FreeCAD User data
#path = "your path" # your directory path
param = FreeCAD.ParamGet(u"User parameter:BaseApp/Preferences/Macro")# macro path
path = param.GetString(u"MacroPath","") + "/" # macro path
path = path.replace(u"\\","/") # convert the "\" to "/"
#print( u"Path for the icons : " , path ) #
#################################################################################
import WebGui
import webbrowser
#### Detect version macro ########################################### #22/03/2021
import urllib
from urllib import request
#### Detect version macro ########################################### #22/03/2021
def versionSearch():
try:
contentPage = request.urlopen(u"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 = (u"New version availlable : " + "\n" +
str(versionDetect) + ":" + str(dateDetect) + "\n" +
"You can install with AddonManager" + "\n" +
"For desactivate this Info window go to " + "\n" +
"parameter:BaseApp/Preferences/Macros/FCMmacros/FCInfo " + "\n" +
"set the [ switchVersionSearch ] parameter to False")
App.Console.PrintMessage(u"your actual version : " + str(__Version__) + " : " + str(__Date__) + "\n")
App.Console.PrintMessage(u"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) # PySide2 cette fonction met la fenetre en avant
diag.exec_()
except Exception:
None
return versionDetect, dateDetect
except Exception:
App_Console_PrintError(u"Not search version not connected for testing or internal error" + "\n")
global FreeCAD_ParamGetSet ; FreeCAD_ParamGetSet = FreeCAD.ParamGet(u"User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__) # FreeCAD_ParamGetSet
global switchVersionSearch; switchVersionSearch = 0 # Search version switchable in
# Tools/Edit parameter/BaseApp/Preferences/Macros/FCMmacros/FCCircularText
switchVersionSearch = FreeCAD_ParamGetSet.GetBool(u"switchVersionSearch")
FreeCAD_ParamGetSet.SetBool(u"switchVersionSearch", switchVersionSearch) #*True or False
if switchVersionSearch == 1:
versionSearch()
#### Detect version macro ###########################################
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtWidgets.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtWidgets.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtWidgets.QApplication.translate(context, text, disambig)
####################################################################################
def iso8859(encoder):
# ori 0.18 Py 27 return unicode(encoder).encode('iso-8859-1')
verPython = sys.version_info
if int(verPython.major) < 3:
return unicode(encoder).encode('iso-8859-1')
else:
encoder = str(encoder)
return encoder
def utf8(unio):
return unicode(unio).encode('UTF8')
def heure():
return QtCore.QTime().currentTime().toString('hh:mm:ss')
def dateEu():
return QtCore.QDate().currentDate().toString('dd/MM/yyyy') # forme euro
def dateUs():
return QtCore.QDate().currentDate().toString('MM/dd/yyyy') # forme us
def dateUk():
return QtCore.QDate().currentDate().toString('yyyy/MM/dd') # forme Uk
def dateComp():
return QtCore.QDate().currentDate().toString('dddd d MMMM yyyy') # Return "dimanche 20 Juillet 2013"
def Around(a) :
global seTDecimalValue
if seTDecimalValue == -1:
seTDecimalValue = 1000
ard = round(a, seTDecimalValue)
return ard
global uniteAs ; uniteAs = " deg" # HTML: &deg
def degMinSec(angle0):
# give the angle in degrees
global uniteAs
try:
deg = int(angle0)
min = int((angle0 - deg)*60)
sec = Around((((angle0 - deg)*60)-min)*60)
angle = str(deg)+" deg"+" "+str(min)+u"' "+str(sec)+u"''"
uniteAs = ""
return angle
except Exception:
return 0
def angleGrade(angle0):
# give the angle in degrees
global uniteAs
try:
angle = float(angle0)
angle = (200.0 * angle) / 180.0
uniteAs = " gon"
#return round(angle,6)
return angle
except Exception:
return 0
def anglePourcent(angle0):
# give the angle in degrees
global uniteAs
#angle0 = round(abs(angle0))
angle0 = abs(angle0)
if (angle0 == 90):
return 0.0
else:
try:
if angle0 in range(90 ,181): angle0 = 180 - angle0
if angle0 in range(180,271): angle0 = angle0 - 180
if angle0 in range(270,361): angle0 = 360 - angle0
#angle = abs(round((tan(radians(angle0))*100),2))
angle = abs(tan(radians(angle0))*100)
uniteAs = u"%"
#return round(angle,6)
return angle
except Exception:
return 0.0
def angle2(vecteur_x1, vecteur_y1, vecteur_x2, vecteur_y2, modeTypeAngle):
# calculation of the slope of a line using two vectors
# If 'modeTypeAngle' = 1 then display in degrees else in radians
global uniteAs
try:
deltaX = vecteur_x2 - vecteur_x1
deltaY = vecteur_y2 - vecteur_y1
if modeTypeAngle == 1:
angle = degrees(atan2(float(deltaY),float(deltaX))) # degrees
uniteAs = " deg"
else:
angle = atan2(float(deltaY),float(deltaX)) # radian
uniteAs = " rad"
#return round(angle,6)
return angle
except Exception:
return 0
#### Configuration begin ################################################
#### NOT MODIFY THE CODE HERE ####
#### for modify : go to : FreeCAD >Menu >Tools >Edit parameters... >BaseApp/Preferences/Macros/FCMmacros/FCInfo ####
##
FreeCAD_ParamGetSet.SetString(u"Version", __Version__ + " (" + __Date__ + ")")
##
global switchNotInfoOnBeginning # switchNotInfoOnBeginnin = 0 # display or not the inf on beginning run macro False
switchNotInfoOnBeginning = FreeCAD_ParamGetSet.GetBool(u"switchNotInfoOnBeginning")
FreeCAD_ParamGetSet.SetBool(u"switchNotInfoOnBeginning", switchNotInfoOnBeginning) #*True or False
##
global switchWarning # display or not the little window "Warning Error Selection"
switchWarning = FreeCAD_ParamGetSet.GetBool(u"switchWarning")
FreeCAD_ParamGetSet.SetBool(u"switchWarning", switchWarning) #*True or False
#Config
global switchCreatePoint #; switchCreatePoint = 0 # for point False
switchCreatePoint = FreeCAD_ParamGetSet.GetBool(u"switchCreatePoint")
##
global switchCreateAxis #; switchCreateAxis = 1 # for axis True
switchCreateAxis = FreeCAD_ParamGetSet.GetBool(u"switchCreateAxis")
##
global switchCreatePlane #; switchCreatePlane = 1 # for plane True
switchCreatePlane = FreeCAD_ParamGetSet.GetBool(u"switchCreatePlane")
##
global switchDisplayInfoObject #; switchDisplayInfoObject = 0 #
switchDisplayInfoObject = FreeCAD_ParamGetSet.GetBool(u"switchDisplayInfoObject")
FreeCAD_ParamGetSet.SetBool(u"switchDisplayInfoObject", switchDisplayInfoObject) #*True or False
##
global switchDisplayErrorInfo #; switchDisplayErrorInfo = 0 #
switchDisplayErrorInfo = FreeCAD_ParamGetSet.GetBool(u"switchDisplayErrorInfo")
FreeCAD_ParamGetSet.SetBool(u"switchDisplayErrorInfo", switchDisplayErrorInfo) #*True or False
##
global switchClearDisplayReportView #; switchClearDisplayReportView = 0 #
switchClearDisplayReportView = FreeCAD_ParamGetSet.GetBool(u"switchClearDisplayReportView")
FreeCAD_ParamGetSet.SetBool(u"switchClearDisplayReportView", switchClearDisplayReportView) #*True or False
##
global seTWidgetPosition #; seTWidgetPosition = 0 # position the widget Left or Right
seTWidgetPosition = FreeCAD_ParamGetSet.GetBool(u"seTWidgetPosition") # True or False
FreeCAD_ParamGetSet.SetBool(u"seTWidgetPosition", seTWidgetPosition)
##
global switchBoundBoxCreateText #; switchBoundBoxCreateText = 0 #
switchBoundBoxCreateText = FreeCAD_ParamGetSet.GetBool(u"switchBoundBoxCreateText")
##
global seTBoundBoxTextHeigth #; seTBoundBoxTextHeigth = 3.0 #
seTBoundBoxTextHeigth = FreeCAD_ParamGetSet.GetFloat(u"seTBoundBoxTextHeigth")
if seTBoundBoxTextHeigth == 0: seTBoundBoxTextHeigth = 3.0
##
global seTBoundBoxTextArround #; seTBoundBoxTextArround = 3 #
seTBoundBoxTextArround = FreeCAD_ParamGetSet.GetInt(u"seTBoundBoxTextArround")
if seTBoundBoxTextArround == 0: seTBoundBoxTextArround = 3
FreeCAD_ParamGetSet.SetInt(u"seTBoundBoxTextArround", seTBoundBoxTextArround) # 3
##
global seTBoundBoxDisplayModeText #; seTBoundBoxDisplayModeText = str(u"Screen") # available : u"Screen" or u"World"
seTBoundBoxDisplayModeText = FreeCAD_ParamGetSet.GetString(u"seTBoundBoxDisplayModeText")
if seTBoundBoxDisplayModeText == "": seTBoundBoxDisplayModeText = str(u"Screen")
FreeCAD_ParamGetSet.SetString(u"seTBoundBoxDisplayModeText", seTBoundBoxDisplayModeText)
##
global seTBoundBoxJustificationText #; seTBoundBoxJustificationText = str(u"Center") # available : "Center" or "Left" or "Right"
seTBoundBoxJustificationText = FreeCAD_ParamGetSet.GetString(u"seTBoundBoxJustificationText")
if seTBoundBoxJustificationText == "": seTBoundBoxJustificationText = str(u"Center")
FreeCAD_ParamGetSet.SetString(u"seTBoundBoxJustificationText", seTBoundBoxJustificationText)
##
global seTMemoClipBoard #; seTMemoClipBoard = 0 # seT format du memo 0=None ou 1=F...CAD(1,1,1) ou 2=1,1,1 ou 3=1 1 1
seTMemoClipBoard = FreeCAD_ParamGetSet.GetInt(u"seTMemoClipBoard")
##
global seTTextHeigthValue #; seTTextHeigthValue = 11 # heigth Text value
seTTextHeigthValue = FreeCAD_ParamGetSet.GetInt(u"seTTextHeigthValue")
if seTTextHeigthValue == 0: seTTextHeigthValue = 11
##
global seTDecimalValue #; seTDecimalValue = 4 # number of decimal value
seTDecimalValue = FreeCAD_ParamGetSet.GetInt(u"seTDecimalValue")
if seTDecimalValue == 0: seTDecimalValue = 4
##
global seTMaterialCurrentIndex #; seTMaterialCurrentIndex = ? # index materiel
seTMaterialCurrentIndex = FreeCAD_ParamGetSet.GetInt(u"seTMaterialCurrentIndex")
##
global seTMaterialFileName #; seTMaterialFileName = u"FCInfo_material.txt" or other
seTMaterialFileName = FreeCAD_ParamGetSet.GetString(u"seTMaterialFileName")
if seTMaterialFileName == "": seTMaterialFileName = u"FCInfo_material.txt"
FreeCAD_ParamGetSet.SetString(u"seTMaterialFileName", seTMaterialFileName) #*"FCInfo_material.txt"
##
#### new version since 1.25f separate path and name of file more logic 28/01/2022 the parameter/Preferences is not compatible "you must delete the name file and extension in preferences"
global seTMaterialReadPathName #; seTMaterialReadPathName = path
global seTMaterialSavePathName #; seTMaterialSavePathName = path
seTMaterialSavePathName = FreeCAD_ParamGetSet.GetString(u"seTMaterialSavePathName")
if seTMaterialSavePathName == "": seTMaterialSavePathName = path
seTMaterialSavePathName = os.path.dirname(seTMaterialSavePathName) + "/" # = C:/Provisoire400/
seTMaterialReadPathName = seTMaterialSavePathName
FreeCAD_ParamGetSet.SetString(u"seTMaterialSavePathName", seTMaterialSavePathName) #*"C:\...\Macro\"
##
global seTMaterialPrice #; seTMaterialPrice = 1.0 # price
seTMaterialPrice = FreeCAD_ParamGetSet.GetFloat(u"seTMaterialPrice")
if seTMaterialPrice == 0: seTMaterialPrice = 0.0
##
global seTMaterialSuffixDevise #; seTMaterialSuffixDevise = " Eu # Suffix Devise
seTMaterialSuffixDevise = FreeCAD_ParamGetSet.GetString(u"seTMaterialSuffixDevise")
if seTMaterialSuffixDevise == "": seTMaterialSuffixDevise = " Eu (by Kg)"
##
global seTMaterialSuffixCost #; seTMaterialSuffixCost = " Eu # Suffix Cost
seTMaterialSuffixCost = FreeCAD_ParamGetSet.GetString(u"seTMaterialSuffixCost")
if seTMaterialSuffixCost == "": seTMaterialSuffixCost = " Eu"
##
global seTMaterialCost #; seTMaterialCost = 1.0 # (by Kg)
seTMaterialCost = FreeCAD_ParamGetSet.GetFloat(u"seTMaterialCost")
if seTMaterialCost == 0: seTMaterialCost = 1.0
##
global seTDensiteValue #; seTDensiteValue = 1.0 # (steel = 7,32 to 7,86 kg by dm3)
seTDensiteValue = FreeCAD_ParamGetSet.GetFloat(u"seTDensiteValue")
if seTDensiteValue == 0: seTDensiteValue = 1.0
FreeCAD_ParamGetSet.SetFloat(u"seTDensiteValue", seTDensiteValue)
##
global seTDensiteDecimalNumber #; seTDensiteDecimalNumber = 4 # number of decimal value
seTDensiteDecimalNumber = FreeCAD_ParamGetSet.GetInt(u"seTDensiteDecimalNumber")
if seTDensiteDecimalNumber == 0: seTDensiteDecimalNumber = 4
FreeCAD_ParamGetSet.SetInt(u"seTDensiteDecimalNumber", seTDensiteDecimalNumber) #*4
##
global seTDensiteSingleStep #; seTDensiteSingleStep = 1.0 # increse step
seTDensiteSingleStep = FreeCAD_ParamGetSet.GetFloat(u"seTDensiteSingleStep")
if seTDensiteSingleStep == 0: seTDensiteSingleStep = 1.0
FreeCAD_ParamGetSet.SetFloat(u"seTDensiteSingleStep", seTDensiteSingleStep) #*1.0
##
global seTIndexUnitWeight ; seTIndexUnitWeight = 0 # item Poids
#seTIndexUnitWeight = FreeCAD_ParamGetSet.GetInt(u"seTIndexUnitWeight")
##
global seTIndexUnitLength ; seTIndexUnitLength = 0 # item Longueur
#seTIndexUnitLength = FreeCAD_ParamGetSet.GetInt(u"seTIndexUnitLength")
##
global seTPositionFlyRightLeft #; seTPositionFlyRightLeft = 2 # 1 = fly, 2 = RightDock other= LeftDock
seTPositionFlyRightLeft = FreeCAD_ParamGetSet.GetInt(u"seTPositionFlyRightLeft")
if seTPositionFlyRightLeft == 0: seTPositionFlyRightLeft = 2 # 1 , 2, other
##
global seTUnitSymbolMicro #; seTUnitSymbolMicro = u"U" # micro hex="\xB5", html=<span>&#181;</span>
seTUnitSymbolMicro = FreeCAD_ParamGetSet.GetString(u"seTUnitSymbolMicro")
if seTUnitSymbolMicro == "": seTUnitSymbolMicro = "U"
FreeCAD_ParamGetSet.SetString(u"seTUnitSymbolMicro", seTUnitSymbolMicro) #*"U"
##
global seTUnitSymbolCube #; seTUnitSymbolCube = u"3" # cube hex="\xb3", html=<span>&#179;</span>
seTUnitSymbolCube = FreeCAD_ParamGetSet.GetString(u"seTUnitSymbolCube")
if seTUnitSymbolCube == "": seTUnitSymbolCube = "3"
FreeCAD_ParamGetSet.SetString(u"seTUnitSymbolCube", seTUnitSymbolCube) #*"3"
##
global seTDensiteSuffixChain #; seTDensiteSuffixChain = kg # Suffix (by dm3)
seTDensiteSuffixChain = FreeCAD_ParamGetSet.GetString(u"seTDensiteSuffixChain")
if seTDensiteSuffixChain == "": seTDensiteSuffixChain = " kg (by dm)" + seTUnitSymbolCube
FreeCAD_ParamGetSet.SetString(u"seTDensiteSuffixChain", seTDensiteSuffixChain) #*" kg (by dm3)"
##
global seTUnitSymbolCarre #; seTUnitSymbolCarre = u"2" # carre hex="\xb2", html=<span>&#178;</span>
seTUnitSymbolCarre = FreeCAD_ParamGetSet.GetString(u"seTUnitSymbolCarre")
if seTUnitSymbolCarre == "": seTUnitSymbolCarre = "2"
FreeCAD_ParamGetSet.SetString(u"seTUnitSymbolCarre", seTUnitSymbolCarre) #*"2"
##
global switchQFileDialogMint # special LinuxMint
switchQFileDialogMint = FreeCAD_ParamGetSet.GetBool("switchQFileDialogMint")
if switchQFileDialogMint == 0:
FreeCAD_ParamGetSet.SetBool("switchQFileDialogMint", switchQFileDialogMint)
try:
if platform.node() == "mint":
switchQFileDialogMint = 1
FreeCAD_ParamGetSet.SetBool("switchQFileDialogMint", switchQFileDialogMint) #*Special Mint
except Exception:
None
##
global setPathLatestDirectory #; setPathLatestDirectory = "C:\ ???"
setPathLatestDirectory = FreeCAD_ParamGetSet.GetString(u"setPathLatestDirectory")
if setPathLatestDirectory == "": setPathLatestDirectory = path
FreeCAD_ParamGetSet.SetString(u"setPathLatestDirectory", setPathLatestDirectory) #*"C:\ ???"
##
global setBSplineToByArcValue #; setBSplineToByArcValue = 0.00001
setBSplineToByArcValue = FreeCAD_ParamGetSet.GetFloat(u"setBSplineToByArcValue")
if setBSplineToByArcValue == 0.0: setBSplineToByArcValue = 0.00001
FreeCAD_ParamGetSet.SetFloat(u"setBSplineToByArcValue", setBSplineToByArcValue) #*0.00001
global BSplinetoByArcValeurS # string pour afficher en "0.00001" pas en 1.e5
BSplinetoByArcValeurS = str("%.12f" % setBSplineToByArcValue)
BSplinetoByArcValeurS = str(BSplinetoByArcValeurS.rstrip('0'))
##
global setMeshTopologyValue #; setMeshTopologyValue = 0.1
setMeshTopologyValue = FreeCAD_ParamGetSet.GetFloat(u"setMeshTopologyValue")
if setMeshTopologyValue == 0.0: setMeshTopologyValue = 0.1
FreeCAD_ParamGetSet.SetFloat(u"setMeshTopologyValue", setMeshTopologyValue) #*0.1
##
global switchBSplineCreateCircleConstructorAxis#; switchBSplineCreateCircleConstructorAxis = 0 # for create points with toByArcs()
switchBSplineCreateCircleConstructorAxis = FreeCAD_ParamGetSet.GetBool(u"switchBSplineCreateCircleConstructorAxis")
FreeCAD_ParamGetSet.SetBool(u"switchBSplineCreateCircleConstructorAxis", switchBSplineCreateCircleConstructorAxis)#*True or False
##
global switchBSplineCreateCircleConstructor #; switchBSplineCreateCircleConstructor = 0 # for create circles with toByArcs()
switchBSplineCreateCircleConstructor = FreeCAD_ParamGetSet.GetBool(u"switchBSplineCreateCircleConstructor")
FreeCAD_ParamGetSet.SetBool(u"switchBSplineCreateCircleConstructor", switchBSplineCreateCircleConstructor) #*True or False
##
global switchCreateLineDiVatNatOnClick #; switchCreateLineDiVatNatOnClick = 0 # for position line on click mouse
switchCreateLineDiVatNatOnClick = FreeCAD_ParamGetSet.GetBool(u"switchCreateLineDiVatNatOnClick")
FreeCAD_ParamGetSet.SetBool(u"switchCreateLineDiVatNatOnClick", switchCreateLineDiVatNatOnClick) #*True or False
####
#### section GroupBox begin
global switch_setVisible_GBox_001_Document # switch_setVisible_GBox_001_Document = True (1)
switch_setVisible_GBox_001_Document = FreeCAD_ParamGetSet.GetBool(u"switch_setVisible_GBox_001_Document", True)
FreeCAD_ParamGetSet.SetBool(u"switch_setVisible_GBox_001_Document", switch_setVisible_GBox_001_Document) # *True or False
global switch_setVisible_GBox_002_Coordinate_Mouse # switch_setVisible_GBox_002_Coordinate_Mouse = True (1)
switch_setVisible_GBox_002_Coordinate_Mouse = FreeCAD_ParamGetSet.GetBool(u"switch_setVisible_GBox_002_Coordinate_Mouse", True)
FreeCAD_ParamGetSet.SetBool(u"switch_setVisible_GBox_002_Coordinate_Mouse", switch_setVisible_GBox_002_Coordinate_Mouse) # *True or False
global switch_setVisible_GBox_003_Color # switch_setVisible_GBox_003_Color = True (1)
switch_setVisible_GBox_003_Color = FreeCAD_ParamGetSet.GetBool(u"switch_setVisible_GBox_003_Color", True)
FreeCAD_ParamGetSet.SetBool(u"switch_setVisible_GBox_003_Color", switch_setVisible_GBox_003_Color) # *True or False
global switch_setVisible_GBox_004_Object_Mesh # switch_setVisible_GBox_004_Object_Mesh = True (1)
switch_setVisible_GBox_004_Object_Mesh = FreeCAD_ParamGetSet.GetBool(u"switch_setVisible_GBox_004_Object_Mesh", True)
FreeCAD_ParamGetSet.SetBool(u"switch_setVisible_GBox_004_Object_Mesh", switch_setVisible_GBox_004_Object_Mesh) # *True or False
global switch_setVisible_GBox_005_Value_Unit # switch_setVisible_GBox_005_Value_Unit = True (1)
switch_setVisible_GBox_005_Value_Unit = FreeCAD_ParamGetSet.GetBool(u"switch_setVisible_GBox_005_Value_Unit", True)
FreeCAD_ParamGetSet.SetBool(u"switch_setVisible_GBox_005_Value_Unit", switch_setVisible_GBox_005_Value_Unit) # *True or False
global switch_setVisible_GBox_006_Inclination # switch_setVisible_GBox_006_Inclination = True (1)
switch_setVisible_GBox_006_Inclination = FreeCAD_ParamGetSet.GetBool(u"switch_setVisible_GBox_006_Inclination", True)
FreeCAD_ParamGetSet.SetBool(u"switch_setVisible_GBox_006_Inclination", switch_setVisible_GBox_006_Inclination) # *True or False
global switch_setVisible_GBox_007_Surface_and_Volume # switch_setVisible_GBox_007_Surface_and_Volume = True (1)
switch_setVisible_GBox_007_Surface_and_Volume = FreeCAD_ParamGetSet.GetBool(u"switch_setVisible_GBox_007_Surface_and_Volume", True)
FreeCAD_ParamGetSet.SetBool(u"switch_setVisible_GBox_007_Surface_and_Volume", switch_setVisible_GBox_007_Surface_and_Volume) # *True or False
global switch_setVisible_GBox_008_Cost_And_Price # switch_setVisible_GBox_008_Cost_And_Price = True (1)
switch_setVisible_GBox_008_Cost_And_Price = FreeCAD_ParamGetSet.GetBool(u"switch_setVisible_GBox_008_Cost_And_Price", True)
FreeCAD_ParamGetSet.SetBool(u"switch_setVisible_GBox_008_Cost_And_Price", switch_setVisible_GBox_008_Cost_And_Price) # *True or False
global switch_setVisible_GBox_009_BoundBox # switch_setVisible_GBox_009_BoundBox = True (1)
switch_setVisible_GBox_009_BoundBox = FreeCAD_ParamGetSet.GetBool(u"switch_setVisible_GBox_009_BoundBox", True)
FreeCAD_ParamGetSet.SetBool(u"switch_setVisible_GBox_009_BoundBox", switch_setVisible_GBox_009_BoundBox) # *True or False
global switch_setVisible_GBox_010_Center_Mass # switch_setVisible_GBox_010_Center_Mass = True (1)
switch_setVisible_GBox_010_Center_Mass = FreeCAD_ParamGetSet.GetBool(u"switch_setVisible_GBox_010_Center_Mass", True)
FreeCAD_ParamGetSet.SetBool(u"switch_setVisible_GBox_010_Center_Mass", switch_setVisible_GBox_010_Center_Mass) # *True or False
global switch_setVisible_GBox_011_Inertia # switch_setVisible_GBox_011_Inertia = True (1)
switch_setVisible_GBox_011_Inertia = FreeCAD_ParamGetSet.GetBool(u"switch_setVisible_GBox_011_Inertia", True)
FreeCAD_ParamGetSet.SetBool(u"switch_setVisible_GBox_011_Inertia", switch_setVisible_GBox_011_Inertia) # *True or False
global switch_setVisible_GBox_012_SpreadSheet # switch_setVisible_GBox_012_SpreadSheet = True (1)
switch_setVisible_GBox_012_SpreadSheet = FreeCAD_ParamGetSet.GetBool(u"switch_setVisible_GBox_012_SpreadSheet", True)
FreeCAD_ParamGetSet.SetBool(u"switch_setVisible_GBox_012_SpreadSheet", switch_setVisible_GBox_012_SpreadSheet) # *True or False
global switch_setVisible_GBox_013_SpreadSheet_Creation # switch_setVisible_GBox_013_SpreadSheet_Creation = True (1)
switch_setVisible_GBox_013_SpreadSheet_Creation = FreeCAD_ParamGetSet.GetBool(u"switch_setVisible_GBox_013_SpreadSheet_Creation", True)
FreeCAD_ParamGetSet.SetBool(u"switch_setVisible_GBox_013_SpreadSheet_Creation", switch_setVisible_GBox_013_SpreadSheet_Creation) # *True or False
global switch_setVisible_GBox_014_Main_Tools # switch_setVisible_GBox_014_Main_Tools = True (1)
switch_setVisible_GBox_014_Main_Tools = FreeCAD_ParamGetSet.GetBool(u"switch_setVisible_GBox_014_Main_Tools", True)
FreeCAD_ParamGetSet.SetBool(u"switch_setVisible_GBox_014_Main_Tools", switch_setVisible_GBox_014_Main_Tools) # *True or False
#### section GroupBox end
####
global switch_Set_Placeholder_Text # switch_Set_Placeholder_Text = True (1)
switch_Set_Placeholder_Text = FreeCAD_ParamGetSet.GetBool(u"switch_Set_Placeholder_Text", True)
FreeCAD_ParamGetSet.SetBool(u"switch_Set_Placeholder_Text", switch_Set_Placeholder_Text) # *True or False
#### Configuration end ################################################
##
####tools after in FreeCAD.ParamGet###########################################################
##
global ui ; ui = "" # QtWidgets.QMainWindow()
global FCmw ; FCmw = "" # Docked RightDock LeftDock
global myNewFreeCADWidget; myNewFreeCADWidget = ""
##
####tools after in FreeCAD.ParamGet###########################################################
#
def App_Console_PrintMessage(textInfo):
global switchDisplayInfoObject
if switchDisplayInfoObject == 1 :
App.Console.PrintMessage(textInfo)
def App_Console_PrintError(textInfo):
global switchDisplayErrorInfo
if switchDisplayErrorInfo == 1 :
App.Console.PrintMessage(textInfo)
def errorDialog(msg):
global switchWarning
if switchWarning == 0:
None
else:
diag = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Critical,"Error Message",msg )
diag.setWindowFlags(PySide2.QtCore.Qt.WindowStaysOnTopHint) # PySide2 #cette fonction met la fenetre en avant
#diag.setWindowModality(QtCore.Qt.ApplicationModal) # la fonction a ete desactivee pour favoriser "WindowStaysOnTopHint"
diag.exec_()
global sel ; sel = u""
global document_ ; document_ = u"FCInfo"
global object_Label ; object_Label = u""
global object_Name ; object_Name = u""
global typeObject ; typeObject = u"" # ShapeType : Compound
global object_Type ; object_Type = u"" # Part::Feature
global subElemName ; subElemName = u""
global RotationToEuler; RotationToEuler = u""
global position0 ; position0 = 0.0
global position1 ; position1 = 0.0
global position2 ; position2 = 0.0
global diffuseColorRF ; diffuseColorRF = 0.0 # color face Red Float 0.0 a 1.0
global diffuseColorVF ; diffuseColorVF = 0.0 # color face Vert/Green Float 0.0 a 1.0
global diffuseColorBF ; diffuseColorBF = 0.0 # color face Blue Float 0.0 a 1.0
global diffuseColorTF ; diffuseColorTF = 0.0 # color face Transparent Float 0.0 a 1.0
global transparenceFace ; transparenceFace = 0 # taux de transparence de fa face 0 a 100 Int
global unsignedEncodeColor; unsignedEncodeColor = "" # resultat format 25144423565 unsigned FC
global cols ; cols = []
global colorShapeFace ; colorShapeFace = []
global colorShapeLine ; colorShapeLine = []
global colorShapePoint ; colorShapePoint = []
global colorShapeFaceDiffuseColor; colorShapeFaceDiffuseColor = []
global longueurObjet ; longueurObjet = 0.0
global rayonObjet ; rayonObjet = 0.0
global perimetre ; perimetre = 0.0
global numberEdges ; numberEdges = 0
global typeLongueur ; typeLongueur = u"Longueur de l'objet "
global nombreArretesMesh; nombreArretesMesh = 0
global nombreFacesMesh ; nombreFacesMesh = 0
global nombrePointsMesh ; nombrePointsMesh = 0
global Plan_xy ; Plan_xy = 0.0
global Plan_xy_V ; Plan_xy_V = u""
global Plan_yz ; Plan_yz = 0.0
global Plan_yz_V ; Plan_yz_V = u""
global Plan_zx ; Plan_zx = 0.0
global Plan_zx_V ; Plan_zx_V = u""
global surface ; surface = 0.0
global surfaceFace ; surfaceFace = 0.0
global volume_ ; volume_ = 0.0
global poids ; poids = 0.0
global uniteM ; uniteM = 1.0 # unit of measurement length
global uniteMs ; uniteMs = u"mm" # micro hex="\xB5", html=<span>&#181;</span>
global uniteS ; uniteS = 1.0 # unit of measurement surface
global uniteSs ; uniteSs = u"mm"+seTUnitSymbolCarre # carre hex="\xb2", html=<span>&#178;</span>
global uniteV ; uniteV = 1.0 # unit of measurement volume
global uniteVs ; uniteVs = u"mm"+seTUnitSymbolCube # cube hex="\xb3", html=<span>&#179;</span>
global uniteP ; uniteP = 1.0 # unit of measure Mass
global unitePs ; unitePs = u"g"
#global uniteAs ; uniteAs = " deg" #place plus haut
global boundBox_ ; boundBox_ = 0.0
global boundBoxLX ; boundBoxLX = 0.0
global boundBoxLY ; boundBoxLY = 0.0
global boundBoxLZ ; boundBoxLZ = 0.0
global boundBox_S ; boundBox_S = u""
global BDvol ; BDvol = FreeCAD.Placement()
global switchBoundBoxCreateVolume ; switchBoundBoxCreateVolume = 0 # 1 = create Volume
global adaptWithBody ; adaptWithBody = 1 # 1 = adaptWithBody passe par adjustedGlobalPlacement() / 0 = mode normal
## Verify this section by person knowing the inertia position ##
## ONLY IF THE OBJECT IS PRESENT IN ONE BODY ##
## and post your knowledges in the forum tread if it is not correct ##
## http://forum.freecadweb.org/viewtopic.php?f=10&t=3185 ##
global boundBoxCenterX ; boundBoxCenterX = 0.0
global boundBoxCenterY ; boundBoxCenterY = 0.0
global boundBoxCenterZ ; boundBoxCenterZ = 0.0
global boundBoxXMin ; boundBoxXMin = 0.0
global boundBoxYMin ; boundBoxYMin = 0.0
global boundBoxZMin ; boundBoxZMin = 0.0
global boundBoxCenter; boundBoxCenter= 0.0
global boundBoxDiag ; boundBoxDiag = 0.0
global CenterOfMassX ; CenterOfMassX = 0.0
global CenterOfMassY ; CenterOfMassY = 0.0
global CenterOfMassZ ; CenterOfMassZ = 0.0
global MatrixX1 ; MatrixX1 = 0.0
global MatrixY1 ; MatrixY1 = 0.0
global MatrixZ1 ; MatrixZ1 = 0.0
global Matrix_1 ; Matrix_1 = 0.0
global MatrixX2 ; MatrixX2 = 0.0
global MatrixY2 ; MatrixY2 = 0.0
global MatrixZ2 ; MatrixZ2 = 0.0
global Matrix_2 ; Matrix_2 = 0.0
global MatrixX3 ; MatrixX3 = 0.0
global MatrixY3 ; MatrixY3 = 0.0
global MatrixZ3 ; MatrixZ3 = 0.0
global Matrix_3 ; Matrix_3 = 0.0
global Matrix12 ; Matrix12 = 0.0
global Matrix13 ; Matrix13 = 0.0
global Matrix14 ; Matrix14 = 0.0
global Matrix15 ; Matrix15 = 0.0
global MatrixX1_16 ; MatrixX1_16 = 0.0
global MatrixY1_16 ; MatrixY1_16 = 0.0
global MatrixZ1_16 ; MatrixZ1_16 = 0.0
global MatrixX2_16 ; MatrixX2_16 = 0.0
global MatrixY2_16 ; MatrixY2_16 = 0.0
global MatrixZ2_16 ; MatrixZ2_16 = 0.0
global MatrixX3_16 ; MatrixX3_16 = 0.0
global MatrixY3_16 ; MatrixY3_16 = 0.0
global MatrixZ3_16 ; MatrixZ3_16 = 0.0
global MatrixX1_17 ; MatrixX1_17 = 0.0
global MatrixY1_17 ; MatrixY1_17 = 0.0
global MatrixZ1_17 ; MatrixZ1_17 = 0.0
global MatrixX2_17 ; MatrixX2_17 = 0.0
global MatrixY2_17 ; MatrixY2_17 = 0.0
global MatrixZ2_17 ; MatrixZ2_17 = 0.0
global MatrixX3_17 ; MatrixX3_17 = 0.0
global MatrixY3_17 ; MatrixY3_17 = 0.0
global MatrixZ3_17 ; MatrixZ3_17 = 0.0
global DeterminantM ; DeterminantM = 0.0
global refreshMatrix ; refreshMatrix = 1
global Vertx ; Vertx = u""
global Edges ; Edges = u""
global ReperEdge ; ReperEdge = 0
global EdgesLong ; EdgesLong = 0.0
global Faces ; Faces = u""
global FacesSurf ; FacesSurf = 0.0
global FacesCoor ; FacesCoor = 0.0
global compt_E ; compt_E = 0
global compt_F ; compt_F = 0
global compt_VF ; compt_VF = 0
global placement_ ; placement_ = u""
global RowCount ; RowCount = 200
global RowCountTest ; RowCountTest = 0
global SaveName ; SaveName = u""
global ESCAPE ; ESCAPE = u"\t" # tabulation SpreadSheet separation
global angleX1 ; angleX1 = 0.0
global angleY1 ; angleY1 = 0.0
global angleZ1 ; angleZ1 = 0.0
global angleX2 ; angleX2 = 0.0
global angleY2 ; angleY2 = 0.0
global angleZ2 ; angleZ2 = 0.0
global directionObj ; directionObj = "[]"
global direcValueAt ; direcValueAt = "[]"
global direcNormalAt ; direcNormalAt = "[]"
global typeNormalAt ;
if switchCreateLineDiVatNatOnClick == 0:
typeNormalAt = u"NormalAt(0,0)"
else:
typeNormalAt = u"*NormalAt(0,0)"
global switchInertia ; switchInertia = 0 # 0 = pass / 1 = stop for create plane without refresh
global BsplineDetect ; BsplineDetect = u""
global BsplinePointsCoor ; BsplinePointsCoor = []
global BsplineNombreDeNoeuds ; BsplineNombreDeNoeuds = 0
global BsplineArcsRadius ; BsplineArcsRadius = []
global BsplineArcsLocation ; BsplineArcsLocation = []
global BsplineRayonApproximatif; BsplineRayonApproximatif = u""
global BsplineCercleToolTip ; BsplineCercleToolTip = u"Bspline détecté "
global BsplineNumberElement ; BsplineNumberElement = 0
global BsplineCutLength ; BsplineCutLength = 0.0
global detected ; detected = u""
global newSpreadSheetName ; newSpreadSheetName = "FCSpreadSheet"
global TextColorText_R ; TextColorText_R = 0.627451 # color red 1 = 255
global TextColorText_G ; TextColorText_G = 0.627451 # color green 1 = 255
global TextColorText_B ; TextColorText_B = 0.643137 # color blue 1 = 255
global TextColorText_L ; TextColorText_L = 1.000000 # transparency 1 = 255
##################################################################################
Macro_FCInfo_01 = [
" 24 24 8 1",
"` c #a90d0e",
". c #a39697",
"# c #875e5e",
" c None",
"b c #e10c0d",
"c c #ed5f60",
"d c #e1a1a1",
"e c #8d3130",
" ",
" d.ccccdd ",
" .ebbccccce#d ",
" #bbbcd dcbb`. ",
" ebbbbc cbbbb# ",
" #bbbbbd ccbbbb. ",
" .bbbccbd cddcbbe ",
" ebbc cc d dbbb# ",
" d`bbd cc cd cbbe ",
" .bbbd dbc cc dbb`d ",
" cbbc cbc bbd dbbbd ",
" ebbc cbbd cbbd dbbbd ",
" ebbc cbbbccbbbd dbbbd ",
" #bbbd dbbbbbbbbd cbb`d ",
" .bbbd cbbbbbbd cbb` ",
" d`bbc dcbbbbd dbbb# ",
" #bbbc dddd dcbb`. ",
" d`bbbcd ddcbbb# ",
" .`b`bbcddddcbbbbed ",
" #`b```bbbb``bbe. ",
" .ebbbbbbbbb`#d ",
" d#e`````e#. ",
" ddddd ",
" "]
Macro_FCInfo_02 = [
" 24 23 8 1",
"` c #4478b4",
". c #a4c0de",
"# c #7b9ac1",
" c None",
"b c #c8d0db",
"c c #6391c5",
"d c #89aad1",
"e c #5b80ad",
" bdd##ddb ",
" ddbbbbb.d#d b# ",
" d.bbbbb...b.#. bcd ",
" ..b..dd.bb....dc#.d ",
" #bc``dbbd#..ddddddd ",
" #e`` dcdd###dd ",
" .ecd# ddd##dd ",
" b`b.. ddd##dd ",
" bd bdddddd. ",
" b b`#c###c. ",
" cd###ded b ",
" .b...bd d ",
" d.d..c b# ",
" d....c b #c ",
" d.dd..cdb . d`. ",
" d...d###ee##ce#ee` ",
" ...cddccc###cceecce ",
" d.#b#cd#ccccccccceb ",
" #ebbb.ec##cccccce. ",
" bb bbbb.#eeeeee#b b ",
" bbbbbbbbb.bb b ",
" bbbbb ",
" "]
Macro_FCInfo_03 = [
" 24 24 8 1",
"` c #293444",
". c #619ee5",
"# c #366ab3",
"a c #6f7885",
"b c #b7b8b8",
"c c #ecedec",
"d c #344861",
"e c #919aa2",
"bccbccbcbbaaecccbccbcbcc",
"ecbebbebd#aaaddcbcbebeec",
"bcbbbbbd.#.b..aabcbbbbbc",
"ebcacbda.a#a...adbbaceec",
"ccccce`abce#a..e#bcccccc",
"bccbcaacbcced...#ecbcbcc",
"aaadaaaadaad`a.#.ddaaecc",
"aabbbbeaaaaa`#.#.ddadacc",
"aecbbcbaa``#d.##..#d`acc",
"beccccb`ead..#####.adbcc",
"e```````da#d#ddd`d#`dacc",
"aacbbbedabbd##``##deeacc",
"aacebbedabba`##d#dabbacc",
"aebebbedabbee`#.dabeeabc",
"b`ddddd``````d`````d`ecc",
"aaeaeea`deeabaadaeeaaacc",
"aabbbcedebbecbbbeeebeacc",
"aabeebedeebebbbeeeeeeabc",
"e````d````d`d`d``````abc",
"baeeeea`aeeeeeeeeeeeaecc",
"aecbcbbdacbecbbcebbbbacc",
"aacbccedacbbbbbbbbcbbacc",
"aaaaaaaddaaaaaaaaaaaaabc",
"bccbccbcbccbccccbccbcbbc"]
Macro_FCInfo_04 = [
" 24 24 8 1",
"` c #2e383f",
". c #7a9abf",
"# c #4870a2",
"a c #7a8592",
" c None",
"c c #adb0b1",
"d c #425264",
"e c #5b89c3",
" ca ",
" .dacc ",
" cad.c . ",
" adac ca` ",
" cd`c cddacc ",
" adacdc caddac . ",
" ccac adddac cadc ",
" caac cad`a .ddaca ",
" caadddac#. cadd. c ",
" caada .`ddac cada ",
" .aa#a cad`a c.ddac. ",
" c#dd`d`d.ddcca``#.c cc",
" cd#.....e..eee...aaac ",
" .de.eeee.e.eeeee... ",
" ad..eeeeeeeeeeeeeec ",
" .d......e.....eeeec ",
" ad............eeeec ",
" ad.....eeeeeeeeeeec ",
" #deeeee#########ee. ",
" #d################. ",
" dd##############e#c ",
" #deeeeeeeeeeeeeeedc ",
" d`ddddddddddddddd#c ",
" aaaaaaaaaaaaaaaaaac "]
Macro_FCInfo_05 = [
" 24 24 8 1",
"` c None",
". c #280000",
"# c #8ae234",
"a c #729fcf",
"b c #2a1018",
"c c #c8a9a7",
"d c #ef2929",
"e c #000000",
" . ",
" ... ",
" .#. ",
" ... .#. ",
" .aa. ..#.. ",
" .aaa... .###. ",
" .aaaa.. .###. ",
" .aaaa. ..#.. ",
" .aaaa. .#. ",
" ..aaaa. .#. ",
" ...aaa. .#. ",
" .aab....#...",
" .bacccc#ccc",
" .acccc#ccc",
" .caccc#ccc",
" .ccacc#ccc",
" .ccacc#ccc",
" .cccac#ccc",
" .... .cccca#ccc",
" ....dd........cccca#ccc",
"..ddddddddddddddddddaddd",
" ....dd........ccccc#acc",
" .... .ccccc#acc",
" .ccccc#cac"]
Macro_FCInfo_06 = [
" 24 24 8 1",
"` c #2c0204",
". c #749ecc",
"# c #ccaaa4",
"a c #0dfa0d",
"b c #8ce234",
"c c #ec2a2c",
" c None",
"e c #fcfefc",
" ` ",
" `````` ``` ",
" ```aaaa``` `b` ",
" ```aaaaaaaa``` `b` ",
" `aaaaaaaaaaaa` ``b`` ",
" ``aaaaaaaaaaaa```bbb` ",
" `aaaaaaaaaaaaea``bbb` ",
" ``aaaaaaaaaaaeea```b`` ",
" `aaaaaaaaaaaeeeaa``b` ",
" `aaaeeaaaaaeeeeaa``b` ",
" `aaaeeeaaaeeeeaaa``b` ",
" `aaaeeeeaeeeeaaaa``b```",
" ``aaaeeeeeeeaaaa``#b###",
" `aaaaeeeeeaaaaa`##b###",
" ``aaaaeeeaaaaa``##b###",
" `aaaaaeaaaaaa`.##b###",
" ```aaaaaaaa```.##b###",
" ```aaaa```###.#b###",
" ````````` `####.b###",
" ````cc````````####.b###",
"``cccccccccccccccccc.ccc",
" ````cc````````#####b.##",
" ```` `#####b.##",
" `#####b#.#"]
Macro_FCInfo_07 = [
" 24 24 8 1",
" c None",
". c #280000",
"# c #ef2929",
"a c #8ae234",
"b c #ffffff",
"c c #c8a9a7",
"d c #729fcf",
"e c #000000",
" . ",
" ......... ... ",
" ..#######.. .a. ",
" ..#########.. .a. ",
" ..###########.. ..a.. ",
" ..##bb#####bb##...aaa. ",
" .###bbb###bbb###..aaa. ",
" .####bbb#bbb####...a.. ",
" .#####bbbbb#####. .a. ",
" .######bbb######. .a. ",
" .#####bbbbb#####. .a. ",
" .####bbb#bbb####...a...",
" .###bbb###bbb###.ccaccc",
" ..##bb#####bb##..ccaccc",
" ..###########..cccaccc",
" ..#########..cdccaccc",
" ..#######..ccdccaccc",
" ..........cccdcaccc",
" .... .ccccdaccc",
" ....##........ccccdaccc",
"..##################d###",
" ....##........cccccadcc",
" .... .cccccadcc",
" .cccccacdc"]
Macro_FCInfo_08 = [
"21 24 8 1",
"` c #fc0507",
". c #fc9494",
"# c #fc4c4b",
"a c #fcd1d0",
" c None",
"c c #fcb9b9",
"d c #fc3433",
"e c #fc6f6f",
" a````e.a ",
" c```dd````d.aa ",
" e`dd` a.#````d",
" d`# e` c```",
" a``e e` c```",
" .``a e` a`d``",
"e``e e` a`` #`",
"``````e.#` a`` d`",
"`da.ed`````#.a#`a #`",
"`# ad`d````c #`",
"`# e` a`d #`",
"`# e` d` #`",
"`# e`c d` #`",
"`# e``````` #`",
"`# #`#ac#````#c #`",
"`# ``e d`d`````",
"`# a``c d` ce``",
"`#c``a d` a``",
"```d d` a`` ",
"```c d` a`` ",
"c````ea dda`` ",
" ce````dc #```a ",
" a.d```d.d``a ",
" .`````a "]
Macro_FCInfo_09 = [
" 24 24 8 1",
"` c #b7201c",
". c #cba938",
"# c #e1cb42",
"a c #d6d1bd",
"b c #f4e256",
"c c #b7752b",
"d c #c7b295",
" c None",
" dda ",
" a.c.a ",
" dcdcd ",
" a.cc. ",
" dccca ",
" a.ccc a ",
" accc## ",
" d.bbbca ",
" b#bbac`` ",
" a#.c`c`.a ",
" d```cbbb. ",
" d``.bbbb## ",
" d#bbbb####a ",
" #bbbb####b# ",
" ##bbb###.#ab ",
" .b#####.####ab ",
" a##########.ba ",
" a#.#####.####a ",
" aaadb.###.b.#daaa ",
" a aaa#.#.#b..ddaaaa ",
" aaaddb###ddddaaaa ",
" aaadadadaaaaa ",
" a aa a a ",
" "]
Macro_FCInfo_10 = [
" 24 24 8 1",
"` c #486ea4",
". c #b8babd",
"# c #868e98",
"a c #dfdfe1",
"b c #9da5b1",
"c c #6687b4",
"d c #d0d2d2",
" c None",
" aaa ",
" .bcc#bb ",
" .cbbbbbcc ",
" accccbbbbcb ",
" cc.adccbcbca ",
" aca cbcbcb ",
" d.b####ccccb`####. ",
" aa.a...bcccb`b....a ",
" dda#ccbbcccbbc`d.d ",
" #aaacccccc``cc.aa# ",
" d.aa dcc````cc.aaabd ",
" #a aaad`c``c`bddadd# ",
" ab daada.`c`ccdddaaa#a ",
" .aaaaadddbccc.ddddddd. ",
" .aadadaaddb`..dddddddb ",
"a.a adaddadaddadddda d.a",
"a.aaaaaaadadadadadadddba",
"a.d...........b.b.bbb.#a",
"a...##bbb.bbbb.b..bb.b#a",
"a...##bbbb.b.b.bb.bb.b#a",
"a.....bb.bb.bb.bb.bb.b#a",
"abddddd.d........bbbbb#a",
" .b###################. ",
" addddddaddddddddaaa "]
Macro_FCInfo_11 = [
" 24 24 8 1",
"` c #040204",
". c #749ecc",
"# c #ec2a2c",
"a c #244a84",
"b c #fcea4c",
" c None",
"d c #040234",
"e c #040644",
" ",
" ",
" ```````` ",
" ```.....```````` ",
" ```...........```` ",
" ````````.....de`aa` ",
" `.....````````aaaa` ",
" `............`aaaa` ",
" `....bbb.....`aaaa` ",
" `...bbbbb....`aaaa` ",
" `...b``bb....`aaa`` ",
" ``...```bb...``aaa`` ",
" ``..``#`b....``aaa` ",
" `..``##`.....`aaaa` ",
" `.``###`.....`aaaa` ",
" ```####`.....`aaaa` ",
" ``#####`.....`aaaa` ",
" ``######`.....`aaa`` ",
" ```#####`.....`a``` ",
" `#####````..``` ",
" `###`#` ````` ",
" `##```` ",
" ```` ",
" "]
Macro_FCInfo_12 = [
" 24 24 8 1",
"` c #060407",
". c #049a9c",
"# c #c5a107",
"a c #ec2a2c",
" c None",
"c c #34e2e4",
"d c #342a34",
"e c #fcae3c",
" `ccccccccccc`...` ",
" `cccccccccccc`...` ",
" `ccccccccccc`.....` ",
" ````cccccccc`.....` ",
" `###````ccc`.....` ",
" `#######```......` ",
" `###`#####`.....` ",
" `#`a`####`.....` ",
" ``aaa`####`...` ",
" `aaaa`#````````d``d```",
" `aaa`##`eeeeeeeeeeeee`",
" `aaa``#``eeeeeeeeeeee`",
" `aaa` ``a`eeeeeeeeeee`",
" `aaa` `aa`eeeeeeeeee`",
" `aaaa` `aaa`eeeeeeeee`",
" `aaaa`aaaaa`eeeeeeee`",
" `aaaaaaaaaa`eeeeeee`",
" `aaaaaaaaa`eeeeeee`",
" ``aaaaaa`eeeeeeee`",
" `aaaa`eeeeeeeee`",
" `aa`eeeeeeeeee`",
" `a`eeeeeeeeeee`",
" ``eeeeeeeeeeee`",
" ```````````````"]
Macro_FCInfo_13J = [
"24 24 4 1",
" c None",
". c #280000",
"+ c #EF2929",
"@ c #FBE852",
"... ",
".++... ++ ",
".+++++.. ++++ ",
" .+++++.. +++ + ",
" .++@@. +++ + ",
" .++@@@. ++ + + ",
" .+.@@@. + + ",
" .. .@@@. +++ + ",
" . .@@@. + ",
" .@@@. + ++ ",
" .@@@. + ++++ ",
" .@@@. ++ + ",
" .@@@. + ",
" .@@@. ",
" .@@@. ",
" .@@@. ",
" .@@@. ",
" .@@@. ",
" .@@@. ",
" .@@@. ",
" .@@@. ",
" .@@@.",
" .@++",
" .++"]
Macro_FCInfo_13M = [
"24 24 5 1",
" c None",
". c #280000",
"+ c #EE292B",
"@ c #EF2929",
"# c #FE19FF",
"... ",
".@@... ++ ",
".@@@@@.. ++ ",
" .@@@@@.. ++ ",
" .@@##. ++ ",
" .@@###. ++ +++ ",
" .@.###. ++++++ ",
" .. .###. ++ +++ ",
" . .###. ++++++ ",
" .###. ++ + + +",
" .###. +++ ++",
" .###. + ++ ",
" .###. + ++ ",
" .###. ++ ",
" .###. + ",
" .###. + ",
" .###. ",
" .###. ",
" .###. ",
" .###. ",
" .###. ",
" .###.",
" .#@@",
" .@@"
]
Macro_FCInfo_13C = [
"24 24 5 1",
" c None",
". c #280000",
"+ c #EE292B",
"@ c #EF2929",
"# c #19FEFF",
"... ",
".@@... ++ ",
".@@@@@.. +++ ",
" .@@@@@.. +++ ",
" .@@##. ++ + ++ ",
" .@@###. + +++ + ",
" .@.###. ++ +++ ",
" .. .###. ++ ++ ++ ",
" . .###. ++ ++ ",
" .###. ++ ++ ++ ",
" .###. +++ ++++",
" .###. + ++ +",
" .###. ++ + +",
" .###. + +++",
" .###. + ",
" .###. + ",
" .###. ",
" .###. ",
" .###. ",
" .###. ",
" .###. ",
" .###.",
" .#@@",
" .@@"
]
Macro_FCInfo_Point = [
"24 24 8 1",
" c None",
". c #000100",
"+ c #B0A22C",
"@ c #E9D235",
"# c #6B6014",
"$ c #F7E66C",
"% c #FBF4BC",
"& c #D5B716",
" ",
" ",
" ",
" ",
" ...... ",
" ..+@@@@+.. ",
" .#$$$@@@@@#. ",
" .#$%%$@@@@@@#. ",
" .$%%%$@@@@@@@. ",
" .+$%%$@@@@@@@@+. ",
" .@$$$@@@@@&&&&&. ",
" .@@@@@@@&&&&&&&. ",
" .@@@@@&&&&&&&&&. ",
" .@@@@&&&&&&&&&&. ",
" .+@@&&&&&&&&&&+. ",
" .@&&&&&&&&&&&. ",
" .#&&&&&&&&&&#. ",
" .#&&&&&&&&#. ",
" ..+&&&&+.. ",
" ...... ",
" ",
" ",
" ",
" "
]
Macro_FCInfo_Plane = [
"24 24 8 1",
" c None",
". c #A40000",
"+ c #204A87",
"@ c #208020",
"# c #EF2929",
"$ c #729FCF",
"% c #8AE234",
"& c #729ECE",
" . ",
" .. + @ ",
" .#. +$+ @@ ",
" .##.+$$$+ @%@ ",
" .###.$$$$@%%@ ",
" .####.$$@%%%@ ",
" ..####.@%%%%@ ",
" ++.##.@.%%%@+ ",
" +&$+..@@#.%@+$+ ",
" +&$&&+@%@##.+$$$+ ",
" +&$&&&@%%@###.$$$$+ ",
" +&$&&&@%%%@####.$$$$+ ",
" +$&&@%%%%@#####.$$$$+ ",
" +$&@%%%@+.#####.$$$+ ",
" +&@%%@+$+.####.$$+ ",
" +@%@+$$$+.###.$+ ",
" @@+$$$$$+.##.+ ",
" @+$$$$$$$+.#. ",
" @%+$$$$$$$+.. ",
" @%%+$$$$$$+#. ",
" @%@ +$&$$+##. ",
" @@ +$$+ .#. ",
" @ ++ .. ",
" . "
]
Macro_FCInfo_Axis = [
"24 24 6 1",
" c None",
". c #204B86",
"+ c #247F23",
"@ c #A30701",
"# c #204A87",
"$ c #208023",
" ",
" ",
" .. ",
" .. ",
" .. ",
" . ",
" . ",
" ++ .. ",
" +++ .. @ ",
" +++ .. @@@@ ",
" +++ .# @@@@ ",
" +$#@@@@ ",
" @@@@##@ ",
" @@@@@ ..+++ ",
" @@ .. +++ ",
" .. +++ ",
" .. ++ ",
" .. ",
" . ",
" . ",
" .. ",
" .. ",
" .. ",
" "
]
Macro_FCInfo_Info = [
"24 24 10 1",
" c None",
". c #F57900",
"+ c #BCBCB3",
"@ c #555755",
"# c #ECEEEB",
"$ c #D8DAD7",
"% c #DBDDDA",
"& c #E6E9E5",
"* c #F2F4F1",
"= c #EFF1EE",
" ",
" ",
" . . . . ",
" +..+..+..+..++ ",
" @@..@..@..@..@+ ",
" @#.##.##.##.#@+ ",
" @############@+ ",
" @#$$$$$$$$$$#@+ ",
" @#++++++++++#@+ ",
" @#$%%%%%$$$##@+ ",
" @#++++++++++#@+ ",
" @#$%%%$$$$%#&@+ ",
" @#++++++++%##@+ ",
" @#$%$$$$$$$%#@+ ",
" @#+++++++++%#@+ ",
" @#$$$$$$$$$$*@+ ",
" @#++++$######@+ ",
" @#$$$$$####@@@+ ",
" @####&=*##@@@++ ",
" @###&#***#@@++ ",
" @@@@@@@@@@@++ ",
" +++++++++++ ",
" ",
" "
]
Macro_FCInfo_Radian = [
"24 24 6 1",
" c None",
". c #0C0000",
"+ c #171018",
"@ c #EE2C29",
"# c #749FCE",
"$ c #FFFFFF",
" ",
" ",
" ....... +++ ",
" ...#####... + + ",
" ..#########@@ ++ ",
" ..##########$@@ + + ",
" ..##########$##@@ ",
" .##########$####@ ",
" ..##########$####@@ ",
" .##########$######@ ",
" .#########$#######@ ",
" .########$$$$$$$$$$ ",
" .#################. ",
" .##########+++####. ",
" ..#########+#+###.. ",
" .#########++####. ",
" ..########+#+##.. ",
" ..###########.. ",
" ..#########.. ",
" ...#####... ",
" ....... ",
" ",
" ",
" "
]
Macro_FCInfo_Pourcent = [
"24 24 4 1",
" c None",
". c #000000",
"+ c #A40000",
"@ c #FFFFFF",
" ",
" ",
" ",
" ",
" + ",
" +++ ",
" +@+ ",
" ++@++ ",
" ++@@@++ ",
" +@@@@@+ ",
" ++@.@.@++ ",
" ++@@.@..@++ ",
" +@@@.@@.@@+ ",
" ++@.@@@@@@@++ ",
" ++@....@@@@@@++ ",
" +@.......@@@@@+ ",
" ++@.........@@@++ ",
" ++@............@@++ ",
" +@...............@+ ",
" ++@@@@@@@@@@@@@@@@@++ ",
" +++++++++++++++++++++ ",
" ",
" ",
" "
]
Macro_FCInfo_Degrees = [
"24 24 5 1",
" c None",
". c #000000",
"+ c #EE2C29",
"@ c #3965A3",
"# c #FFFFFF",
" ",
" ",
" ",
" ..",
" . ... ..",
" . . . . ",
" ... . . ",
" . . . ",
" #+ . ... ",
" ##++ ",
" ##@@++ ",
" ##@@@@+ ",
" ##@@@@@++ ",
" ###@@@@@@@++ ",
" ###@@@@@@@@@++ ",
" ##@@@@@@@@@@@@+ ",
" ##@@@@@@@@@@@@@++ ",
" ##@@@@@@@@@@@@@@@+ ",
" ##@@@@@@@@@@@@@@@@+ ",
" ################### ",
" ",
" ",
" ",
" "
]
Macro_FCInfo_DegreesMinSec = [
"24 24 6 1",
" c None",
". c #000000",
"+ c #A40000",
"@ c #204A87",
"# c #4E9A06",
"$ c #FCAF3E",
" ",
" ",
" +++++++ ",
" +++$@$@$+++ ",
" ++$$$@.@$$$++ ",
" ++$@$$$$$$.@$++ ",
" ++$.$@$$$$$$$$$++ ",
" +$@..$$$$$$$$$$$+ ",
" ++$$@..$$$$$.$$.@++ ",
" +$$$$$..$$$..$$$$$+ ",
" +$$$$$$..$..$$$$$$+ ",
" +@@.$$$$...$$$$.@@+ ",
" +$$$$$$$$.$$$$$$$$+ ",
" +$$$$$$$$$$$$$$$$$+ ",
" ++$$.$$$###$$$$.$++ ",
" +$@$$$$$#$$$$$$@+ ",
" ++$$$$$$$$$.$$$++ ",
" ++$$.$$$$$$@$++ ",
" ++@$$$.$$$$++ ",
" +++$$@$$+++ ",
" +++++++ ",
" ",
" ",
" "
]
Macro_FCInfo_Grade = [
"24 24 5 1",
" c None",
". c #000000",
"+ c #A40000",
"@ c #C4A000",
"# c #FFFFFF",
" ",
" ",
" # # ",
" #...#... # ",
" #+++#++..#. ",
" #@@@@@@+#+... # ",
" #@@@@@@@@@++..# ",
" #@@#@@@@@@@@+#. ",
" #@@#@@@#@@@@@+.. ",
" #@@#@@#@@@@@@@+.. ",
" #@@#@@#@@@#@@@@+..# ",
" #@#@@#@@@#@@@@@@+# ",
" #@#@@#@@#@@@@@@@#. ",
" #@#@#@@#@@@@@#@@+.. ",
" #@#@#@#@@@@##@@@@+. ",
" #@##@#@@@##@@@@@@+. ",
" #@###@@##@@@@@@@@+. ",
" ####@##@@@@@@@@@@#### ",
" #####@@@@######@@+. ",
" #########@@@@@@@@+. ",
" +#################### ",
" ",
" ",
" "
]
Macro_FCInfo_ClipBoard_None = [
"24 24 9 1",
" c None",
". c #A30500",
"+ c #555755",
"@ c #BCBCB3",
"# c #D7DAD6",
"$ c #DBDDDA",
"% c #E7E9E6",
"& c #EBEEEA",
"* c #F1F4F0",
" ",
" @...@@@@@@@@@@@ ... ",
" ++....+++++++++@.... ",
" +$....$$$$$$$$+..... ",
" +$$....$$$$$$$..... ",
" +$$.....$$$$......@@@ ",
" +$$@....+++......+++@ ",
" +$$$$....&......&&&+@ ",
" +$$@@.........&&&&&+@ ",
" +$$$$$.......&&&&&&+@ ",
" +$$@@@+.....@@@@@@&+@ ",
" +$$$$$......$$###&&+@ ",
" +$$@@........@@@@@&+@ ",
" +$$..........###$&%+@ ",
" +$......&@....@@$&&+@ ",
" +......&&$.....##$&+@ ",
" .....$+&&@@....@@$&+@ ",
" .....$$+&&&&&....&&*+@ ",
" ....++++&&&&&.....&&+@ ",
" ... +&&&&&&....+++@ ",
" +&&&&%**....+@@ ",
" +&&&%&**....@@ ",
" +++++++++...@ ",
" @@@@@@@@@@@ "
]
Macro_FCInfo_ClipBoard_FC = [
"24 24 9 1",
" c None",
". c #A30500",
"+ c #154A89",
"@ c #555755",
"# c #BCBCB3",
"$ c #DADDDA",
"% c #E7E9E6",
"& c #EBEEEA",
"* c #F1F4F0",
" ",
" ############### ",
" @@@@@@@@@@@@@@@# ",
" @$$$$$$$$$$$$$@# ",
" @$$$$$$$$$$$$$@# ",
" @$$$$$$$$$$$$$@###### ",
" @$$###@@@@@@@@@@+@@@# ",
" @$$$.......+&&&++&&@# ",
" @$$#.......++&++&&&@# ",
" @$$$.......++++&&&&@# ",
" @$$#...&+++++++###&@# ",
" @$$$.....+$%$++++&&@# ",
" @$$#......%%%+++++&@# ",
" @$$$.....+$%$++++&%@# ",
" @$$$...&+++++++#$&&@# ",
" @$$$...++$+++$++$$&@# ",
" @$$$..++&#+++##++$&@# ",
" @$$$..+&&&&+&&&&+&*@# ",
" @@@@@@@&&&&&&&&&&&&@# ",
" @&&&&&&&&&&@@@# ",
" @&&&&%**&&@@@## ",
" @&&&%&***&@@## ",
" @@@@@@@@@@@## ",
" ########### "
]
Macro_FCInfo_ClipBoard_Comma = [
"24 24 9 1",
" c None",
". c #000000",
"+ c #A30500",
"@ c #2C4A85",
"# c #555755",
"$ c #52990C",
"% c #BCBCB3",
"& c #DADDD9",
"* c #ECEEEB",
" ",
" %%%%%%%%%%%%%%% ",
" ###############% ",
" #&&&&&&&&&&&&&#% ",
" #&&&&&&&&&&&&&#% ",
" #&&&&&&&&&&&&&#%%%%%% ",
" #&&%%%##############% ",
" ++&&&&++*$$**$$*@@@@@@ ",
" +++&%+++*$$$&$$&@@@@@@ ",
" ++&&++#**$$*$$****@@% ",
" #++++%#**$$%$$%%%%@@% ",
" #&++&&#**&$$$$&&&@@#% ",
" #&++%%#**%$$$$%%%@@#% ",
" #++++&#**&&$$&&&&@@#% ",
" ++&&++#**%%$$%%%@@*#% ",
" +&&&&+#**&$$$&&&@@*#% ",
" ++&&&&++..%$$..%@@@@@@ ",
" +#&&&&&+..*$$..*@@@@@@ ",
" #######*.****.*****#% ",
" #..***..***###% ",
" ..***..***###%% ",
" #*********##%% ",
" ###########%% ",
" %%%%%%%%%%% "
]
Macro_FCInfo_ClipBoard_Raw = [
"24 24 9 1",
" c None",
". c #000000",
"+ c #A30500",
"@ c #2C4A85",
"# c #555755",
"$ c #52990C",
"% c #BCBCB3",
"& c #DADDD9",
"* c #ECEEEB",
" ",
" %%%%%%%%%%%%%%% ",
" ###############% ",
" #&&&&&&&&&&&&&#% ",
" #&&&&&&&&&&&&&#% ",
" #&&&&&&&&&&&&&#%%%%%% ",
" #&&%%%##############% ",
" ++&&&&++*$$**$$*@@@@@@ ",
" +++&%+++*$$$&$$&@@@@@@ ",
" ++&&++#**$$*$$****@@% ",
" #++++%#**$$%$$%%%%@@% ",
" #&++&&#**&$$$$&&&@@#% ",
" #&++%%#**%$$$$%%%@@#% ",
" #++++&#**&&$$&&&&@@#% ",
" ++&&++#**%%$$%%%@@*#% ",
" +&&&&+#**&$$$&&&@@*#% ",
" ++&&&&++**%$$%%%@@@@@@ ",
" +#&&&&&+***$$***@@@@@@ ",
" #######************#% ",
" #**********###% ",
" #*********###%% ",
" #*********##%% ",
" ###########%% ",
" %%%%%%%%%%% "
]
Macro_FCInfo_BoundBoxTracing = [
"24 24 8 1",
" c None",
". c #A30500",
"+ c #ED2928",
"@ c #69678E",
"# c #6B6990",
"$ c #6D6B92",
"% c #706E95",
"& c #746F91",
" ",
" ",
" +++. ",
" ++++..++. ",
" ++++.... ++. ",
" +++.... +.+. ",
" ++. +.+. ",
" +.+. +++. +. ",
" +. +. ++++..+. +. ",
" +. ++++... +. +. ",
" +. +.. +++. +. ",
" +. +. ++++...+.+. ",
" +. ++++.... ++. ",
" +++.+.. +. ",
" +..+. +. ",
" +.+. ++. ",
" +.+. ++++.. ",
" ++. ++++.... ",
" +++.... ",
" ... ",
" ",
" ",
" ",
" "
]
Macro_FCInfo_BoundBoxVolume = [
"24 24 9 1",
" c None",
". c #000000",
"+ c #140300",
"@ c #A40709",
"# c #CE000B",
"$ c #ED2928",
"% c #F02C30",
"& c #6A698F",
"* c #706E95",
" ",
" ++++ ",
" ++++$$$+ ",
" ++++$$$$%%%$+ ",
" +++$$$$%%%%%%%$+ ",
" ..$$%%%%%%%%%%%%$+ ",
" .$.%%%%%%%%%%%%..+ ",
" .#$.%%%%%%%%...@@$+ ",
" .##$.%%%....@@@@@$+ ",
" .###$...@@@@@@@@@$+ ",
" .###$.@@@@@@@@@@@$+ ",
" .###$.@@@@@@@@@@@$+ ",
" .###$.@@@@@@@@@@@$+ ",
" .$##$.@@@@@@@@@@@$+ ",
" .$#$.@@@@@@@@@@@$+ ",
" .$$.@@@@@@@@@@$$+ ",
" .$$.@@@@@@$$$$+++ ",
" .$.@@$$$$++++ ",
" ..$$++++ ",
" +++ ",
" ",
" ",
" ",
" "
]
Macro_FCInfo_DeleteLineMaterial = [
"24 24 9 1",
" c None",
". c #A30500",
"+ c #555755",
"@ c #F67904",
"# c #BCBCB3",
"$ c #D8DAD7",
"% c #E7E9E6",
"& c #EBEEEA",
"* c #F1F4F0",
" ",
" ",
" @ @ @ @ ",
" #@@#@@#@@#@@## ",
". ++@@+@@+@@+@@+# .",
"... +&@&&@&&@&&@&+# ...",
".....+&&&&&&&&&&&&+.....",
".......$$$$$$$$$$.......",
" ........######........ ",
" ........$$........ ",
" ..............# ",
" +&..........%+# ",
" +&..........&+# ",
" ..............# ",
" ........##........ ",
" ........$$$$$$........ ",
".......####$&&&&&.......",
".....+&$$$$$&&&&+++.....",
"... +&&&&%**&&+++## ...",
". +&&&%&***&++## .",
" +++++++++++## ",
" ########### ",
" ",
" "
]
Macro_FCInfo_Beer = [
"25 25 7 1",
" c None",
". c #000000",
"+ c #C17D11",
"@ c #BABDB6",
"# c #BDBDBA",
"$ c #D7D9D6",
"% c #EEEEEC",
" ",
" ",
" % % ",
" %%%% %% % ",
" % %% %% %% ",
" % %%%% %%% % % ",
" %%%@%%@%%%@%@%%% ",
" %%%%%@%%@%%%%%%% % ",
" %%%%@@%%%@%%@%. ",
" %%@%@%%@%%@%@%#... ",
" %%%$%%%%%%%%%%####.. ",
" %.$$%%@%%@%%%##.##. ",
" ..$.%%%%%%@.#. .#. ",
" .#%@.@.@.%%#. .#. ",
" .#+%%+@%%%+#. .#. ",
" .#+++++++++#. .#. ",
" .#+++++++++#. .#. ",
" .##++++++++#. .#. ",
" ..#++++++++#..##. ",
" .#++++++++#.##. ",
" .###+++++##... ",
" ...#####... ",
" ....... ",
" ",
" "
]
Macro_FCInfo_Save_Material = [
"24 24 9 1",
" c None",
". c #000000",
"+ c #A30500",
"@ c #555755",
"# c #CD5D01",
"$ c #F67904",
"% c #BCBCB3",
"& c #EBEEEA",
"* c #F1F3F0",
" ",
" ",
" $ $ $ $ ",
" %$$%$$%$$%$$%% ",
" @@$$@$$@$$@$$@% ",
" @&$&&$&&$&&$&@% ",
" @&&&&&&&&&&&&@% ",
" @&&&&&&&&&&&&@% ",
" @&&%%%%%%%%&&@% ",
" @&&&&&&&&&&&&@% ",
" @&&%%..%&&&&&@% ",
" @&&&&.@@&&&&&@% ",
" @&&%%%@@@&&&&@% ",
" @&&&&&&@++&&&@% ",
" @&&%%%%++++&&@% ",
" @&&&&&&&++++&@% ",
" @&&%%%&&&++++@% ",
" @&&&&&&&&&++++% ",
" @&&&&&**&&@+++# ",
" @&&&&&***&@@+##$ ",
" @@@@@@@@@@@%%#$$$ ",
" %%%%%%%%%%% $$$$ ",
" $$ ",
" "
]
Macro_FCInfo_Work = [
"24 24 8 1",
" c None",
". c #C17D11",
"+ c #8F5902",
"@ c #BABDB6",
"# c #EDD400",
"$ c #A40000",
"% c #CE5C00",
"& c #171018",
" ",
" ..... ",
" ++........ ",
" +...++++++... ",
" +..@@@@#@@@++.. ",
" +..#@@@@#@@@@#+.. ",
" +..@@#@@@#@@$#@@+.. ",
" +.#@@@%@@%@@$@@@#+. ",
" +..@#@@@@@#@$@@@#@+.. ",
" +.@@@%@@@@@$$@@%@@@+. ",
" +.@@@@@@@@@$$@@@@@@+. ",
" +.@@@@@@@@&&@@@@@@@+. ",
" +.###%@@@@&&@@@%###+. ",
" +.@@@@@@@@$$@@@@@@@+. ",
" +.@@@%@@@@@$$@@%@@@+. ",
" +..@#@@@@@#$$$@@#@+.. ",
" +.#@@@%@@%@$$@@@#+. ",
" ..@@#@@@#@@$$@@+.. ",
" +..#@@@@#@@@$#+.. ",
" +..@@@@#@@@++.. ",
" +...++++++... ",
" ++........ ",
" ...... ",
" "
]
Macro_FCInfo_Color = [
"24 24 9 1",
" c None",
". c #16D0D2",
"+ c #D3D7CF",
"@ c #C17D11",
"# c #EDD400",
"$ c #73D216",
"% c #F57900",
"& c #3465A4",
"* c #CC0000",
" .... ",
" +++ .... @@@@ ",
" ++#### .... $$$ @@@@ ",
" ++####%%%...&&$$$ @@@@ ",
" ####%%% &&&&$$$ @@@@ ",
" ####%%%+&&&&** ",
" $$$$ ++&&&&**##%%% ",
"@@@@$$$$ ++++ ***##%%% ",
"@@@@$$$$ ++++ ####%%% ",
"@@@@ &&&$$$$## ",
"@@@$$$$ %%&&&$$$$ %%%% ",
" $$$$ %%&***$$$ %%%% ",
"...$$$$ %%%***$$$ %%%% ",
"...$$$$*** ***&&&+%%%% ",
"....%%%***### &&&+++@@@@",
"....%%%***### &&&+++@@@@",
" +++%% ### .... @@@@",
" +++ &&& $$$..####@@@@",
" +++ &&****$$..#### ",
" #### &&****$&&&###**** ",
" ####+++**...&&&###**** ",
" ####+++**...&&&& **** ",
" ####+++ ...&&&& **** ",
" .... "
]
Macro_FCInfo_Face = [
"24 24 9 1",
" c None",
". c #A30500",
"+ c #9C0C04",
"@ c #9C0D0C",
"# c #EF2B29",
"$ c #5468F8",
"% c #A9B0CB",
"& c #98B5D8",
"* c #9EB7D5",
" ",
" ",
" ## ",
" ##++## ",
" ##++++++## ",
" ##++++++++++## ",
" ##@+++++++## ",
" ## $$*#++++++#**$ ",
" ##***##++##***$$ # ",
" ##**##***##***$$*$## ",
" #.#***##*****$*&*# # ",
" #..##***#$*$$**##$ # ",
" #....#***%$**##**$ # ",
" #.....##%%$*#****$ # ",
" #......#%%$#*****$ # ",
" #......#%%$#*****$ # ",
" #......#%%$#***&*$ # ",
" #......#%%$#***$$ # ",
" ##.....#%%$#*$$ ## ",
" ##...#$%$#$ # ",
" ##.# $$# ## ",
" ## ### ",
" # # ",
" "
]
Macro_FCInfo_WebForum = [
"24 24 4 1",
" c None",
". c #1E4C89",
"+ c #EBF0F3",
"@ c #FFFFFF",
" ",
" .......... ",
" ..@@@@@@@@.. ",
" ..@@......@@.. ",
" ..@@........@+.. ",
" ..@@...@@@@...@@.. ",
" ..@@...@@@@@@...@@.. ",
" ..@@...@@@..@@@...@@.. ",
" .@@....@@....@@....@@. ",
" .@...........@@.....@. ",
" .@..........@@@.....@. ",
" .@.........@@@......@. ",
" .@........@@@.......@. ",
" .@........@@........@. ",
" .@........@@........@. ",
" .@@.......@@.......@@. ",
" ..@@..............@@.. ",
" ..@@............@@.. ",
" ..@@....@@....@@.. ",
" ..@@...@@...@@.. ",
" ..@@......@@.. ",
" ..@@@@@@@@.. ",
" .......... ",
" "
]
Macro_FCInfo_WebWiki = [
"24 24 9 1",
" c None",
". c #091756",
"+ c #194C8B",
"@ c #214B97",
"# c #50627D",
"$ c #BC727C",
"% c #9DAAC0",
"& c #C7D0DF",
"* c #FFFFFF",
" ",
" ++++++++++ ",
" ++********++ ",
" ++**++++++**++ ",
" ++**++++++++**++ ",
" ++**+++****+++**++ ",
" ++**+++******+++**++ ",
" ++**+++***++***+++**++ ",
" +**++++**++++**++++**+ ",
" +*+++++++++++**+++++*+ ",
" +*+++++++++............",
" +*+++++++++.**@@@@****.",
" +*++++++++*.*@%&%%@***.",
" +*++++++++*.@%%%*%%@**.",
" +*++++++++*.@&%**$%@**.",
" +**+++++++*.@%**$$%@**.",
" ++**+++++++.@%%$$$%@**.",
" ++**++++++.*@%%%%@***.",
" ++**++++*.**@@@@%#**.",
" ++**+++*.******#%#*.",
" ++**+++.*....**#%#.",
" ++****.**%%%***#%.",
" +++++.*********#.",
" ............"
]
Macro_FCInfo_SpreadSheet = [
"27 24 8 1",
" c #383C3E",
". c #4D5153",
"+ c #6C6F70",
"@ c #868A8C",
"# c #9DA1A1",
"$ c #BFC1BE",
"% c #D6D9D5",
"& c #EFF1EE",
"&&&&&&&&&&&&&&&&&&&&&&&&&&&",
"&$@@@@@@@@@@@@@@@@@@@@@@@@&",
"&$######@ ###############@&",
"&$%&&&&&@ %&&&&&&&&&&&&&%@&",
"&$%&&&&&@ %&&&&&&&&&&&&&%@&",
"&$%$$$$$@ %&&&&&&&&&&&&&%@&",
"&$ @&",
"&$######@ ###############@&",
"&$%&&&&&@ %&&&&&&&&&&&&&%@&",
"&$%&&&&&@ %&&&&&&&&&&&&&%@&",
"&$%$$$$$@ %&&&&&&&&&&&&&%@&",
"&$ @&",
"&$######@ ###############@&",
"&$%&&&&&@ %&&&&&&&&&&&&&%@&",
"&$%&&&&&@ %&&&&&&&&&&&&&%@&",
"&$%$$$$$@ %&&&&&&&&&&&&&%@&",
"&$ @&",
"&$######@ ###############@&",
"&$%&&&&&@ %&&&&&&&&&&&&&%@&",
"&$%&&&&&@ %&&&&&&&&&&&&&%@&",
"&$%$$$$$@ %&&&&&&&&&&&&&%@&",
"&$#######################@&",
"&$$$$$$$$$$$$$$$$$$$$$$$$$&",
"&&&&&&&&&&&&&&&&&&&&&&&&&&&"
]
#### Material, Gravity By Default Begin
global materialAssociated ; materialAssociated = [] # material associate
materialAssociated = [
(u"Liquid Water (H2o),1,10.0,adapt Price"),
(u"Mater Beton,2.4,10.0,adapt Price"),
(u"Metal Aluminium (Al),2.7,10.0,adapt Price"),
(u"Metal Copper (Cu),8.96,10.0,adapt Price"),
(u"Metal Gold (Au),19.3,10.0,Gratis"),
(u"Metal Iron (Fe),7.87,10.0,adapt Price"),
(u"Metal Lead (Pb),11.35,10.0,adapt Price"),
(u"Metal Magnesium (Mg),1.43,10.0,adapt Price"),
(u"Metal Nickel (Ni),8.27,10.0,adapt Price"),
(u"Metal Pewter (Sn),7.29,10.0,adapt Price"),
(u"Metal Platinum (Pt),21.45,10.0,adapt Price"),
(u"Metal Silver (Ag),10.5,10.0,adapt Price"),
(u"Metal Sodium (Na),0.97,10.0,adapt Price"),
(u"Metal Titanium (Ti),4.4,10.0,adapt Price"),
(u"Metal Zinc (Zn),7.1,10.0,adapt Price"),
(u"Wood Beechwood,0.8,10.0,adapt Price"),
(u"Wood MDF,0.75,10.0,adapt Price"),
(u"Wood Mahogany,0.6,10.0,adapt Price"),
(u"Wood Oak,0.7,10.0,adapt Price"),
(u"Wood White pine,0.4,10.0,adapt Price")
]
if os.path.exists(path):
#App.Console.PrintMessage(str(os.path.exists(path)) + "\n")
#App.Console.PrintMessage(str(os.path.isfile(path + "FCInfo_material.txt")) + "\n")
#
#if not file one file (data default in macro) is created in the Macro location or in the seTMaterialSavePathName path
if (os.path.isfile(seTMaterialSavePathName + seTMaterialFileName) == False) or (os.path.getsize(seTMaterialSavePathName + seTMaterialFileName) == 0): # default "FCInfo_material.txt"
App.Console.PrintMessage(u"Sauvegarde de " + str(seTMaterialSavePathName) + str(seTMaterialFileName) + "\n")
materialAssociated.sort()
App_Console_PrintMessage(u"Nombre de materiaux : " + str(len(materialAssociated)) + "\n")
try:
f = open(seTMaterialSavePathName + seTMaterialFileName, 'w') # write
for i in materialAssociated:
f.write(i + "\n")
f.close()
App_Console_PrintMessage(u"Créer/Sauver le fichier : " + seTMaterialFileName + "\n")
except Exception:
App_Console_PrintError(u"Pas de fichier " + seTMaterialFileName + "\n")
seTMaterialCurrentIndex = 0
seTDensiteValue = float(materialAssociated[0].split(",")[1])
else:
try:
App_Console_PrintMessage(u"Lis le fichier " + str(seTMaterialReadPathName) + str(seTMaterialFileName) + "\n")
f = open(seTMaterialReadPathName + seTMaterialFileName, 'r') # read # read the file
materialAssociated = []
for i in f:
i2 = i.rstrip() # .lstrip(), .rstrip(), .split(",")
materialAssociated.append(i2)
f.close()
seTDensiteValue = float(materialAssociated[0].split(",")[1])
App_Console_PrintMessage(u"Charge le fichier : " + seTMaterialFileName + "\n")
except Exception:
App_Console_PrintError(u"Pas de fichier " + seTMaterialFileName + " sauvegardé" + "\n")
#### Material, Gravity End
global infoFaceMesh;
global indexFaceMesh ; indexFaceMesh = 0
global coordPointsMesh; coordPointsMesh = ""
import warnings
warnings.simplefilter("ignore")
def getNormal(cb):
#https://wiki.freecadweb.org/Code_snippets#Get_the_normal_vector_of_a_surface_from_a_STL_file
global infoFaceMesh;
global indexFaceMesh
try:
pp = cb.getPickedPoint()
indexFaceMesh = coin.cast(pp.getDetail(), "SoFaceDetail").getFaceIndex()
except Exception:
None
def Around(a) :
global seTDecimalValue
if seTDecimalValue == -1:
seTDecimalValue = 1000
ard = round(a, seTDecimalValue)
return ard
#### BoundBox Tracing ####
def adjustedGlobalPlacement(obj, locVector):
'''find global placement to make locVector the local origin with the correct orientation'''
# extract BoundingBox_Tracing
#2021/07/10 modified by edwilliams16 to handle objects in nested part containers
#https://forum.freecadweb.org/viewtopic.php?f=22&t=59852
#
try:
objectPlacement = obj.Placement
objectGlobalPlacement = obj.getGlobalPlacement()
locPlacement = App.Placement(locVector, App.Rotation(App.Vector(1,0,0),0))
return objectGlobalPlacement.multiply(objectPlacement.inverse()).multiply(locPlacement)
except Exception:
locPlacement = App.Placement(App.Vector(0,0,0), App.Rotation(0,0,0), App.Vector(0,0,0))
App_Console_PrintError(u"Error adjustedGlobalPlacement")
return locPlacement
def bounBoxTracing():
#import PySide
global BDvol
global switchBoundBoxCreateVolume # 1 = create Volume
global switchBoundBoxCreateText # 1 = create dimension info : 0 = not dimension info
global seTBoundBoxTextHeigth # text heigth
global seTBoundBoxTextArround # arrondi text dimensions
global seTBoundBoxDisplayModeText # u"Screen" or u"World"
global seTBoundBoxJustificationText # u"Center" or u"Left" or u"Right"
##### Section configuration begin ##################
FontSizeText = seTBoundBoxTextHeigth# text info dimension
####
TextColorText_R = 0.0 # text color info red 1 = 255
TextColorText_G = 0.0 # text color info green 1 = 255
TextColorText_B = 0.0 # text color info blue 1 = 255
LineColor_red = 1.0 # Line Color rectangle 1 = 255
LineColor_green = 0.0 # Line Color rectangle 1 = 255
LineColor_blue = 0.0 # Line Color rectangle 1 = 255
arrondi = seTBoundBoxTextArround # round the info ex: 3 = 3 decimals
##### Section configuration end ####################
sel = FreeCADGui.Selection.getSelection()
selEx = FreeCADGui.Selection.getSelectionEx()
objs = [selobj.Object for selobj in selEx]
if len(objs) >= 1:
if hasattr(objs[0], "Shape"):
s = objs[0].Shape
elif hasattr(objs[0], "Mesh"): # upgrade with wmayer thanks #http://forum.freecadweb.org/viewtopic.php?f=13&t=22331
s = objs[0].Mesh
elif hasattr(objs[0], "Points"):
s = objs[0].Points
FreeCAD.ActiveDocument.openTransaction(u"FCInfo BBox") # memorise les actions (avec annuler restore)
#FreeCAD.ActiveDocument.commitTransaction() # restore les actions (avec annuler restore)
#FreeCAD.ActiveDocument.abortTransaction() # abandonne les actions(avec annuler restore)
# boundBox
if sel[0].isDerivedFrom("Fem::FemPostWarpVectorFilter"):
boundBox_ = sel[0].ViewObject.getBoundingBox()
else:
boundBox_ = s.BoundBox
boundBoxLX = boundBox_.XLength
boundBoxLY = boundBox_.YLength
boundBoxLZ = boundBox_.ZLength
boundBoxXMin = boundBox_.XMin
boundBoxYMin = boundBox_.YMin
boundBoxZMin = boundBox_.ZMin
boundBoxLocation = App.Vector(boundBox_.XMin,boundBox_.YMin,boundBox_.ZMin)
nameLabel = sel[0].Label
try:
try:
import unicodedata
nameLabel = str(unicodedata.normalize('NFKD', nameLabel).encode('ascii','ignore'))[2:]
except Exception:
None
boundBoxLocation = App.Vector(boundBoxXMin,boundBoxYMin,boundBoxZMin)
nameLabel = sel[0].Label
# create Volume
if (switchBoundBoxCreateVolume == 1):
if (boundBoxLX > 0) and (boundBoxLY > 0) and (boundBoxLZ > 0): # Create Volume
BDvol = App.ActiveDocument.addObject("Part::Box",nameLabel + "_BoundBoxVolume")
#BDvol.Label = "BoundBoxVolume"
BDvol.Length.Value = boundBoxLX
BDvol.Width.Value = boundBoxLY
BDvol.Height.Value = boundBoxLZ
BDvol.Placement = adjustedGlobalPlacement(objs[0], boundBoxLocation)
BDPl = BDvol.Placement
oripl_X=BDvol.Placement.Base.x
oripl_Y=BDvol.Placement.Base.y
oripl_Z=BDvol.Placement.Base.z
#if debug: print(f'global {globalObjectPlacement}\n local {localObjectPlacement} BB {BBlocPlacement}')
FreeCADGui.ActiveDocument.getObject(BDvol.Name).LineColor = (LineColor_red, LineColor_green, LineColor_blue)
FreeCADGui.ActiveDocument.getObject(BDvol.Name).PointColor = (LineColor_red, LineColor_green, LineColor_blue)
FreeCADGui.ActiveDocument.getObject(BDvol.Name).ShapeColor = (LineColor_red, LineColor_green, LineColor_blue)
FreeCADGui.ActiveDocument.getObject(BDvol.Name).Transparency = 80
switchBoundBoxCreateVolume = 0
#App_Console_PrintMessage(nameLabel + "_BoundBoxVolume : " + str(BDvol.Shape.Volume)+"\r\n")
# create Text for volume
if switchBoundBoxCreateText == 1: # section create dimension info
conteneurVol = []
del conteneurVol[:]
conteneurVol = App.activeDocument().addObject("App::DocumentObjectGroup",nameLabel + "_BoundBoxVolume_Info")
BDtext = FreeCAD.Placement()
BDtext = adjustedGlobalPlacement(objs[0], boundBoxLocation)
BDPl = BDtext
#pl_0C1 = Draft.make_text([str(round(boundBoxLX,arrondi))],point=FreeCAD.Vector(oripl_X + (boundBoxLX/2), oripl_Y, oripl_Z))
pl_0C1 = Draft.make_text([str(round(boundBoxLX,arrondi))],placement = BDPl.multVec(App.Vector(boundBoxLX/2,0,0)))
pl_0C1.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C1.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C1.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C1.ViewObject.FontSize = FontSizeText
pl_0C1.Label = nameLabel + "_Volume_X_" + str(round(boundBoxLX,arrondi))
conteneurVol.addObject(pl_0C1)
#pl_0C2 = Draft.make_text([str(round(boundBoxLY,arrondi))],point=FreeCAD.Vector(oripl_X, oripl_Y + (boundBoxLY/2), oripl_Z))
pl_0C2 = Draft.make_text([str(round(boundBoxLY,arrondi))],placement = BDPl.multVec(App.Vector(0, boundBoxLY/2, 0)))
pl_0C2.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C2.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C2.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C2.ViewObject.FontSize = FontSizeText
pl_0C2.Label = nameLabel + "_Volume_Y_" + str(round(boundBoxLY,arrondi))
conteneurVol.addObject(pl_0C2)
#pl_0C3 = Draft.make_text([str(round(boundBoxLZ,arrondi))],placement=FreeCAD.Vector(oripl_X, oripl_Y, oripl_Z + (boundBoxLZ/2)))
pl_0C3 = Draft.make_text([str(round(boundBoxLZ,arrondi))],placement = BDPl.multVec(App.Vector(0, 0, boundBoxLZ/2)))
pl_0C3.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C3.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C3.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C3.ViewObject.FontSize = FontSizeText
pl_0C3.Label = nameLabel + "_Volume_Z_" + str(round(boundBoxLZ,arrondi))
conteneurVol.addObject(pl_0C3)
App.ActiveDocument.recompute()
else: #create rectangles
conteneurRectangle = []
del conteneurRectangle[:]
conteneurRectangle = App.activeDocument().addObject("App::DocumentObjectGroup",nameLabel + "_BoundBoxRectangle")
if switchBoundBoxCreateText == 1: # conteneur dimension info
conteneurInfo = []
del conteneurInfo[:]
conteneurInfo = App.activeDocument().addObject("App::DocumentObjectGroup",nameLabel + "_BoundBoxRectangle_Info")
try:
if (boundBoxLX and boundBoxLY) > 0.0:
#pl_0 = App.Placement(App.Vector(oripl_X,oripl_Y,oripl_Z), App.Rotation(0.0,0.0,0.0))
pl_0 = adjustedGlobalPlacement(objs[0], boundBoxLocation)
double = Draft.makeRectangle(length=boundBoxLX,height=boundBoxLY,placement=pl_0,face=False,support=None) #OK
double.Label = nameLabel + "_BoundBoxRectangle_Bo"
FreeCADGui.activeDocument().activeObject().LineColor = (LineColor_red, LineColor_green, LineColor_blue)
conteneurRectangle.addObject(double)
if switchBoundBoxCreateText == 1: # section create dimension info
#pl_0C1 = Draft.make_text([str(round(boundBoxLX,arrondi))],placement=FreeCAD.Vector(pl_0.Base.x + (boundBoxLX/2), pl_0.Base.y, pl_0.Base.z))
# XY -> XY
pl_0C1 = Draft.make_text([str(round(boundBoxLX,arrondi))],placement=pl_0.multVec(App.Vector(boundBoxLX/2, 0, 0)))
pl_0C1.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C1.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C1.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C1.ViewObject.FontSize = FontSizeText
pl_0C1.Label = nameLabel + "_Rectangle_Bo_0X_" + str(round(boundBoxLX,arrondi))
conteneurInfo.addObject(pl_0C1)
#pl_0C2 = Draft.make_text([str(round(boundBoxLY,arrondi))],placement=FreeCAD.Vector(pl_0.Base.x, pl_0.Base.y + (boundBoxLY/2), pl_0.Base.z))
pl_0C2 = Draft.make_text([str(round(boundBoxLY,arrondi))],placement=pl_0.multVec(App.Vector(0., boundBoxLY/2, 0.)))
pl_0C2.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C2.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C2.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C2.ViewObject.FontSize = FontSizeText
pl_0C2.Label = nameLabel + "_Rectangle_Bo_0Y_" + str(round(boundBoxLY,arrondi))
conteneurInfo.addObject(pl_0C2)
except:
App_Console_PrintError(u"not done 0"+"\n")
try:
if (boundBoxLX and boundBoxLY) > 0.0:
#pl_1 = App.Placement(App.Vector(oripl_X,oripl_Y,oripl_Z+boundBoxLZ), App.Rotation(0.0,0.0,0.0))
pl_1 =adjustedGlobalPlacement(objs[0], boundBoxLocation + App.Vector(0,0,boundBoxLZ))
double = Draft.makeRectangle(length=boundBoxLX,height=boundBoxLY,placement=pl_1,face=False,support=None) #Ok
double.Label = nameLabel + "_BoundBoxRectangle_To"
FreeCADGui.activeDocument().activeObject().LineColor = (LineColor_red, LineColor_green, LineColor_blue)
conteneurRectangle.addObject(double)
if switchBoundBoxCreateText == 1: # section create dimension info
#pl_0C1 = Draft.make_text([str(round(boundBoxLX,arrondi))],placement=FreeCAD.Vector(pl_1.Base.x + (boundBoxLX/2), pl_1.Base.y, pl_1.Base.z))
#XY -> XY
pl_0C1 = Draft.make_text([str(round(boundBoxLX,arrondi))],placement=pl_1.multVec(App.Vector(boundBoxLX/2, 0, 0)))
pl_0C1.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C1.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C1.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C1.ViewObject.FontSize = FontSizeText
pl_0C1.Label = nameLabel + "_Rectangle_To_1X_" + str(round(boundBoxLX,arrondi))
conteneurInfo.addObject(pl_0C1)
#pl_0C2 = Draft.make_text([str(round(boundBoxLY,arrondi))],placement=FreeCAD.Vector(pl_1.Base.x, pl_1.Base.y + (boundBoxLY/2), pl_1.Base.z))
pl_0C2 = Draft.make_text([str(round(boundBoxLY,arrondi))],placement=pl_1.multVec(App.Vector(0., boundBoxLY/2, 0)))
pl_0C2.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C2.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C2.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C2.ViewObject.FontSize = FontSizeText
pl_0C2.Label = nameLabel + "_Rectangle_To_1Y_" + str(round(boundBoxLY,arrondi))
conteneurInfo.addObject(pl_0C2)
except:
App_Console_PrintError(u"not done 1"+"\n")
try:
if (boundBoxLX and boundBoxLZ) > 0.0:
#pl_2 = App.Placement(App.Vector(oripl_X,oripl_Y,oripl_Z), App.Rotation(0.0,0.0,90))
pl_2 = pl_0.multiply(App.Placement(App.Vector(0.,0.,0.),App.Rotation(0.0,0.0,90)))
double = Draft.makeRectangle(length=boundBoxLX,height=boundBoxLZ,placement=pl_2,face=False,support=None) #Ok
double.Label = nameLabel + "_BoundBoxRectangle_Fr"
FreeCADGui.activeDocument().activeObject().LineColor = (LineColor_red, LineColor_green, LineColor_blue)
conteneurRectangle.addObject(double)
if switchBoundBoxCreateText == 1: # section create dimension info
#pl_0C1 = Draft.make_text([str(round(boundBoxLX,arrondi))],placement=FreeCAD.Vector(pl_2.Base.x + (boundBoxLX/2), pl_2.Base.y, pl_2.Base.z))
#XZ -> XY
pl_0C1 = Draft.make_text([str(round(boundBoxLX,arrondi))],placement=pl_2.multVec(App.Vector(boundBoxLX/2, 0, 0)))
pl_0C1.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C1.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C1.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C1.ViewObject.FontSize = FontSizeText
pl_0C1.Label = nameLabel + "_Rectangle_Fr_2X_" + str(round(boundBoxLX,arrondi))
conteneurInfo.addObject(pl_0C1)
#pl_0C2 = Draft.make_text([str(round(boundBoxLZ,arrondi))],placement=FreeCAD.Vector(pl_2.Base.x, pl_2.Base.y, pl_2.Base.z + (boundBoxLZ/2)))
pl_0C2 = Draft.make_text([str(round(boundBoxLZ,arrondi))],placement=pl_2.multVec(App.Vector(0, boundBoxLZ/2, 0)))
pl_0C2.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C2.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C2.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C2.ViewObject.FontSize = FontSizeText
pl_0C2.Label = nameLabel + "_Rectangle_Fr_2Z_" + str(round(boundBoxLZ,arrondi))
conteneurInfo.addObject(pl_0C2)
except:
App_Console_PrintError(u"not done 2"+"\n")
try:
if (boundBoxLX and boundBoxLZ) > 0.0:
#pl_3 = App.Placement(App.Vector(oripl_X,oripl_Y+boundBoxLY,oripl_Z), App.Rotation(0.0,0.0,90))
pl_3 = adjustedGlobalPlacement(objs[0], boundBoxLocation+App.Vector(0, boundBoxLY, 0)).multiply(App.Placement(App.Vector(0.,0.,0.),App.Rotation(0.0,0.0,90)))
double = Draft.makeRectangle(length=boundBoxLX,height=boundBoxLZ,placement=pl_3,face=False,support=None) #Ok
double.Label = nameLabel + "_BoundBoxRectangle_Re"
FreeCADGui.activeDocument().activeObject().LineColor = (LineColor_red, LineColor_green, LineColor_blue)
conteneurRectangle.addObject(double)
if switchBoundBoxCreateText == 1: # section create dimension info
#XZ -> XY
pl_0C1 = Draft.make_text([str(round(boundBoxLX,arrondi))],placement=pl_3.multVec(App.Vector(boundBoxLX/2, 0, 0)))
pl_0C1.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C1.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C1.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C1.ViewObject.FontSize = FontSizeText
pl_0C1.Label = nameLabel + "_Rectangle_Re_3X_" + str(round(boundBoxLX,arrondi))
conteneurInfo.addObject(pl_0C1)
pl_0C2 = Draft.make_text([str(round(boundBoxLZ,arrondi))],placement=pl_3.multVec(App.Vector(0, boundBoxLZ/2, 0)))
pl_0C2.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C2.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C2.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C2.ViewObject.FontSize = FontSizeText
pl_0C2.Label = nameLabel + "_Rectangle_Re_3Z_" + str(round(boundBoxLZ,arrondi))
conteneurInfo.addObject(pl_0C2)
except:
App_Console_PrintError(u"not done 3"+"\n")
try:
if (boundBoxLY and boundBoxLZ) > 0.0:
#pl_4 = App.Placement(App.Vector(oripl_X,oripl_Y,oripl_Z), App.Rotation(90,0.0,90))
pl_4 = pl_0.multiply(App.Placement(App.Vector(0.,0.,0.),App.Rotation(90,0,90)))
double = Draft.makeRectangle(length=boundBoxLY,height=boundBoxLZ,placement=pl_4,face=False,support=None) #Ok
double.Label = nameLabel + "_BoundBoxRectangle_Le"
FreeCADGui.activeDocument().activeObject().LineColor = (LineColor_red, LineColor_green, LineColor_blue)
conteneurRectangle.addObject(double)
if switchBoundBoxCreateText == 1: # section create dimension info
#pl_0C1 = Draft.make_text([str(round(boundBoxLY,arrondi))],placement=FreeCAD.Vector(pl_4.Base.x, pl_4.Base.y + (boundBoxLY/2), pl_4.Base.z))
#YZ ->XY
pl_0C1 = Draft.make_text([str(round(boundBoxLY,arrondi))],placement=pl_4.multVec(App.Vector(boundBoxLY/2, 0., 0.)))
pl_0C1.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C1.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C1.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C1.ViewObject.FontSize = FontSizeText
pl_0C1.Label = nameLabel + "_Rectangle_Le_4Y_" + str(round(boundBoxLY,arrondi))
conteneurInfo.addObject(pl_0C1)
#pl_0C2 = Draft.make_text([str(round(boundBoxLZ,arrondi))],placement=FreeCAD.Vector(pl_4.Base.x, pl_4.Base.y, pl_4.Base.z + (boundBoxLZ/2)))
pl_0C2 = Draft.make_text([str(round(boundBoxLZ,arrondi))],placement=pl_4.multVec(App.Vector(0., boundBoxLZ/2, 0)))
pl_0C2.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C2.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C2.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C2.ViewObject.FontSize = FontSizeText
pl_0C2.Label = nameLabel + "_Rectangle_Le_4Z_" + str(round(boundBoxLZ,arrondi))
conteneurInfo.addObject(pl_0C2)
except:
App_Console_PrintError(u"not done 4"+"\n")
try:
if (boundBoxLY and boundBoxLZ) > 0.0:
#pl_5 = App.Placement(App.Vector(oripl_X+boundBoxLX,oripl_Y,oripl_Z), App.Rotation(90,0.0,90))
pl_5 = adjustedGlobalPlacement(objs[0], boundBoxLocation+App.Vector(boundBoxLX,0,0)).multiply(App.Placement(App.Vector(0.,0.,0.),App.Rotation(90,0.0,90)))
double = Draft.makeRectangle(length=boundBoxLY,height=boundBoxLZ,placement=pl_5,face=False,support=None) #Ok
double.Label = nameLabel + "_BoundBoxRectangle_Ri"
FreeCADGui.activeDocument().activeObject().LineColor = (LineColor_red, LineColor_green, LineColor_blue)
conteneurRectangle.addObject(double)
if switchBoundBoxCreateText == 1: # section create dimension info
#YZ-> XY
pl_0C1 = Draft.make_text([str(round(boundBoxLY,arrondi))],placement=pl_5.multVec(App.Vector(boundBoxLY/2, 0, 0)))
pl_0C1.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C1.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C1.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C1.ViewObject.FontSize = FontSizeText
pl_0C1.Label = nameLabel + "_Rectangle_Ri_5Y_" + str(round(boundBoxLY,arrondi))
conteneurInfo.addObject(pl_0C1)
pl_0C2 = Draft.make_text([str(round(boundBoxLZ,arrondi))],placement=pl_5.multVec(App.Vector(0, boundBoxLZ/2, 0 )))
pl_0C2.ViewObject.DisplayMode = seTBoundBoxDisplayModeText
pl_0C2.ViewObject.Justification = seTBoundBoxJustificationText
pl_0C2.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B)
pl_0C2.ViewObject.FontSize = FontSizeText
pl_0C2.Label = nameLabel + "_Rectangle_Ri_5Z_" + str(round(boundBoxLZ,arrondi))
conteneurInfo.addObject(pl_0C2)
except:
App_Console_PrintError(u"not done 5"+"\n")
#####
App.ActiveDocument.recompute()
except Exception:
App_Console_PrintError(u"Mauvaise sélection"+"\n")
else:
App_Console_PrintMessage(u"Sélectionnez un objet !"+"\n")
##############################################################################################################
def axisPlane( posX = 0.0, posY = 0.0, posZ = 0.0, namePlane = "FCPlane"): # plane creation
global sel
global document_
global object_Name
global boundBoxDiag
global switchInertia
global seTMemoClipBoard
global switchCreatePoint
global switchCreateAxis
global switchCreatePlane
global directionObj
FreeCAD.ActiveDocument.openTransaction(u"FCInfo Plane") # memorise les actions (avec annuler restore)
#FreeCAD.ActiveDocument.commitTransaction() # restore les actions (avec annuler restore)
#FreeCAD.ActiveDocument.abortTransaction() # abandonne les actions(avec annuler restore)
sel = FreeCADGui.Selection.getSelection()
retour = Macro_FCInfo_05 # icone dans une variable (ok / ko)
switchInertia = 1
if seTMemoClipBoard >= 1: # memo clipBoard
memo = QtWidgets.QApplication.clipboard()
memo.clear(mode=memo.Clipboard )
if seTMemoClipBoard == 1:
memo.setText(u"FreeCAD.Vector("+str(Around(posX))+", "+str(Around(posY))+", "+str(Around(posZ))+")", mode = memo.Clipboard) # format : FreeCAD.Vector(x, y, z)
elif seTMemoClipBoard == 2:
memo.setText(str(Around(posX))+", "+str(Around(posY))+", "+str(Around(posZ)), mode = memo.Clipboard) # format : x, y, z
elif seTMemoClipBoard == 3:
memo.setText(str(Around(posX))+" "+str(Around(posY))+" "+str(Around(posZ)), mode = memo.Clipboard) # format : x y z
if switchCreatePoint == 1:
try: # create point
point = Draft.makePoint( posX, posY, posZ)
point.ViewObject.PointColor = (1.0,0.0,0.0)
point.Label = u"FCPoint" + namePlane
retour = Macro_FCInfo_06
FreeCADGui.updateGui() # updateGui
App.ActiveDocument.recompute()
except Exception:
retour = Macro_FCInfo_07
if switchCreatePlane == 1:
try: # create plane
doc = App.activeDocument()
if boundBoxDiag == 0.0:
boundBoxDiag = 10.0
boundBoxLX = boundBoxLY = boundBoxLZ = boundBoxDiag
FCSpring = doc.addObject(u"App::DocumentObjectGroup", "FCPlane" + namePlane)
plr = FreeCAD.Placement()
plr.Base = FreeCAD.Vector( posX, posY, posZ)
### PlaneX-R
plan = App.ActiveDocument.addObject("Part::Plane","PlaneX-R")
plan.Length=boundBoxLZ
plan.Width=boundBoxLX
plan.Placement = plr
plan.Placement.Rotation = plan.Placement.Rotation.multiply(App.Rotation(0.0,-90.0,0.0))
plan.Placement = plan.Placement.multiply(App.Placement(App.Vector(-float(plan.Length)/2.0,-float(plan.Width)/2.0,0.0), App.Rotation(App.Vector(0.0,0.0,0.0),0.0), App.Vector(0.0,0.0,0.0)))
plan.ViewObject.LineColor = (1.0,0.66667,0.0)
plan.ViewObject.ShapeColor = (0.6, 0.0, 0.0)
plan.ViewObject.Transparency = 90
plan.ViewObject.LineWidth = 1.0
FCSpring.addObject(plan)
### PlaneY-V
plan = App.ActiveDocument.addObject("Part::Plane","PlaneY-V")
plan.Length=boundBoxLY
plan.Width=boundBoxLZ
plan.Placement = plr
plan.Placement.Rotation = plan.Placement.Rotation.multiply(App.Rotation(0.0,0.0,90.0))
plan.Placement = plan.Placement.multiply(App.Placement(App.Vector(-float(plan.Length)/2.0,-float(plan.Width)/2.0,0.0), App.Rotation(App.Vector(0.0,0.0,0.0),0.0), App.Vector(0.0,0.0,0.0)))
plan.ViewObject.LineColor = (1.0, 0.66667, 0.0)
plan.ViewObject.ShapeColor = (0.0, 0.6, 0.0)
plan.ViewObject.Transparency = 90
plan.ViewObject.LineWidth = 1.0
FCSpring.addObject(plan)
### PlaneZ-B
plan = App.ActiveDocument.addObject("Part::Plane","PlaneZ-B")
plan.Length=boundBoxLX
plan.Width=boundBoxLY
plan.Placement = plr
plan.Placement = plan.Placement.multiply(App.Placement(App.Vector(-float(plan.Length)/2.0,-float(plan.Width)/2.0,0.0), App.Rotation(App.Vector(0.0,0.0,0.0),0.0), App.Vector(0.0,0.0,0.0)))
plan.ViewObject.LineColor = (1.0,1.0,1.0)
plan.ViewObject.ShapeColor = (0.0,0.0,0.6)
plan.ViewObject.Transparency = 90
plan.ViewObject.LineWidth = 1.0
FCSpring.addObject(plan)
FreeCADGui.updateGui() # updateGui
App.ActiveDocument.recompute()
retour = Macro_FCInfo_06
except Exception:
retour = Macro_FCInfo_07
if switchCreateAxis == 1: # create axis
try:
doc = App.activeDocument()
if boundBoxDiag == 0.0:
boundBoxDiag = 10.0
boundBoxLX = boundBoxLY = boundBoxLZ = boundBoxDiag
FCSpring = doc.addObject("App::DocumentObjectGroup", "FCAxis" + namePlane)
plr = FreeCAD.Placement()
plr.Base = FreeCAD.Vector( posX, posY, posZ)
#create axis
points=[FreeCAD.Vector(0.0,0.0,0.0),FreeCAD.Vector(0.0,0.0,boundBoxLX)]
centerX = Draft.makeWire(points,closed=False,face=False,support=None)
centerX.Placement = plr
centerX.Placement.Rotation = centerX.Placement.Rotation.multiply(App.Rotation(0.0,90.0,0.0))
centerX.Placement = centerX.Placement.multiply(App.Placement(App.Vector(0.0,0.0,-float(boundBoxLX)/2.0), App.Rotation(App.Vector(0.0,0.0,0.0),0.0), App.Vector(0.0,0.0,0.0)))
centerX.ViewObject.LineColor = (1.0,1.0,1.0)
centerX.ViewObject.LineWidth = 1.0
centerX.ViewObject.DrawStyle = str(u"Dashdot")
centerX.Label = str(u"Axe Blanc PlaneX")
FCSpring.addObject(centerX)
points=[FreeCAD.Vector(0.0,0.0,0.0),FreeCAD.Vector(0.0,0.0,boundBoxLX)]
centerY = Draft.makeWire(points,closed=False,face=False,support=None)
centerY.Placement = plr
centerY.Placement.Rotation = centerY.Placement.Rotation.multiply(App.Rotation(0.0,90.0,90.0))
centerY.Placement = centerY.Placement.multiply(App.Placement(App.Vector(0.0,0.0,-float(boundBoxLX)/2.0), App.Rotation(App.Vector(0.0,0.0,0.0),0.0), App.Vector(0.0,0.0,0.0)))
centerY.ViewObject.LineColor = (1.0,1.0,1.0)
centerY.ViewObject.LineWidth = 1.0
centerY.ViewObject.DrawStyle = str(u"Dashdot")
centerY.Label = str(u"Axe Blanc PlaneY")
FCSpring.addObject(centerY)
points=[FreeCAD.Vector(0.0,0.0,0.0),FreeCAD.Vector(0.0,0.0,boundBoxLX)]
centerZ = Draft.makeWire(points,closed=False,face=False,support=None)
centerZ.Placement = plr
centerZ.Placement.Rotation = centerZ.Placement.Rotation.multiply(App.Rotation(0,0,0))
centerZ.Placement = centerZ.Placement.multiply(App.Placement(App.Vector(0.0,0.0,-float(boundBoxLX)/2.0), App.Rotation(App.Vector(0.0,0.0,0.0),0.0), App.Vector(0.0,0.0,0.0)))
centerZ.ViewObject.LineColor = (1.0,1.0,1.0)
centerZ.ViewObject.LineWidth = 1.0
centerZ.ViewObject.DrawStyle = str(u"Dashdot")
centerZ.Label = str(u"Axe Blanc PlaneZ")
FCSpring.addObject(centerZ)
FreeCADGui.updateGui() # updateGui
App.ActiveDocument.recompute()
retour = Macro_FCInfo_06
except Exception:
retour = Macro_FCInfo_07
try:
Gui.Selection.addSelection(App.ActiveDocument.getObject(object_Name))
except Exception:
None
#FreeCAD.ActiveDocument.commitTransaction() # restore les actions (avec annuler restore)
#FreeCAD.ActiveDocument.abortTransaction() # abandonne les actions(avec annuler restore)
FreeCADGui.updateGui() # updateGui
switchInertia = 0
return retour
def tableau():
global sel
global subElemName
global perimetre
global numberEdges
global Vertx
global Edges
global EdgesLong
global Faces
global FacesSurf
global FacesCoor
global compt_E
global compt_F
global compt_VF
global RowCountTest
global angleX1
global angleY1
global angleZ1
global angleX2
global angleY2
global angleZ2
if len(sel) != 0:
Vertx=[]
Edges=[]
Faces=[]
compt_E = 0
compt_F = 0
compt_VF = 0
perimetre = 0.0
EdgesLong = []
angleX1 = 0.0
angleY1 = 0.0
angleZ1 = 0.0
angleX2 = 0.0
angleY2 = 0.0
angleZ2 = 0.0
numberEdges = len(sel[0].Shape.Edges)
for j in enumerate(sel[0].Shape.Edges): # search Edges
compt_E+=1
Edges.append("Edge%d" % (j[0]+1))
EdgesLong.append(str(sel[0].Shape.Edges[compt_E-1].Length))
perimetre += (sel[0].Shape.Edges[compt_E-1].Length)
a = sel[0].Shape.Edges[compt_E-1].Vertexes[0]
Vertx.append(u"X1: "+str(a.Point.x))
Vertx.append(u"Y1: "+str(a.Point.y))
Vertx.append(u"Z1: "+str(a.Point.z))
try:
a = sel[0].Shape.Edges[compt_E-1].Vertexes[1] # search Vertexes Edges
Vertx.append(u"X2: "+str(a.Point.x))
Vertx.append(u"Y2: "+str(a.Point.y))
Vertx.append(u"Z2: "+str(a.Point.z))
except Exception:
Vertx.append(u"-")
Vertx.append(u"-")
Vertx.append(u"-")
FacesSurf = []
FacesCoor = []
for j in enumerate(sel[0].Shape.Faces): # search Faces
compt_F+=1
Faces.append(u"Face%d" % (j[0]+1))
FacesSurf.append(str(sel[0].Shape.Faces[compt_F-1].Area))
fco = 0
for f0 in sel[0].Shape.Faces[compt_F-1].Vertexes: # search Vertexes face
fco += 1
FacesCoor.append(u"X"+str(fco)+": "+str(f0.Point.x))
FacesCoor.append(u"Y"+str(fco)+": "+str(f0.Point.y))
FacesCoor.append(u"Z"+str(fco)+": "+str(f0.Point.z))
compt_VF += 1
FacesCoor += (u"T",)
RowCountTest = compt_E + compt_F + compt_VF
# encoder 3 couleurs et transparence renvoye la valeur (unsigned pour Preferences FC)
def unsignedEncode(red = 0, green = 0, blue = 0, transparent = 1): #
#(255 *256*256*256 ) + (85 *256*256) + (51 *256) +(1*255) = 4283773951
red = int(red*255)
green = int(green*255)
blue = int(blue*255)
transparent = int(transparent*255)
value = int((red*pow(256,3)) + (green*pow(256,2)) + (blue*pow(256,1)) + (transparent*pow(256,0)))
return value
# converti decimal en hexadecimal
def decimalTohexa(decimal = 0):
# 5 = "05"
hexa = str(hex(int(decimal)))[2:4]
if len(hexa) == 1:
hexa = "0" + hexa
return hexa
def affect(passTableau):
global ui
global sel
global document_
global object_Label
global object_Name
global typeObject
global object_Type
global subElemName
global RotationToEuler
global position0
global position1
global position2
global diffuseColorRF
global diffuseColorVF
global diffuseColorBF
global diffuseColorTF
global transparenceFace
global unsignedEncodeColor
global cols
global colorShapeFace
global colorShapeLine
global colorShapePoint
global BsplineRayonApproximatif
global longueurObjet
global rayonObjet
global perimetre
global numberEdges
global nombreArretesMesh
global nombreFacesMesh
global nombrePointsMesh
global Plan_xy
global Plan_xy_V
global Plan_yz
global Plan_yz_V
global Plan_zx
global Plan_zx_V
global surface
global surfaceFace
global volume_
global seTDensiteValue
global poids
global uniteM
global uniteMs
global uniteS
global uniteSs
global uniteV
global uniteVs
global uniteP
global unitePs
global uniteAs
global boundBox_
global boundBoxLX
global boundBoxLY
global boundBoxLZ
global boundBox_S
global BDvol
global adaptWithBody
global boundBoxCenterX
global boundBoxCenterY
global boundBoxCenterZ
global boundBoxDiag
global boundBoxXMin
global boundBoxYMin
global boundBoxZMin
global CenterOfMassX
global CenterOfMassY
global CenterOfMassZ
global MatrixX1
global MatrixY1
global MatrixZ1
global Matrix_1
global MatrixX2
global MatrixY2
global MatrixZ2
global Matrix_2
global MatrixX3
global MatrixY3
global MatrixZ3
global Matrix_3
global Matrix12
global Matrix13
global Matrix14
global Matrix15
global DeterminantM
global FacesSurf
global EdgesLong
global FacesCoor
global angleX1
global angleY1
global angleZ1
global angleX2
global angleY2
global angleZ2
global directionObj
global direcValueAt
global direcNormalAt
global typeNormalAt
global switchDisplayInfoObject
global MatrixX1_16
global MatrixY1_16
global MatrixZ1_16
global MatrixX2_16
global MatrixY2_16
global MatrixZ2_16
global MatrixX3_16
global MatrixY3_16
global MatrixZ3_16
global MatrixX1_17
global MatrixY1_17
global MatrixZ1_17
global MatrixX2_17
global MatrixY2_17
global MatrixZ2_17
global MatrixX3_17
global MatrixY3_17
global MatrixZ3_17
global refreshMatrix
global typeLongueur
global BsplineDetect
global BsplineNombreDeNoeuds
global BsplinePointsCoor
global BsplineArcsRadius
global BsplineArcsLocation
global switchBSplineCreateCircleConstructorAxis
global switchBSplineCreateCircleConstructor
global setBSplineToByArcValue
global BsplineCercleToolTip
global BsplineNumberElement
global BsplineCutLength
global BSplinetoByArcValeurS
global colorShapeFaceDiffuseColor
global detected
global indexFaceMesh
global coordPointsMesh
detected = ""
try:
atest = sel[0].Shape.Vertexes
except Exception:
####################
selEx = FreeCADGui.Selection.getSelectionEx()
objs = [selobj.Object for selobj in selEx]
if len(objs) >= 1:
ui.on_ZeroInfo() # zero 25-07-2023
if hasattr(objs[0], "Shape"):
colorShapeFace = colorShapeLine = colorShapePoint = colorShapeFaceDiffuseColor = []
s = objs[0].Shape
elif hasattr(objs[0], "Mesh"):
##https://wiki.freecadweb.org/Mesh_API
originalObject = objs[0]
s = objs[0].Mesh # object mesh
sel = Gui.Selection.getSelection() # object
originalObject = sel[0] # object
colorShapeFace = colorShapeLine = colorShapePoint = colorShapeFaceDiffuseColor = []
colorShapeFace = sel[0].ViewObject.ShapeColor
colorShapeLine = sel[0].ViewObject.LineColor
##colorShapePoint = sel[0].ViewObject.PointColor
detected = str(s)
cols = colors = []
cols = sel[0].ViewObject.ShapeColor
diffuseColorRF = cols[0]
diffuseColorVF = cols[1]
diffuseColorBF = cols[2]
diffuseColorTF = float(transparenceFace) / 100.0
transparenceFace = FreeCAD.ActiveDocument.getObject(sel[0].Name).ViewObject.Transparency
# unsignedEncodeColor decimal pour FC
unsignedEncodeColor = '"' + str(unsignedEncode((diffuseColorRF), (diffuseColorVF), (diffuseColorBF), 0.0)) + '"'
diffuseColorHexa = '"' + "#" + decimalTohexa(int(diffuseColorRF*255.0)) + decimalTohexa(int(diffuseColorVF*255.0)) + decimalTohexa(int(diffuseColorBF*255.0)) + '"'
diffuseColorHexaPy = '"' + "0x" + decimalTohexa(int(diffuseColorRF*255.0)) + decimalTohexa(int(diffuseColorVF*255.0)) + decimalTohexa(int(diffuseColorBF*255.0)) + '"'
diffuseColorRVB = '"' + str(int(diffuseColorRF*255.0)) + "," + str(int(diffuseColorVF*255.0)) + "," + str(int(diffuseColorBF*255.0)) + '"'
diffuseColorFloat = '"' + "(" + str(Around(diffuseColorRF)) + "," + str(Around(diffuseColorVF)) + "," + str(Around(diffuseColorBF)) + ")" + '"'
#
unsignedEncodeColor = unsignedEncodeColor + " , " + diffuseColorHexa + " , " + diffuseColorHexaPy + " , " + diffuseColorRVB + " , " + diffuseColorFloat
object_Label = sel[0].Label
object_Name = sel[0].Name
object_Type = sel[0].TypeId
typeObject = sel[0].Module
boundBox_ = s.BoundBox
boundBoxLX = boundBox_.XLength
boundBoxLY = boundBox_.YLength
boundBoxLZ = boundBox_.ZLength
boundBoxDiag = boundBox_.DiagonalLength
boundBox_S = "[X: "+str(Around(boundBoxLX * uniteM))+" "+uniteMs+"] x [Y: "+str(Around(boundBoxLY * uniteM))+" "+uniteMs+"] x [Z: "+str(Around(boundBoxLZ * uniteM))+" "+uniteMs+"] Diagonal: " + str(Around(boundBoxDiag * uniteM))+" "+uniteMs
####
boundBoxLocation = App.Vector(boundBox_.Center[0], boundBox_.Center[1], boundBox_.Center[2])
BDvol = adjustedGlobalPlacement(sel[0], boundBoxLocation)
boundBoxCenterX = BDvol.Base[0]
boundBoxCenterY = BDvol.Base[1]
boundBoxCenterZ = BDvol.Base[2]
####
surface = s.Area
surfaceFace = s.Facets[indexFaceMesh].Area
coordPointsMesh = s.Facets[indexFaceMesh].Points
###################################### mesh later
# x=0
# for i in s.Facets:
# print(str(Around(i.Area * uniteM )) + uniteMs)
# print(str((i.getEdge(0) )))
# print(str((i.getEdge(0).Points)))
# print(str(i.Points))
# print("____________________________________________")
# x += 1
# if x >= 10 : break
######################################
try: # no in version 018
length0 = s.Facets[indexFaceMesh].getEdge(0).Length
length1 = s.Facets[indexFaceMesh].getEdge(1).Length
length2 = s.Facets[indexFaceMesh].getEdge(2).Length
except Exception:
length0 = length1 = length2 = 0.0
longueurObjet = length0 + length1 + length2
typeLongueur = u"Périmètre de la face"
if switchCreateLineDiVatNatOnClick == 0:
typeNormalAt = u"Normal_____"
else:
typeNormalAt = u"*Normal_____"
direcNormalAt = s.Facets[indexFaceMesh].Normal
volume_ = s.Volume
# poids
poids = ((volume_ * seTDensiteValue) * uniteP) / 1000.0 # mm3 (mm base FreeCAD)
CenterOfMassX = s.CenterOfGravity[0]
CenterOfMassY = s.CenterOfGravity[1]
CenterOfMassZ = s.CenterOfGravity[2]
subElemName = "Face" + str(indexFaceMesh)
DeterminantM = 0.0
nombreFacesMesh = s.CountFacets
nombrePointsMesh = s.CountPoints
try: # no in version 018
nombreArretesMesh = s.CountEdges
except Exception:
nombreArretesMesh = 0
#print(s.Topology)
elif hasattr(objs[0], "Points"):
s = objs[0].Points
#sel = Gui.Selection.getSelection()
detected = str(s)
sel = Gui.Selection.getSelection()
cols = colors = []
colorShapeFace = colorShapeLine = colorShapePoint = colorShapeFaceDiffuseColor = []
cols = FreeCAD.ActiveDocument.getObject(sel[0].Name).ViewObject.ShapeColor
diffuseColorRF = cols[0]
diffuseColorVF = cols[1]
diffuseColorBF = cols[2]
diffuseColorTF = float(transparenceFace) / 100.0
transparenceFace = FreeCAD.ActiveDocument.getObject(sel[0].Name).ViewObject.Transparency
# unsignedEncodeColor decimal pour FC
unsignedEncodeColor = '"' + str(unsignedEncode((diffuseColorRF), (diffuseColorVF), (diffuseColorBF), 0.0)) + '"'
diffuseColorHexa = '"' + "#" + decimalTohexa(int(diffuseColorRF*255.0)) + decimalTohexa(int(diffuseColorVF*255.0)) + decimalTohexa(int(diffuseColorBF*255.0)) + '"'
diffuseColorHexaPy = '"' + "0x" + decimalTohexa(int(diffuseColorRF*255.0)) + decimalTohexa(int(diffuseColorVF*255.0)) + decimalTohexa(int(diffuseColorBF*255.0)) + '"'
diffuseColorRVB = '"' + str(int(diffuseColorRF*255.0)) + "," + str(int(diffuseColorVF*255.0)) + "," + str(int(diffuseColorBF*255.0)) + '"'
diffuseColorFloat = '"' + "(" + str(Around(diffuseColorRF)) + "," + str(Around(diffuseColorVF)) + "," + str(Around(diffuseColorBF)) + ")" + '"'
#
unsignedEncodeColor = unsignedEncodeColor + " , " + diffuseColorHexa + " , " + diffuseColorHexaPy + " , " + diffuseColorRVB + " , " + diffuseColorFloat
object_Label = sel[0].Label
object_Name = sel[0].Name
object_Type = sel[0].TypeId
typeObject = sel[0].Module
nombrePointsMesh = s.CountPoints
boundBox_ = s.BoundBox
boundBoxLX = boundBox_.XLength
boundBoxLY = boundBox_.YLength
boundBoxLZ = boundBox_.ZLength
try:
boundBoxDiag = boundBox_.DiagonalLength
except Exception:
boundBoxDiag = 0.0
boundBox_S = "[X: "+str(Around(boundBoxLX * uniteM))+" "+uniteMs+"] x [Y: "+str(Around(boundBoxLY * uniteM))+" "+uniteMs+"] x [Z: "+str(Around(boundBoxLZ * uniteM))+" "+uniteMs+"] Diagonal: " + str(Around(boundBoxDiag * uniteM))+" "+uniteMs
#### correction
boundBoxLocation = App.Vector(boundBox_.Center[0], boundBox_.Center[1], boundBox_.Center[2])
BDvol = adjustedGlobalPlacement(sel[0], boundBoxLocation)
####
boundBoxCenterX = BDvol.Base[0]
boundBoxCenterY = BDvol.Base[1]
boundBoxCenterZ = BDvol.Base[2]
CenterOfMassX = CenterOfMassY = CenterOfMassZ = 0.0
#### Fem debut
elif sel[0].isDerivedFrom("Fem::FemPostWarpVectorFilter"): # same sel[0].TypeId
detected = "FemPostWarpVectorFilter"
object_Label = sel[0].Label
object_Name = sel[0].Name
object_Type = sel[0].TypeId
typeObject = sel[0].Module
boundBox_ = sel[0].ViewObject.getBoundingBox()
boundBoxLX = boundBox_.XLength
boundBoxLY = boundBox_.YLength
boundBoxLZ = boundBox_.ZLength
try:
boundBoxDiag = boundBox_.DiagonalLength
except Exception:
boundBoxDiag = 0.0
boundBox_S = "[X: "+str(Around(boundBoxLX * uniteM))+" "+uniteMs+"] x [Y: "+str(Around(boundBoxLY * uniteM))+" "+uniteMs+"] x [Z: "+str(Around(boundBoxLZ * uniteM))+" "+uniteMs+"] Diagonal: " + str(Around(boundBoxDiag * uniteM))+" "+uniteMs
#### correction
boundBoxLocation = App.Vector(boundBox_.Center[0], boundBox_.Center[1], boundBox_.Center[2])
BDvol = adjustedGlobalPlacement(sel[0], boundBoxLocation)
####
boundBoxCenterX = BDvol.Base[0]
boundBoxCenterY = BDvol.Base[1]
boundBoxCenterZ = BDvol.Base[2]
CenterOfMassX = CenterOfMassY = CenterOfMassZ = 0.0
#### Fem fin ##################
else:
App_Console_PrintMessage(u"Sélection invalide " + "\n")
errorDialog(u"Sélection invalide " + "\n" + detected )
sel = selEx = ""
else:
sel = FreeCADGui.Selection.getSelection()
mydoc = FreeCAD.activeDocument().Name
document_ = mydoc
try:
object_Type += " / " + sel[0].TypeId
object_Type = sel[0].Shape.TypeId
except Exception:
object_Type = "?"
try:
object_Label = sel[0].Label
object_Name = sel[0].Name
except Exception:
object_Label = ""
object_Name = ""
try:
SubElement = FreeCADGui.Selection.getSelectionEx()
subElemName = SubElement[0].SubElementNames[0]
except Exception:
subElemName = ""
#### sketcher begin ####
##
##https://forum.freecadweb.org/viewtopic.php?f=22&t=53127
##How to select edges inside of Sketcher?
##
sketch = Gui.Selection.getSelection()[0]
App.ActiveDocument.recompute()
if (Gui.ActiveDocument.getInEdit() and (sketch.TypeId == "Sketcher::SketchObject")) and ("Constraint" not in subElemName): # sketcher open
try:
longueurObjet = rayonObjet = points1 = points2 = 0.0
directionObj = direcValueAt = direcNormalAt = ""
typeLongueur = RotationToEuler = ""
nameSketch = sketch.Name
sketch0 = Gui.Selection.getSelectionEx()[0]
subElemName = sketch0.SubElementNames[0]
RotationToEuler = sketch.Placement.Rotation.toEuler() # Plan (Direction)
indexSubObject = int(subElemName[4:]) - 1 # index
sObject = App.ActiveDocument.getObject(nameSketch).Geometry[indexSubObject]
typeObject = sketch.TypeId
if isinstance(sObject,(Part.LineSegment)):
#print("Part.LineSegment")
points1 = sObject.StartPoint
points2 = sObject.EndPoint
longueurObjet = sObject.length()
typeLongueur = u"Longueur (Sk) "
directionObj = points2.sub(points1)
elif isinstance(sObject,(Part.BSplineCurve)):
#print("Part.BSplineCurve")
points1 = sObject.StartPoint
points2 = sObject.EndPoint
longueurObjet = sObject.length()
typeLongueur = u"Longueur (Sk) "
directionObj = points2.sub(points1)
elif isinstance(sObject,(Part.Circle)):
#print("Part.Circle")
longueurObjet = sObject.length()
typeLongueur = u"Longueur (Sk) "
rayonObjet = sObject.Radius
elif isinstance(sObject,(Part.ArcOfCircle)):
#print("Part.ArcOfCircle")
points1 = sObject.StartPoint
points2 = sObject.EndPoint
longueurObjet = sObject.length()
typeLongueur = u"Longueur (Sk) "
rayonObjet = sObject.Radius
directionObj = points2.sub(points1)
else:
None
####
# angles
if isinstance(sObject,(Part.Circle)) == False:
try:
angleX1 = points1.x; angleY1 = points1.y; angleZ1 = points1.z
angleX2 = points2.x; angleY2 = points2.y; angleZ2 = points2.z
except Exception:
angleX1 = angleY1 = angleZ1 = 0.0
angleX2 = angleY2 = angleZ2 = 0.0
modeTypeAngle = 1 # 1 = degrees other = radians
try:
Plan_xy = Around(angle2(angleX1, angleY1, angleX2, angleY2, modeTypeAngle))
Plan_xy_V = "[,"+str(Around(angleX1))+" , "+str(Around(angleY1))+",] [,"+str(Around(angleX2))+" , "+str(Around(angleY2))+",]"
except Exception:
Plan_xy = 0.0; Plan_xy_V = ""
try:
Plan_yz = Around(angle2(angleY1, angleZ1, angleY2, angleZ2, modeTypeAngle))
Plan_yz_V = "[,"+str(Around(angleY1))+" , "+str(Around(angleZ1))+",] [,"+str(Around(angleY2))+" , "+str(Around(angleZ2))+",]"
except Exception:
Plan_yz = 0.0; Plan_yz_V = ""
try:
Plan_zx = Around(angle2(angleZ1, angleX1, angleZ2, angleX2, modeTypeAngle))
Plan_zx_V = "[,"+str(Around(angleZ1))+" , "+str(Around(angleX1))+",] [,"+str(Around(angleZ2))+" , "+str(Around(angleX2))+",]"
except Exception:
Plan_zx = 0.0; Plan_zx_V = ""
except Exception:
None
##
#### sketcher end ####
else:
# colors (DiffuseColor)
try:
#### search color face selected
a = FreeCADGui.Selection.getSelectionEx() # selection sous objet
aa = FreeCADGui.Selection.getSelection() # selection objet
colorShapeFace = colorShapeLine = colorShapePoint = colorShapeFaceDiffuseColor = []
colorShapeFace = aa[0].ViewObject.ShapeColor
colorShapeLine = aa[0].ViewObject.LineColor
colorShapePoint = aa[0].ViewObject.PointColor
diffuseColorRF = diffuseColorVF = diffuseColorBF = diffuseColorTF = 0.0
transparenceFace = 0
cols = colors = []
if str(Gui.Selection.getSelectionEx()[0].SubObjects[0])[1:5] == "Face":
cols = colors = []
cols = FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.DiffuseColor
if len(cols) == 1:
for i in aa[0].Shape.Faces:
colors += [(cols[0])]
cols = colors
else:
colors = cols
fce = int(a[0].SubElementNames[0][4:])-1
indexFaceMesh = fce
colorShapeFaceDiffuseColor = colors #[fce]
diffuseColorRF = colors[fce][0]
diffuseColorVF = colors[fce][1]
diffuseColorBF = colors[fce][2]
diffuseColorTF = colors[fce][3]
transparenceFace = math.ceil(round(cols[fce][3]*100, 12))
# unsignedEncodeColor decimal pour FC
unsignedEncodeColor = '"' + str(unsignedEncode((diffuseColorRF), (diffuseColorVF), (diffuseColorBF), 1.0)) + '"'
diffuseColorHexa = '"' + "#" + decimalTohexa(int(diffuseColorRF*255.0)) + decimalTohexa(int(diffuseColorVF*255.0)) + decimalTohexa(int(diffuseColorBF*255.0)) + '"'
diffuseColorHexaPy = '"' + "0x" + decimalTohexa(int(diffuseColorRF*255.0)) + decimalTohexa(int(diffuseColorVF*255.0)) + decimalTohexa(int(diffuseColorBF*255.0)) + '"'
diffuseColorRVB = '"' + str(int(diffuseColorRF*255.0)) + "," + str(int(diffuseColorVF*255.0)) + "," + str(int(diffuseColorBF*255.0)) + '"'
diffuseColorFloat = '"' + "(" + str(Around(diffuseColorRF)) + "," + str(Around(diffuseColorVF)) + "," + str(Around(diffuseColorBF)) + ")" + '"'
#
unsignedEncodeColor = unsignedEncodeColor + " , " + diffuseColorHexa + " , " + diffuseColorHexaPy + " , " + diffuseColorRVB + " , " + diffuseColorFloat
elif str(Gui.Selection.getSelectionEx()[0].SubObjects[0])[1:5] == "Edge":
cols = FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.LineColor
diffuseColorRF = cols[0]
diffuseColorVF = cols[1]
diffuseColorBF = cols[2]
diffuseColorTF = 0.0
transparenceFace = FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.Transparency
# unsignedEncodeColor decimal pour FC
unsignedEncodeColor = '"' + str(unsignedEncode((diffuseColorRF), (diffuseColorVF), (diffuseColorBF), 0.0)) + '"'
diffuseColorHexa = '"' + "#" + decimalTohexa(int(diffuseColorRF*255.0)) + decimalTohexa(int(diffuseColorVF*255.0)) + decimalTohexa(int(diffuseColorBF*255.0)) + '"'
diffuseColorHexaPy = '"' + "0x" + decimalTohexa(int(diffuseColorRF*255.0)) + decimalTohexa(int(diffuseColorVF*255.0)) + decimalTohexa(int(diffuseColorBF*255.0)) + '"'
diffuseColorRVB = '"' + str(int(diffuseColorRF*255.0)) + "," + str(int(diffuseColorVF*255.0)) + "," + str(int(diffuseColorBF*255.0)) + '"'
diffuseColorFloat = '"' + "(" + str(Around(diffuseColorRF)) + "," + str(Around(diffuseColorVF)) + "," + str(Around(diffuseColorBF)) + ")" + '"'
#
unsignedEncodeColor = unsignedEncodeColor + " , " + diffuseColorHexa + " , " + diffuseColorHexaPy + " , " + diffuseColorRVB + " , " + diffuseColorFloat
elif str(Gui.Selection.getSelectionEx()[0].SubObjects[0])[1:7] == "Vertex":
cols = FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.PointColor
diffuseColorRF = cols[0]
diffuseColorVF = cols[1]
diffuseColorBF = cols[2]
diffuseColorTF = 0.0
transparenceFace = FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.Transparency
# unsignedEncodeColor decimal pour FC
unsignedEncodeColor = '"' + str(unsignedEncode((diffuseColorRF), (diffuseColorVF), (diffuseColorBF), 0.0)) + '"'
diffuseColorHexa = '"' + "#" + decimalTohexa(int(diffuseColorRF*255.0)) + decimalTohexa(int(diffuseColorVF*255.0)) + decimalTohexa(int(diffuseColorBF*255.0)) + '"'
diffuseColorHexaPy = '"' + "0x" + decimalTohexa(int(diffuseColorRF*255.0)) + decimalTohexa(int(diffuseColorVF*255.0)) + decimalTohexa(int(diffuseColorBF*255.0)) + '"'
diffuseColorRVB = '"' + str(int(diffuseColorRF*255.0)) + "," + str(int(diffuseColorVF*255.0)) + "," + str(int(diffuseColorBF*255.0)) + '"'
diffuseColorFloat = '"' + "(" + str(Around(diffuseColorRF)) + "," + str(Around(diffuseColorVF)) + "," + str(Around(diffuseColorBF)) + ")" + '"'
#
unsignedEncodeColor = unsignedEncodeColor + " , " + diffuseColorHexa + " , " + diffuseColorHexaPy + " , " + diffuseColorRVB + " , " + diffuseColorFloat
else:
unsignedEncodeColor = unsignedEncodeColor = diffuseColorHexa = diffuseColorHexaPy = diffuseColorRVB = ""
diffuseColorRF = 0.0; diffuseColorVF = 0.0; diffuseColorBF = 0.0; diffuseColorTF = 0.0; unsignedEncodeColor = ""
except Exception:
if str(aa) == "[<Part::Part2DObject>]": # (triangle) une Face du Mesh
colorShapeFace = colorShapeLine = colorShapePoint = colorShapeFaceDiffuseColor = []
colorShapeFace = FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.ShapeColor
cols = FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.LineColor
diffuseColorRF = cols[0]
diffuseColorVF = cols[1]
diffuseColorBF = cols[2]
diffuseColorTF = 0.0
transparenceFace = FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.Transparency
# unsignedEncodeColor decimal pour FC
unsignedEncodeColor = '"' + str(unsignedEncode((diffuseColorRF), (diffuseColorVF), (diffuseColorBF), 0.0)) + '"'
diffuseColorHexa = '"' + "#" + decimalTohexa(int(diffuseColorRF*255.0)) + decimalTohexa(int(diffuseColorVF*255.0)) + decimalTohexa(int(diffuseColorBF*255.0)) + '"'
diffuseColorHexaPy = '"' + "0x" + decimalTohexa(int(diffuseColorRF*255.0)) + decimalTohexa(int(diffuseColorVF*255.0)) + decimalTohexa(int(diffuseColorBF*255.0)) + '"'
diffuseColorRVB = '"' + str(int(diffuseColorRF*255.0)) + "," + str(int(diffuseColorVF*255.0)) + "," + str(int(diffuseColorBF*255.0)) + '"'
diffuseColorFloat = '"' + "(" + str(Around(diffuseColorRF)) + "," + str(Around(diffuseColorVF)) + "," + str(Around(diffuseColorBF)) + ")" + '"'
#
unsignedEncodeColor = unsignedEncodeColor + " , " + diffuseColorHexa + " , " + diffuseColorHexaPy + " , " + diffuseColorRVB + " , " + diffuseColorFloat
else:
unsignedEncodeColor = unsignedEncodeColor = diffuseColorHexa = diffuseColorHexaPy = diffuseColorRVB = ""
diffuseColorRF = 0.0; diffuseColorVF = 0.0; diffuseColorBF = 0.0; diffuseColorTF = 0.0; unsignedEncodeColor = ""
# Shape
# longueur Objet
try:
longueurObjet = Gui.Selection.getSelectionEx()[0].SubObjects[0].Length
if str(Gui.Selection.getSelectionEx()[0].SubObjects[0])[1:5] == "Face":
typeLongueur = u"Périmètre de la face"
else:
typeLongueur = u"Longueur de l'objet "
except Exception:
longueurObjet = 0.0
typeLongueur = u"Longueur de l'objet "
########################
#
# if (str(s.Curve)[1:5]) == "Line" :
# FreeCAD.Console.PrintMessage( "4The Object is a Line!\n")
#
############################
# rayon Objet cas cercle et Bspline Begin
BsplineDetect = ""
BsplinePointsCoor = []
rayonObjet = 0.0
try:
BsplineDetect = str(Gui.Selection.getSelectionEx()[0].SubObjects[0].Curve) #"<BSplineCurve object>"
except Exception: BsplineDetect = ""
# surface Face Radius (surveiller la position !!)
try:
rayonObjet = Gui.Selection.getSelectionEx()[0].SubObjects[0].Surface.Radius
except Exception:
rayonObjet = 0.0
try:
rayonObjet = Gui.Selection.getSelectionEx()[0].SubObjects[0].Curve.Radius
BsplineDetect = ""
BsplineArcsRadius = []
except Exception:
# try:
if str(BsplineDetect) == "<BSplineCurve object>" :
BsplineDetect = Gui.Selection.getSelectionEx()[0].SubObjects[0].Curve
BsplineNombreDeNoeuds = BsplineDetect.NbKnots
#### toBiArcs
BsplineArcsToBiArcs = BsplineDetect.toBiArcs(setBSplineToByArcValue)
BsplineNumberElement = len(BsplineArcsToBiArcs)
BsplineArcsRadius = []
for i in BsplineArcsToBiArcs: # radius on point "toBiArcs(0.00001)"
try:
BsplineArcsRadius.append(i.Radius) # .Axis , Vector (-0.7265381966759821, 0.49597386656536946, -0.4755545946103446)
# .Location (center) , Vector (47.192438328074296, -12.532928959782193, -85.17027221104478)
# .Circle , Circle (Radius : 390.516, Position : (47.1924, -12.5329, -85.1703), Direction : (-0.726538, 0.495974, -0.475555))
# .Radius , 390.51645180669107
#ArcOfCircle (Radius : 90.2998, Position : (-123.212, -33.0236, 153.798), Direction : (-0.726538, 0.495974, -0.475555), Parameter : (3.37639, 3.38484))
rayonObjet = BsplineArcsRadius[0]
except Exception:
BsplineArcsRadius = []
rayonObjet = 0.0
#### for create points and circle creators of the BSpline
if (switchBSplineCreateCircleConstructorAxis == 1) or ( switchBSplineCreateCircleConstructor == 1):
try:
BsplineArcsLocation = []
for i in BsplineArcsToBiArcs:
BsplineArcsLocation.append(i) # .Location (center), Vector (47.192438328074296, -12.532928959782193, -85.17027221104478)
except Exception:
BsplineArcsLocation = []
None
####
BsplineNumberToBiArcs = len(BsplineArcsToBiArcs)
#### toBiArcs
try:
BsplineRayonApproximatif = str(Around(BsplineArcsRadius[0] * float(uniteM))) + " " + uniteMs
except Exception :
BsplineRayonApproximatif = u""
try:
#### distance between 2 points Shape
bsplineL = Gui.Selection.getSelection()[0]
BsplineLength = float(bsplineL.Shape.Length)
BsplineCutLength = BsplineLength / float(BsplineNumberElement)
#### points noeuds
for i in bsplineL.Points: # nombre de points (noeuds)
BsplinePointsCoor.append(i)
#### points Shape
except Exception: # None
#### distance between 2 points Curve.getPoles()
bsplineL = Gui.Selection.getSelectionEx()[0].SubObjects[0] #.Curve
BsplineLength = float(bsplineL.Length)
BsplineCutLength = BsplineLength / float(BsplineNumberElement)
#### points a.Curve.NbKnots
for i in Gui.Selection.getSelectionEx()[0].SubObjects[0].Curve.getPoles(): # nombre de poles (noeuds)
BsplinePointsCoor.append(i)
#### points a.Curve.NbKnots
typeLongueur = "Length BSpline"
# except Exception:
# rayonObjet = 0.0
# rayon Objet cas cercle et Bspline End
# tableau
if passTableau == 1:
tableau()
# surface
try: # object
surface = sel[0].Shape.Area
except Exception:
surface = 0.0
try: # face
surfaceFace = Gui.Selection.getSelectionEx()[0].SubObjects[0].Area
except Exception:
surfaceFace = 0.0
# volume
try:
volume_ = sel[0].Shape.Volume
except Exception:
volume_ = 0.0
# poids
poids = ((volume_ * seTDensiteValue) * uniteP) / 1000.0 # mm3 (mm base FreeCAD)
# boundinbox (dimensions hors tout)
try:
boundBox_ = sel[0].Shape.BoundBox
boundBoxLX = boundBox_.XLength
boundBoxLY = boundBox_.YLength
boundBoxLZ = boundBox_.ZLength
boundBoxDiag = boundBox_.DiagonalLength
boundBox_S = "[X: "+str(Around(boundBoxLX * uniteM))+" "+uniteMs+"] x [Y: "+str(Around(boundBoxLY * uniteM))+" "+uniteMs+"] x [Z: "+str(Around(boundBoxLZ * uniteM))+" "+uniteMs+"] Diagonal: " + str(Around(boundBoxDiag * uniteM))+" "+uniteMs
boundBoxXMin = boundBox_.XMin # BB tracing
boundBoxYMin = boundBox_.YMin
boundBoxZMin = boundBox_.ZMin
except Exception:
boundBox_ = boundBoxLX = boundBoxLY = boundBoxLZ = boundBoxDiag = 0.0
boundBox_S = ""
if adaptWithBody == 0:
# centre de la forme (boundBox) mode sans Body (normal)
try:
boundBoxCenterX = boundBox_.Center[0]
boundBoxCenterY = boundBox_.Center[1]
boundBoxCenterZ = boundBox_.Center[2]
except Exception:
boundBoxCenterX = boundBoxCenterY = boundBoxCenterZ = 0.0
else:
# centre de la forme (boundBox) mode avec correction Body GetGlobalPlacement
try:
#### correction
boundBoxLocation = App.Vector(boundBox_.Center[0], boundBox_.Center[1], boundBox_.Center[2])
BDvol = adjustedGlobalPlacement(sel[0], boundBoxLocation)
####
boundBoxCenterX = BDvol.Base[0]
boundBoxCenterY = BDvol.Base[1]
boundBoxCenterZ = BDvol.Base[2]
except Exception:
boundBoxCenterX = boundBoxCenterY = boundBoxCenterZ = 0.0
# Perimetre tous les bords
select = FreeCADGui.Selection.getSelection()
numberEdges = len(select[0].Shape.Edges)
perimetre = 0.0
try:
for i in select[0].Shape.Edges:
perimetre += i.Length
except Exception:
perimetre = 0.0
# vertexes pour les angles
try:
selectionObjects = FreeCADGui.Selection.getSelectionEx()[0].SubObjects[0]
if str(selectionObjects)[1:5] == "Edge":
points = selectionObjects.Edges[0].Vertexes[0].Point
angleX1 = points.x
angleY1 = points.y
angleZ1 = points.z
points = selectionObjects.Edges[0].Vertexes[1].Point
angleX2 = points.x
angleY2 = points.y
angleZ2 = points.z
except Exception:
angleX1 = angleY1 = angleZ1 = 0.0
angleX2 = angleY2 = angleZ2 = 0.0
modeTypeAngle = 1
try:
Plan_xy = Around(angle2(angleX1,angleY1,angleX2,angleY2,modeTypeAngle))
Plan_xy_V = "[,"+str(Around(angleX1))+" , "+str(Around(angleY1))+",] [,"+str(Around(angleX2))+" , "+str(Around(angleY2))+",]"
except Exception:
Plan_xy = 0.0
Plan_xy_V = ""
try:
Plan_yz = Around(angle2(angleY1,angleZ1,angleY2,angleZ2,modeTypeAngle))
Plan_yz_V = "[,"+str(Around(angleY1))+" , "+str(Around(angleZ1))+",] [,"+str(Around(angleY2))+" , "+str(Around(angleZ2))+",]"
except Exception:
Plan_yz = 0.0
Plan_yz_V = ""
try:
Plan_zx = Around(angle2(angleZ1,angleX1,angleZ2,angleX2,modeTypeAngle))
Plan_zx_V = "[,"+str(Around(angleZ1))+" , "+str(Around(angleX1))+",] [,"+str(Around(angleZ2))+" , "+str(Around(angleX2))+",]"
except Exception:
Plan_zx = 0.0
Plan_zx_V = ""
# angle Placement
try:
typeObject = sel[0].Shape.ShapeType
except Exception:
typeObject = ""
# center of mass
try:
c = FreeCADGui.Selection.getSelection()[0].Shape.CenterOfMass
except Exception:
try:
selEx = FreeCADGui.Selection.getSelectionEx()
objs = [selobj.Object for selobj in selEx]
s = objs[0].Shape
c = s.Solids[0].CenterOfMass
except Exception:
c = ""
if adaptWithBody == 0:
# centre de la forme (CenterOfMass) mode sans Body (normal)
try:
CenterOfMassX = c.x
CenterOfMassY = c.y
CenterOfMassZ = c.z
except Exception:
CenterOfMassX = CenterOfMassY = CenterOfMassZ = 0.0
else:
# centre de la forme (CenterOfMass) mode avec correction Body GetGlobalPlacement
try:
#### correction
boundBoxLocation = App.Vector(c[0], c[1], c[2])
BDvol = adjustedGlobalPlacement(sel[0], boundBoxLocation)
####
CenterOfMassX = BDvol.Base[0]
CenterOfMassY = BDvol.Base[1]
CenterOfMassZ = BDvol.Base[2]
except Exception:
CenterOfMassX = CenterOfMassY = CenterOfMassZ = 0.0
# inertia DeterminantM
try: # inertia DeterminantM
DeterminantM = FreeCADGui.Selection.getSelection()[0].Shape.MatrixOfInertia.determinant()
except Exception:
try:
selEx = FreeCADGui.Selection.getSelectionEx()
objs = [selobj.Object for selobj in selEx]
s = objs[0].Shape
DeterminantM = s.Solids[0].MatrixOfInertia.determinant()
except Exception:
DeterminantM = 0.0
try: # inertia
m = FreeCADGui.Selection.getSelection()[0].Shape.MatrixOfInertia
except Exception:
try:
selEx = FreeCADGui.Selection.getSelectionEx()
objs = [selobj.Object for selobj in selEx]
s = objs[0].Shape
m = s.Solids[0].MatrixOfInertia
except Exception:
m = ""
# Matrix of inertia
## Verify this section by person knowing the inertia position ##
## ONLY IF THE OBJECT IS PRESENT IN ONE BODY ##
## and post your knowledges in the forum tread if it is not correct ##
## http://forum.freecadweb.org/viewtopic.php?f=10&t=3185 ##
try: # Matrix of inertia
MatrixX1_16 = MatrixX1 = (m.A[0])
MatrixY1_16 = MatrixY1 = (m.A[1])
MatrixZ1_16 = MatrixZ1 = (m.A[2])
Matrix_1 = (m.A[3])
MatrixX2_16 = MatrixX2 = (m.A[4])
MatrixY2_16 = MatrixY2 = (m.A[5])
MatrixZ2_16 = MatrixZ2 = (m.A[6])
Matrix_2 = (m.A[7])
MatrixX3_16 = MatrixX3 = (m.A[8])
MatrixY3_16 = MatrixY3 = (m.A[9])
MatrixZ3_16 = MatrixZ3 = (m.A[10])
Matrix_3 = (m.A[11])
Matrix12 = (m.A[12])
Matrix13 = (m.A[13])
Matrix14 = (m.A[14])
Matrix15 = (m.A[15])
refreshMatrix = 1
except Exception:
MatrixX1_16 = MatrixX1 = 0.0
MatrixY1_16 = MatrixY1 = 0.0
MatrixZ1_16 = MatrixZ1 = 0.0
Matrix_1 = 0.0
MatrixX2_16 = MatrixX2 = 0.0
MatrixY2_16 = MatrixY2 = 0.0
MatrixZ2_16 = MatrixZ2 = 0.0
Matrix_2 = 0.0
MatrixX3_16 = MatrixX3 = 0.0
MatrixY3_16 = MatrixY3 = 0.0
MatrixZ3_16 = MatrixZ3 = 0.0
Matrix_3 = 0.0
Matrix12 = 0.0
Matrix13 = 0.0
Matrix14 = 0.0
Matrix15 = 0.0
refreshMatrix = 0
try: # Direction
edgeObject = Gui.Selection.getSelection()[0].Shape.Edges[0]
directionObj = edgeObject.Vertexes[1].Point.sub(edgeObject.Vertexes[0].Point)
except Exception:
directionObj = "[]"
try: # valueAt(0)
direcValueAt = Gui.Selection.getSelectionEx()[0].SubObjects[0].Edges[0].valueAt(0)
except Exception:
direcValueAt = "[]"
try: # normalAt(0,0)
if switchCreateLineDiVatNatOnClick == 0:
typeNormalAt = u"NormalAt(0,0)"
else:
typeNormalAt = u"*NormalAt(0,0)"
direcNormalAt = Gui.Selection.getSelectionEx()[0].SubObjects[0].Faces[0].normalAt(0,0)
except Exception:
direcNormalAt = "[]"
#### Display info
if switchDisplayInfoObject == 1 :
if switchClearDisplayReportView == 1:
##################### effacer la vue rapport ############################
try: ####
mw=Gui.getMainWindow() ####
r=mw.findChild(QtWidgets.QTextEdit, "Report view") ####
r.clear() ####
except Exception: ####
None ####
#########################################################################
App_Console_PrintMessage(u"\n")
App_Console_PrintMessage(u"FCInfo_Beginning_"+str(subElemName) +"______________________________________________________"+"\n")
App_Console_PrintMessage(u"Document name : "+document_+"\n")
App_Console_PrintMessage(u"Label of the object : "+object_Label+"\n")
App_Console_PrintMessage(u"Internal name : "+object_Name+"\n")
App_Console_PrintMessage(u"Element name : "+str(subElemName)+"\n")
App_Console_PrintMessage(u"Object type : "+typeObject+"\n")
App_Console_PrintMessage(u"Object type : "+object_Type+"\n")
App_Console_PrintMessage(u"Mouse coordinates : X: "+str(Around(position0 * uniteM)) + " " + uniteMs + " Y:" + str(Around(position1 * uniteM)) + " " + uniteMs + " Z:" + str(Around(position2 * uniteM)) + " " + uniteMs + "\n")
App_Console_PrintMessage(typeLongueur + " : "+str(Around(longueurObjet * uniteM))+", "+uniteMs+"\n\n")
App_Console_PrintMessage(u"Couleur sur la sélection" + "\n")
App_Console_PrintMessage(u"Rouge" + ", " + str(int(diffuseColorRF*255.0)) + ", " +
u"Vert" + ", " + str(int(diffuseColorVF*255.0)) + ", " +
u"Bleu" + ", " + str(int(diffuseColorBF*255.0)) + ", " +
u"Transparence" + ", " + str(int(diffuseColorTF*255.0)) + "\n\n")
#### couleurs
if len(colorShapeFace) != 0:
App_Console_PrintMessage(u"Couleur Objet (float) " + str(colorShapeFace[0])+", "+str(colorShapeFace[1])+", "+str(colorShapeFace[2])+", "+str(colorShapeFace[3])+")" + "\n")
App_Console_PrintMessage(u"Couleur Objet (int )(" + str(int(colorShapeFace[0]*255.0))+", "+str(int(colorShapeFace[1]*255.0))+", "+str(int(colorShapeFace[2]*255.0))+", "+str(int(colorShapeFace[3]*255.0))+")" + "\n\n")
if len(colorShapeLine) != 0:
App_Console_PrintMessage(u"Couleur Ligne(s) (float) " + str(colorShapeLine[0])+", "+str(colorShapeLine[1])+", "+str(colorShapeLine[2])+", "+str(colorShapeLine[3])+")" + "\n")
App_Console_PrintMessage(u"Couleur Ligne(s) (int )(" + str(int(colorShapeLine[0]*255.0))+", "+str(int(colorShapeLine[1]*255.0))+", "+str(int(colorShapeLine[2]*255.0))+", "+str(int(colorShapeLine[3]*255.0))+")" + "\n\n")
if len(colorShapePoint) != 0:
try:
App_Console_PrintMessage(u"Couleur Point(s) (float) " + str(colorShapePoint[0])+", "+str(colorShapePoint[1])+", "+str(colorShapePoint[2])+", "+str(colorShapePoint[3])+")" + "\n")
App_Console_PrintMessage(u"Couleur Point(s) (int )(" + str(int(colorShapePoint[0]*255.0))+", "+str(int(colorShapePoint[1]*255.0))+", "+str(int(colorShapePoint[2]*255.0))+", "+str(int(colorShapePoint[3]*255.0))+")" + "\n\n")
except Exception:
None
if detected[0:4] == "Mesh":
App_Console_PrintMessage(u"Nombre d'Arrêtes : "+str(nombreArretesMesh)+"\n")
App_Console_PrintMessage(u"Nombre de Faces : "+str(nombreFacesMesh)+"\n")
App_Console_PrintMessage(u"Nombre de Points : "+str(nombrePointsMesh)+"\n\n")
if detected == "<PointKernel object>":
App_Console_PrintMessage(u"Nombre de Points : "+str(nombrePointsMesh)+"\n\n")
############### detail of Cercle BSpline begin
if (rayonObjet != 0.0) or (str(BsplineDetect) == "<BSplineCurve object>"):
if (str(BsplineDetect) == "<BSplineCurve object>"):
App_Console_PrintMessage(u"Nombre de noeuds : "+str(BsplineNombreDeNoeuds) +"\n")
for i in enumerate(BsplinePointsCoor): # nombre de points
App_Console_PrintMessage("\t" + u"X" + str(i[0]+1) + ": " + str(Around(float(BsplinePointsCoor[i[0]][0]))) + " " + "\t" +
u"Y" + str(i[0]+1) + ": " + str(Around(float(BsplinePointsCoor[i[0]][1]))) + " " + "\t" +
u"Z" + str(i[0]+1) + ": " + str(Around(float(BsplinePointsCoor[i[0]][2]))) + "\n")
App_Console_PrintMessage(u"\n")
else:
App_Console_PrintMessage(u"Rayon de l'objet : "+str(Around(rayonObjet * uniteM))+", "+uniteMs +"\n")
App_Console_PrintMessage(u"Diamètre de l'objet : "+str(Around((rayonObjet * uniteM) * 2.0))+", "+uniteMs +"\n")
############### detail of Cercle BSpline end
App_Console_PrintMessage(u"Perimeter of the shape : "+str(Around(perimetre * uniteM))+", "+uniteMs+"\n\n")
############### detail of object begin
if passTableau == 1: #
App_Console_PrintMessage(u"Vertexes and details : ("+ str(compt_E) +") ("+ str(compt_F)+") ("+ str(compt_VF)+") ("+str(RowCountTest)+")\n")
co = 0
aa = 0
for j in enumerate(Edges):
App_Console_PrintMessage(u"Length "+str(j[1])+" = "+str(Around(float(EdgesLong[co]) * float(uniteM)))+" "+uniteMs+"\n")
try:
for a in range(aa,aa+6):
chaine = str(Vertx[a]).split(":")
App_Console_PrintMessage(chaine[0] + ": " + str(Around(float(chaine[1]) * float(uniteM)))+" "+uniteMs+"\n")
except Exception:
None
co += 1
aa += 6
App_Console_PrintMessage(u"\n")
co=0
cco=0
for j in enumerate(Faces):
App_Console_PrintMessage(u"Surface "+str(j[1])+" = "+str(Around(float(FacesSurf[co]) * float(uniteS)))+" "+uniteSs+"\n")
if len(colorShapeFaceDiffuseColor) != 0:
App_Console_PrintMessage(u"Couleur float Face" + str(j[0]+1) + " " +
u"R: " + str(colorShapeFaceDiffuseColor[j[0]][0]) + ", "+
u"V: " + str(colorShapeFaceDiffuseColor[j[0]][1]) + ", "+
u"B: " + str(colorShapeFaceDiffuseColor[j[0]][2]) + ", "+
u"T: " + str(colorShapeFaceDiffuseColor[j[0]][3]) + "\n")
App_Console_PrintMessage(u"Couleur integer Face" + str(j[0]+1) + " " +
u"R: " + str(int(colorShapeFaceDiffuseColor[j[0]][0]*255.0))+", "+
u"V: " + str(int(colorShapeFaceDiffuseColor[j[0]][1]*255.0))+", "+
u"B: " + str(int(colorShapeFaceDiffuseColor[j[0]][2]*255.0))+", "+
u"T: " + str(int(colorShapeFaceDiffuseColor[j[0]][3]*255.0))+ "\n")
for jj in range(cco,len(FacesCoor)):
cco+=1
if FacesCoor[jj] == "T":
break
else:
chaine = str(FacesCoor[jj]).split(":")
App_Console_PrintMessage(chaine[0] + ": " + str(Around(float(chaine[1]) * float(uniteM)))+" "+uniteMs+"\n")
App_Console_PrintMessage(u"\n")
co += 1
cco=0
else:
App_Console_PrintMessage(u"\n")
############### detail of object end
#### Display info Begin
App_Console_PrintMessage(u"Plane : XY: " + str(Around(Plan_xy))+uniteAs+" coordinates: " + str(Plan_xy_V)+"\n")
App_Console_PrintMessage(u"Plane : YZ: " + str(Around(Plan_yz))+uniteAs+" coordinates: " + str(Plan_yz_V)+"\n")
App_Console_PrintMessage(u"Plane : ZX: " + str(Around(Plan_zx))+uniteAs+" coordinates: " + str(Plan_zx_V)+"\n\n")
App_Console_PrintMessage(u"The form surface : "+str(Around(surface * uniteS))+" "+uniteSs+"\n")
App_Console_PrintMessage(u"The face surface : "+str(Around(surfaceFace * uniteS))+" "+uniteSs+"\n\n")
App_Console_PrintMessage(u"Volume of the form : "+str(Around(volume_ * uniteV))+" "+uniteVs+"\n")
App_Console_PrintMessage(u"Mass : "+str(Around(poids))+ " " +unitePs+u" (Densité : "+str(seTDensiteValue)+")\n\n")
App_Console_PrintMessage(u"Center of the shape : X: "+str(Around(boundBoxCenterX * uniteM))+ " " +uniteMs+" Y: "+str(Around(boundBoxCenterY * uniteM))+ " " +uniteMs+" Z: "+str(Around(boundBoxCenterZ * uniteM))+ " " +uniteMs+"\n")
App_Console_PrintMessage(u"Center of mass : X: "+str(Around(CenterOfMassX * uniteM))+ " " +uniteMs +" Y: "+str(Around(CenterOfMassY * uniteM))+ " " +uniteMs +" Z: "+str(Around(CenterOfMassZ * uniteM))+ " " +uniteMs+"\n")
App_Console_PrintMessage(u"Overall dimensions : "+boundBox_S+"\n\n")
if directionObj != "[]":
App_Console_PrintMessage(u"Direction : "+str(directionObj)+"\n")
if direcValueAt != "[]":
App_Console_PrintMessage(u"ValueAt : "+str(direcValueAt)+"\n")
if direcNormalAt != "[]":
App_Console_PrintMessage(u"NormalAt : "+str(direcNormalAt)+"\n")
App_Console_PrintMessage(u"\n")
if detected[0:4] == "Mesh":
None
else:
App_Console_PrintMessage(u"Matrix of inertia : " +uniteMs+"^5" + "\n")
App_Console_PrintMessage(u" : X: "+str(Around(MatrixX1_16))+" Y: "+str(Around(MatrixY1_16))+" Z: "+str(Around(MatrixZ1_16))+" : "+str(Around(Matrix_1))+"\n")
App_Console_PrintMessage(u" : X: "+str(Around(MatrixX2_16))+" Y: "+str(Around(MatrixY2_16))+" Z: "+str(Around(MatrixZ2_16))+" : "+str(Around(Matrix_2))+"\n")
App_Console_PrintMessage(u" : X: "+str(Around(MatrixX3_16))+" Y: "+str(Around(MatrixY3_16))+" Z: "+str(Around(MatrixZ3_16))+" : "+str(Around(Matrix_3))+"\n")
App_Console_PrintMessage(u" : X: "+str(Around(Matrix12))+" Y: "+str(Around(Matrix13))+" Z: "+str(Around(Matrix14))+" : "+str(Around(Matrix15))+"\n\n")
App_Console_PrintMessage(u"Matrix inertia with mass : " +unitePs + uniteSs + "\n")
App_Console_PrintMessage(u" : X: "+str(Around(MatrixX1_17))+" Y: "+str(Around(MatrixY1_17))+" Z: "+str(Around(MatrixZ1_17))+"\n")
App_Console_PrintMessage(u" : X: "+str(Around(MatrixX2_17))+" Y: "+str(Around(MatrixY2_17))+" Z: "+str(Around(MatrixZ2_17))+"\n")
App_Console_PrintMessage(u" : X: "+str(Around(MatrixX3_17))+" Y: "+str(Around(MatrixY3_17))+" Z: "+str(Around(MatrixZ3_17))+"\n\n")
App_Console_PrintMessage(u"Determinant : " + str(DeterminantM)+"\n")
App_Console_PrintMessage(u"Determinant decimal : " + str(decimal.Decimal(DeterminantM))+"\n")
App_Console_PrintMessage(u"FCInfo_End_"+str(subElemName)+ "____________________________________________________________"+"\n\n")
#### Display info end
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
global ui
global sel
global document_
global object_Label
global object_Name
global typeObject
global object_Type
global subElemName
global position0
global position1
global position2
global diffuseColorRF
global diffuseColorVF
global diffuseColorBF
global diffuseColorTF
global transparenceFace
global unsignedEncodeColor
global longueurObjet
global rayonObjet
global perimetre
global Plan_xy
global Plan_xy_V
global Plan_yz
global Plan_yz_V
global Plan_zx
global Plan_zx_V
global surface
global surfaceFace
global volume_
global poids
global materialAssociated
global seTMaterialCurrentIndex
global uniteM
global uniteMs
global uniteS
global uniteSs
global uniteV
global uniteVs
global uniteP
global unitePs
global directionObj
global direcValueAt
global direcNormalAt
global uniteAs
global boundBoxCenterX
global boundBoxCenterY
global boundBoxCenterZ
global CenterOfMassX
global CenterOfMassY
global CenterOfMassZ
global boundBoxLX
global boundBoxLY
global boundBoxLZ
global boundBoxDiag
global MatrixX1
global MatrixY1
global MatrixZ1
global Matrix_1
global MatrixX2
global MatrixY2
global MatrixZ2
global Matrix_2
global MatrixX3
global MatrixY3
global MatrixZ3
global Matrix_3
global Matrix12
global Matrix13
global Matrix14
global Matrix15
global DeterminantM
global compt_E
global compt_F
global compt_VF
global placement_
global RowCount
global RowCountTest
global seTMemoClipBoard
global switchCreatePoint
global switchCreateAxis
global switchCreatePlane
global switchDisplayInfoObject
global seTWidgetPosition
global switchBoundBoxCreateText
global seTBoundBoxTextHeigth
global seTDecimalValue
global seTTextHeigthValue
global seTDensiteDecimalNumber
global seTDensiteValue
global seTDensiteSingleStep
global seTDensiteSuffixChain
global seTPositionFlyRightLeft
global seTMaterialPrice
global seTMaterialSuffixDevise
global seTMaterialSuffixCost
global seTIndexUnitLength
global seTIndexUnitWeight
global BsplineDetect
global BsplineRayonApproximatif
global BsplineArcsRadius
global switch_setVisible_GBox_001_Document
global switch_setVisible_GBox_002_Coordinate_Mouse
global switch_setVisible_GBox_003_Color
global switch_setVisible_GBox_004_Object_Mesh
global switch_setVisible_GBox_005_Value_Unit
global switch_setVisible_GBox_006_Inclination
global switch_setVisible_GBox_007_Surface_and_Volume
global switch_setVisible_GBox_008_Cost_And_Price
global switch_setVisible_GBox_009_BoundBox
global switch_setVisible_GBox_010_Center_Mass
global switch_setVisible_GBox_011_Inertia
global switch_setVisible_GBox_012_SpreadSheet
global switch_setVisible_GBox_013_SpreadSheet_Creation
global switch_setVisible_GBox_014_Main_Tools
self.window = MainWindow
####
if seTPositionFlyRightLeft == 1:
MainWindow.setObjectName(_fromUtf8(u"MainWindow")) # volant
MainWindow.resize(500, 590)
MainWindow.setMinimumSize(QtCore.QSize(500, 590))
#MainWindow.setMaximumSize(QtCore.QSize(380, 590))
#MainWindow.move(1300, 120) # deplace la fenetre
####
self.fontGlobal_08 = QtGui.QFont()
self.fontGlobal_08.setFamily(u"Arial")
# self.fontGlobal_08.setPointSize(seTTextHeigthValue)
self.fontGlobal_08.setPixelSize(seTTextHeigthValue)
#self.xxxx.setFont(self.fontGlobal_08)
#self.xxxx.setStyleSheet(u"color : #ff0000; font: bold") # couleur du texte et gras#
####
self.centralWidget = QtWidgets.QWidget(MainWindow)
#self.centralWidget.setMinimumSize(QtCore.QSize(500, 500))
####
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)
sel = FreeCADGui.Selection.getSelection()
if len(sel)==0:
App_Console_PrintMessage(u"Sélectionnez un objet"+"\n")
errorDialog(u"Sélectionnez un objet")
else:
affect(0)
vbox = QtWidgets.QVBoxLayout()
self.scrollAreaWidgetContents_2.setLayout(vbox)
#### Document
grid = QtWidgets.QGridLayout()
self.GBox_001_Document = QtWidgets.QGroupBox()
if switch_setVisible_GBox_001_Document == False:
self.GBox_001_Document.setVisible(switch_setVisible_GBox_001_Document) # visibility
self.GBox_001_Document.setLayout(grid)
vbox.addWidget(self.GBox_001_Document)
self.LA_1 = QtWidgets.QLabel()
self.LE_1 = QtWidgets.QLineEdit()
grid.addWidget(self.LA_1, 0, 0)
grid.addWidget(self.LE_1, 0, 1, 1, 2)
self.LA_2 = QtWidgets.QLabel()
self.LE_2 = QtWidgets.QLineEdit()
self.LE_2a = QtWidgets.QLineEdit()
grid.addWidget(self.LA_2, 1, 0)
grid.addWidget(self.LE_2, 1, 1)
grid.addWidget(self.LE_2a, 1, 2)
self.LA_3 = QtWidgets.QLabel()
self.LA_4 = QtWidgets.QLabel()
self.LE_3 = QtWidgets.QLineEdit()
self.LE_3a = QtWidgets.QLineEdit()
self.LE_4 = QtWidgets.QLineEdit()
grid.addWidget(self.LA_3, 2, 0)
grid.addWidget(self.LE_3, 2, 1)
grid.addWidget(self.LE_3a, 2, 2)
grid.addWidget(self.LA_4, 3, 0)
grid.addWidget(self.LE_4, 3, 1, 1, 2)
#### Coordinate click mouse
grid = QtWidgets.QGridLayout()
self.GBox_002_Coordinate_Mouse = QtWidgets.QGroupBox()
if switch_setVisible_GBox_002_Coordinate_Mouse == False:
self.GBox_002_Coordinate_Mouse.setVisible(switch_setVisible_GBox_002_Coordinate_Mouse) # visibility
self.GBox_002_Coordinate_Mouse.setLayout(grid)
vbox.addWidget(self.GBox_002_Coordinate_Mouse)
self.LA_4x = QtWidgets.QLabel()
self.LA_4x.setStyleSheet(u"QLabel {color : #ff0000; font: bold}") # couleur du texte et gras
self.LE_4x = QtWidgets.QLineEdit()
grid.addWidget(self.LA_4x, 0, 0)
grid.addWidget(self.LE_4x, 1, 0)
self.LA_4y = QtWidgets.QLabel()
self.LA_4y.setStyleSheet(u"QLabel {color : #008500; font: bold}") # couleur du texte et gras
self.LE_4y = QtWidgets.QLineEdit()
grid.addWidget(self.LA_4y, 0, 1)
grid.addWidget(self.LE_4y, 1, 1)
self.LA_4z = QtWidgets.QLabel()
self.LA_4z.setStyleSheet(u"QLabel {color : #0000ff; font: bold}") # couleur du texte et gras
self.LE_4z = QtWidgets.QLineEdit()
grid.addWidget(self.LA_4z, 0, 2)
grid.addWidget(self.LE_4z, 1, 2)
self.PB_Axis_01 = QtWidgets.QPushButton()
self.PB_Axis_01.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable
self.PB_Axis_01.clicked.connect(self.on_PB_Axis_Mouse)
grid.addWidget(self.PB_Axis_01, 1, 3)
#### couleur point clique
grid = QtWidgets.QGridLayout()
self.GBox_003_Color = QtWidgets.QGroupBox()
if switch_setVisible_GBox_003_Color == False:
self.GBox_003_Color.setVisible(switch_setVisible_GBox_003_Color) # visibility
self.GBox_003_Color.setLayout(grid)
vbox.addWidget(self.GBox_003_Color)
self.LA_1_Red = QtWidgets.QLabel()
self.LA_1_Red.setStyleSheet(u"QLabel {color : #ff0000; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_1_Red, 0, 0)
self.LA_2_Green = QtWidgets.QLabel()
self.LA_2_Green.setStyleSheet(u"QLabel {color : #008500; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_2_Green, 0, 1)
self.LA_3_Blue = QtWidgets.QLabel()
self.LA_3_Blue.setStyleSheet(u"QLabel {color : #0000ff; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_3_Blue, 0, 2)
self.LA_4_Transparent = QtWidgets.QLabel()
self.LA_4_Transparent.setStyleSheet(u"QLabel {color : #000000; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_4_Transparent, 0, 3)
self.LE_CRed = QtWidgets.QLineEdit()
grid.addWidget(self.LE_CRed, 1, 0)
self.LE_CGreen = QtWidgets.QLineEdit()
grid.addWidget(self.LE_CGreen, 1, 1)
self.LE_CBlue = QtWidgets.QLineEdit()
grid.addWidget(self.LE_CBlue, 1, 2)
self.LE_Transparent = QtWidgets.QLineEdit()
grid.addWidget(self.LE_Transparent, 1, 3)
self.LE_ConversionUnsigned = QtWidgets.QLineEdit()
grid.addWidget(self.LE_ConversionUnsigned, 2, 0, 1, 4)
self.CBox_Color_FaceObject = QtWidgets.QCheckBox()
#self.CBox_Color_FaceObject.setChecked(False)
self.CBox_Color_FaceObject.clicked.connect(self.SIGNAL_CBox_Color_FaceObject)
grid.addWidget(self.CBox_Color_FaceObject, 3, 0)
self.PB_ChangeColor = QtWidgets.QPushButton()
self.PB_ChangeColor.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Color))) # icone dans une variable
self.PB_ChangeColor.clicked.connect(self.on_PB_ChangeColor)
grid.addWidget(self.PB_ChangeColor, 3, 1)
self.PB_CreateFace = QtWidgets.QPushButton()
self.PB_CreateFace.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Face))) # icone dans une variable
self.PB_CreateFace.clicked.connect(self.on_PB_CreateFace)
grid.addWidget(self.PB_CreateFace, 3, 2)
self.SBox_Transparence = QtWidgets.QSpinBox()
#self.SBox_Transparence.setEnabled(False)
self.SBox_Transparence.setMinimum(0)
self.SBox_Transparence.setMaximum(100)
self.SBox_Transparence.setValue(transparenceFace)
self.SBox_Transparence.valueChanged.connect(self.on_SBox_Transparence_valueChanged)
grid.addWidget(self.SBox_Transparence, 3, 3)
#### Composantes Object Mesh
grid = QtWidgets.QGridLayout()
self.GBox_004_Object_Mesh = QtWidgets.QGroupBox()
if switch_setVisible_GBox_004_Object_Mesh == False:
self.GBox_004_Object_Mesh.setVisible(switch_setVisible_GBox_004_Object_Mesh) # visibility
self.GBox_004_Object_Mesh.setVisible(False)
self.GBox_004_Object_Mesh.setLayout(grid)
vbox.addWidget(self.GBox_004_Object_Mesh)
self.LA_N_Edges = QtWidgets.QLabel()
self.LE_N_Edges = QtWidgets.QLineEdit()
grid.addWidget(self.LA_N_Edges, 0, 0)
grid.addWidget(self.LE_N_Edges, 1, 0)
self.LA_N_Facets = QtWidgets.QLabel()
self.LE_N_Facets = QtWidgets.QLineEdit()
grid.addWidget(self.LA_N_Facets, 0, 1)
grid.addWidget(self.LE_N_Facets, 1, 1)
self.LA_N_Points = QtWidgets.QLabel()
self.LE_N_Points = QtWidgets.QLineEdit()
grid.addWidget(self.LA_N_Points, 0, 2)
grid.addWidget(self.LE_N_Points, 1, 2)
#### Unit
grid = QtWidgets.QGridLayout()
self.GBox_005_Value_Unit = QtWidgets.QGroupBox()
if switch_setVisible_GBox_005_Value_Unit == False:
self.GBox_005_Value_Unit.setVisible(switch_setVisible_GBox_005_Value_Unit) # visibility
self.GBox_005_Value_Unit.setLayout(grid)
vbox.addWidget(self.GBox_005_Value_Unit)
self.LA_5a = QtWidgets.QLabel()
grid.addWidget(self.LA_5a, 0, 0)
self.comboBox = QtWidgets.QComboBox()
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
self.comboBox.addItem(_fromUtf8(u""))
#self.comboBox.setCurrentIndex(seTIndexUnitLength)
QtCore.QObject.connect(self.comboBox, QtCore.SIGNAL(u"currentIndexChanged(QString)"), self.SIGNAL_comboBox_Changed)
grid.addWidget(self.comboBox, 0, 1)#, 1, 2
#### Line Cercle et BSpline
self.LA_5 = QtWidgets.QLabel()
grid.addWidget(self.LA_5, 1, 0)#, 1, 2
self.LE_5 = QtWidgets.QLineEdit()
grid.addWidget(self.LE_5, 1, 1)#, 1, 2
self.LA_5b = QtWidgets.QLabel()
grid.addWidget(self.LA_5b, 2, 0)#, 1, 2
self.LE_5b = QtWidgets.QLineEdit()
grid.addWidget(self.LE_5b, 2, 1)#, 1, 2
self.SB_Arc_ToByArcs = QtWidgets.QSpinBox()
self.SB_Arc_ToByArcs.setMinimum(1)
self.SB_Arc_ToByArcs.setMaximum(99999999)
self.SB_Arc_ToByArcs.setPrefix(u"arc ")
# try:
# self.SB_Arc_ToByArcs.setSuffix(u" / " + str(len(BsplineArcsRadius)))
# BsplineRayonApproximatif = str(Around(BsplineArcsRadius[0] * float(uniteM))) + " " + uniteMs
# except Exception:
# BsplineRayonApproximatif = u""
self.SB_Arc_ToByArcs.valueChanged.connect(self.on_SB_Arc_ToByArcs_valueChanged)
grid.addWidget(self.SB_Arc_ToByArcs, 2, 2)
self.LA_6 = QtWidgets.QLabel()
grid.addWidget(self.LA_6, 3, 0)#, 1, 1
self.LE_6 = QtWidgets.QLineEdit()
grid.addWidget(self.LE_6, 3, 1)
self.PB_BSplineCreateNodes = QtWidgets.QPushButton()
self.PB_BSplineCreateNodes.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Point))) # icone dans une variable
self.PB_BSplineCreateNodes.clicked.connect(self.on_PB_BSplineCreateNodes)
grid.addWidget(self.PB_BSplineCreateNodes, 3, 2)
# if (rayonObjet != 0) or (str(BsplineDetect) == "<BSplineCurve object>")::
# if (str(BsplineDetect) == "<BSplineCurve object>"):
# self.SB_Arc_ToByArcs.setVisible(True)
# self.PB_BSplineCreateNodes.setVisible(True)
# self.LA_5b.setVisible(True)
# self.LE_5b.setVisible(True)
# else:
# self.SB_Arc_ToByArcs.setVisible(False)
# self.PB_BSplineCreateNodes.setVisible(False)
# self.LA_5b.setVisible(False)
# self.LE_5b.setVisible(False)
# rayonObjet = 0.0
#### Inclination
grid = QtWidgets.QGridLayout()
self.GBox_006_Inclination = QtWidgets.QGroupBox()
if switch_setVisible_GBox_006_Inclination == False:
self.GBox_006_Inclination.setVisible(switch_setVisible_GBox_006_Inclination) # visibility
self.GBox_006_Inclination.setLayout(grid)
vbox.addWidget(self.GBox_006_Inclination)
self.LA_8a = QtWidgets.QLabel(self.GBox_006_Inclination)
grid.addWidget(self.LA_8a, 0, 0)
self.PB_Ra = QtWidgets.QPushButton()
self.PB_Ra.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Degrees))) # icone dans une variable
self.PB_Ra.clicked.connect(self.on_PB_Ra_clicked) # "Radian"
grid.addWidget(self.PB_Ra, 0, 1)
self.LA_8a_2 = QtWidgets.QLabel()
grid.addWidget(self.LA_8a_2, 0, 2, 1, 3)
self.LA_8xy = QtWidgets.QLabel()
self.LA_8xy.setStyleSheet(u"QLabel {color : #ff0000; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_8xy, 1, 0)
self.LE_8xy = QtWidgets.QLineEdit()
grid.addWidget(self.LE_8xy, 1, 1)
self.LE_8xya = QtWidgets.QLineEdit()
grid.addWidget(self.LE_8xya, 1, 2)
self.LA_8yz = QtWidgets.QLabel()
self.LA_8yz.setStyleSheet(u"QLabel {color : #008500; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_8yz, 2, 0)
self.LE_8yz = QtWidgets.QLineEdit()
grid.addWidget(self.LE_8yz, 2, 1)
self.LE_8yza = QtWidgets.QLineEdit()
grid.addWidget(self.LE_8yza, 2, 2)
self.LA_8zx = QtWidgets.QLabel()
self.LA_8zx.setStyleSheet(u"QLabel {color : #0000ff; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_8zx, 3, 0)
self.LE_8zx = QtWidgets.QLineEdit()
grid.addWidget(self.LE_8zx, 3, 1)
self.LE_8zxa = QtWidgets.QLineEdit()
grid.addWidget(self.LE_8zxa, 3, 2)
self.PB_Line_Direction = QtWidgets.QPushButton()
self.PB_Line_Direction.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_13J))) # icone dans une variable
self.PB_Line_Direction.clicked.connect(self.on_PB_Line_Direction)
grid.addWidget(self.PB_Line_Direction, 4, 0)
self.LE_9_Direction = QtWidgets.QLineEdit()
grid.addWidget(self.LE_9_Direction, 4, 1, 1, 2)
self.PB_Line_ValueAT = QtWidgets.QPushButton()
self.PB_Line_ValueAT.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_13M))) # icone dans une variable
self.PB_Line_ValueAT.clicked.connect(self.on_PB_Line_ValueAT)
grid.addWidget(self.PB_Line_ValueAT, 5, 0)
self.LE_10_ValueAt = QtWidgets.QLineEdit()
grid.addWidget(self.LE_10_ValueAt, 5, 1, 1, 2)
self.PB_Line_NormalAT = QtWidgets.QPushButton()
self.PB_Line_NormalAT.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_13C))) # icone dans une variable
self.PB_Line_NormalAT.clicked.connect(self.on_PB_Line_NormalAT)
grid.addWidget(self.PB_Line_NormalAT, 6, 0)
self.LE_10b_NormalAt = QtWidgets.QLineEdit()
grid.addWidget(self.LE_10b_NormalAt, 6, 1, 1, 2)
##### Surface and Volume
grid = QtWidgets.QGridLayout()
self.GBox_007_Surface_and_Volume = QtWidgets.QGroupBox()
if switch_setVisible_GBox_007_Surface_and_Volume == False:
self.GBox_007_Surface_and_Volume.setVisible(switch_setVisible_GBox_007_Surface_and_Volume) # visibility
self.GBox_007_Surface_and_Volume.setLayout(grid)
vbox.addWidget(self.GBox_007_Surface_and_Volume)
self.LA_9 = QtWidgets.QLabel()
grid.addWidget(self.LA_9, 0, 0)
self.LE_9a = QtWidgets.QLineEdit()
grid.addWidget(self.LE_9a, 0, 1)
self.LA_10 = QtWidgets.QLabel()
grid.addWidget(self.LA_10, 1, 0)
self.LE_10a = QtWidgets.QLineEdit()
grid.addWidget(self.LE_10a, 1, 1)
self.LA_11 = QtWidgets.QLabel()
grid.addWidget(self.LA_11, 2, 0)
self.LE_11a = QtWidgets.QLineEdit()
grid.addWidget(self.LE_11a, 2, 1)
self.LA_Unit = QtWidgets.QLabel()
grid.addWidget(self.LA_Unit, 3, 0)
self.comboBox_Unit = QtWidgets.QComboBox()
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
self.comboBox_Unit.addItem(_fromUtf8(u""))
#self.comboBox_Unit.setCurrentIndex(seTIndexUnitWeight)
QtCore.QObject.connect(self.comboBox_Unit, QtCore.SIGNAL(u"currentIndexChanged(QString)"), self.SIGNAL_comboPoids_Changed)
grid.addWidget(self.comboBox_Unit, 3, 1)
self.LA_Weight = QtWidgets.QLabel()
grid.addWidget(self.LA_Weight, 4, 0)
self.LA_Density = QtWidgets.QLabel()
grid.addWidget(self.LA_Density, 4, 1)
self.LE_12a = QtWidgets.QLineEdit()
self.LE_12a.setText(str(Around(poids))+" "+unitePs)
grid.addWidget(self.LE_12a, 5, 0)
self.DS_Density = QtWidgets.QDoubleSpinBox()
seTDensiteValue = float(materialAssociated[seTMaterialCurrentIndex].split(",")[1])
self.DS_Density.setDecimals(seTDensiteDecimalNumber)
self.DS_Density.setMinimum(-0.00000001)
self.DS_Density.setMaximum(99999999.0)
#self.DS_Density.setProperty(u"value", seTDensiteValue)
self.DS_Density.setValue(seTDensiteValue)
self.DS_Density.setSuffix(seTDensiteSuffixChain)
self.DS_Density.setSingleStep(seTDensiteSingleStep)
self.DS_Density.valueChanged.connect(self.on_DS_Density_valueChanged)
grid.addWidget(self.DS_Density, 5, 1)
self.LA_Material = QtWidgets.QLabel()
grid.addWidget(self.LA_Material, 6, 0)
self.CBox_Materiel = QtWidgets.QComboBox()
for ligneMat in materialAssociated:
self.CBox_Materiel.addItem(_fromUtf8(ligneMat))
self.CBox_Materiel.setCurrentIndex(seTMaterialCurrentIndex)
QtCore.QObject.connect(self.CBox_Materiel, QtCore.SIGNAL(u"currentIndexChanged(QString)"), self.SIGNAL_CBox_Materiel_Changed)
grid.addWidget(self.CBox_Materiel,7, 0, 1, 2)
self.LA_NewMaterial = QtWidgets.QLabel()
grid.addWidget(self.LA_NewMaterial, 8, 0)
self.LE_Materiel = QtWidgets.QLineEdit()
self.LE_Materiel.setText(materialAssociated[seTMaterialCurrentIndex])
self.LE_Materiel.returnPressed.connect(self.on_LE_Materiel_Pressed) # connect "on_LE_Materiel_Pressed" # for validate the data with press on return touch
#self.LE_Materiel.textChanged.connect(self.on_LE_Materiel_Pressed) # connect "on_LE_Materiel_Pressed" # with tips key char by char
grid.addWidget(self.LE_Materiel, 9, 0, 1, 2)
self.PB_Del_Material = QtWidgets.QPushButton()
self.PB_Del_Material.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_DeleteLineMaterial))) # icone dans une variable
self.PB_Del_Material.clicked.connect(self.on_PB_Del_Material_clicked)
grid.addWidget(self.PB_Del_Material, 10, 0)
self.PB_Save_Material = QtWidgets.QPushButton()
self.PB_Save_Material.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Save_Material))) # icone dans une variable
self.PB_Save_Material.clicked.connect(self.on_PB_Save_Material_clicked)
grid.addWidget(self.PB_Save_Material, 10, 1)
#### Cost
grid = QtWidgets.QGridLayout()
self.GBox_008_Cost_And_Price = QtWidgets.QGroupBox()
if switch_setVisible_GBox_008_Cost_And_Price == False:
self.GBox_008_Cost_And_Price.setVisible(switch_setVisible_GBox_008_Cost_And_Price) # visibility
self.GBox_008_Cost_And_Price.setLayout(grid)
vbox.addWidget(self.GBox_008_Cost_And_Price)
self.LA_Cost = QtWidgets.QLabel()
grid.addWidget(self.LA_Cost, 0, 0)
self.LA_Price = QtWidgets.QLabel()
grid.addWidget(self.LA_Price, 0, 1)
self.LE_Cost = QtWidgets.QLineEdit()
seTMaterialCost = ((volume_ * seTDensiteValue * seTMaterialPrice) / 1000000.0)
self.LE_Cost.setText(str(Around(seTMaterialCost)) + seTMaterialSuffixCost) #CostMaterial
grid.addWidget(self.LE_Cost, 1, 0)
self.DS_Price = QtWidgets.QDoubleSpinBox()
self.DS_Price.setDecimals(seTDensiteDecimalNumber)
self.DS_Price.setMinimum(-0.00000001)
self.DS_Price.setMaximum(99999999.0)
#self.DS_Price.setProperty(u"value", seTMaterialPrice)
self.DS_Price.setValue(seTMaterialPrice)
self.DS_Price.setSuffix(seTMaterialSuffixDevise)
self.DS_Price.setSingleStep(1)
self.DS_Price.valueChanged.connect(self.on_DS_Price_valueChanged)
grid.addWidget(self.DS_Price, 1, 1)
##### BoundBox
grid = QtWidgets.QGridLayout()
self.GBox_009_BoundBox = QtWidgets.QGroupBox()
if switch_setVisible_GBox_009_BoundBox == False:
self.GBox_009_BoundBox.setVisible(switch_setVisible_GBox_009_BoundBox) # visibility
self.GBox_009_BoundBox.setLayout(grid)
vbox.addWidget(self.GBox_009_BoundBox)
self.LA_007_01_Xlength = QtWidgets.QLabel()
self.LA_007_01_Xlength.setStyleSheet(u"QLabel {color : #ff0000; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_007_01_Xlength, 0, 0)
self.LA_007_02_Ylength = QtWidgets.QLabel()
self.LA_007_02_Ylength.setStyleSheet(u"QLabel {color : #008500; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_007_02_Ylength, 0, 1)
self.LA_007_03_Zlength = QtWidgets.QLabel()
self.LA_007_03_Zlength.setStyleSheet(u"QLabel {color : #0000ff; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_007_03_Zlength, 0, 2)
self.LA_007_04_Diagonallength = QtWidgets.QLabel()
grid.addWidget(self.LA_007_04_Diagonallength, 0, 3)
self.LE_007_BB_01_XLength = QtWidgets.QLineEdit()
grid.addWidget(self.LE_007_BB_01_XLength, 1, 0)
self.LE_007_BB_02_YLength = QtWidgets.QLineEdit()
grid.addWidget(self.LE_007_BB_02_YLength, 1, 1)
self.LE_007_BB_03_ZLength = QtWidgets.QLineEdit()
grid.addWidget(self.LE_007_BB_03_ZLength, 1, 2)
self.LE_007_BB_04_Diagonal = QtWidgets.QLineEdit()
grid.addWidget(self.LE_007_BB_04_Diagonal, 1, 3)
self.PB_BoundBox_Tracing = QtWidgets.QPushButton()
self.PB_BoundBox_Tracing.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_BoundBoxTracing))) # icone dans une variable
self.PB_BoundBox_Tracing.clicked.connect(self.on_PB_BoundBox_Tracing)
grid.addWidget(self.PB_BoundBox_Tracing, 2, 0)
self.PB_00_BoundBox_Volume = QtWidgets.QPushButton()
self.PB_00_BoundBox_Volume.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_BoundBoxVolume))) # icone dans une variable
self.PB_00_BoundBox_Volume.clicked.connect(self.On_PB_00_BoundBox_Volume)
grid.addWidget(self.PB_00_BoundBox_Volume, 2, 1)
self.CB_01_BoundBox_Text = QtWidgets.QCheckBox()
self.CB_01_BoundBox_Text.setChecked(switchBoundBoxCreateText)
self.CB_01_BoundBox_Text.clicked.connect(self.On_CB_01_BoundBox_Text)
grid.addWidget(self.CB_01_BoundBox_Text, 2, 2)
self.DS_BoundBoxTextHeigth = QtWidgets.QDoubleSpinBox()
self.DS_BoundBoxTextHeigth.setMinimum(-0.00000001)
self.DS_BoundBoxTextHeigth.setMaximum(99999999.0)
#self.DS_BoundBoxTextHeigth.setProperty(u"value", seTBoundBoxTextHeigth)
self.DS_BoundBoxTextHeigth.setValue(seTBoundBoxTextHeigth)
self.DS_BoundBoxTextHeigth.setDecimals(seTDensiteDecimalNumber)
self.DS_BoundBoxTextHeigth.setSingleStep(1)
self.DS_BoundBoxTextHeigth.setEnabled(switchBoundBoxCreateText)
self.DS_BoundBoxTextHeigth.valueChanged.connect(self.on_DS_BoundBoxTextHeigth_valueChanged)
grid.addWidget(self.DS_BoundBoxTextHeigth, 2, 3)
##### Center of:
grid = QtWidgets.QGridLayout()
self.GBox_010_Center_Mass = QtWidgets.QGroupBox()
if switch_setVisible_GBox_010_Center_Mass == False:
self.GBox_010_Center_Mass.setVisible(switch_setVisible_GBox_010_Center_Mass) # visibility
self.GBox_010_Center_Mass.setLayout(grid)
vbox.addWidget(self.GBox_010_Center_Mass)
self.LA_13x = QtWidgets.QLabel()
self.LA_13x.setStyleSheet(u"QLabel {color : #ff0000; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_13x, 1, 0)
self.LA_13y = QtWidgets.QLabel()
self.LA_13y.setStyleSheet(u"QLabel {color : #008500; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_13y, 1, 1)
self.LA_13z = QtWidgets.QLabel()
self.LA_13z.setStyleSheet(u"QLabel {color : #0000ff; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_13z, 1, 2)
self.LE_13x = QtWidgets.QLineEdit()
grid.addWidget(self.LE_13x, 2, 0)
self.LE_13y = QtWidgets.QLineEdit()
grid.addWidget(self.LE_13y, 2, 1)
self.LE_13z = QtWidgets.QLineEdit()
grid.addWidget(self.LE_13z, 2, 2)
self.PB_Axis_02 = QtWidgets.QPushButton()
self.PB_Axis_02.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable
self.PB_Axis_02.clicked.connect(self.on_PB_Axis_Center_Shape)
grid.addWidget(self.PB_Axis_02, 2, 3)
self.LA_14x = QtWidgets.QLabel()
self.LA_14x.setStyleSheet(u"QLabel {color : #ff0000; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_14x, 4, 0)
self.LA_14y = QtWidgets.QLabel()
self.LA_14y.setStyleSheet(u"QLabel {color : #008500; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_14y, 4, 1)
self.LA_14z = QtWidgets.QLabel()
self.LA_14z.setStyleSheet(u"QLabel {color : #0000ff; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_14z, 4, 2)
self.LE_14x = QtWidgets.QLineEdit()
grid.addWidget(self.LE_14x, 5, 0)
self.LE_14y = QtWidgets.QLineEdit()
grid.addWidget(self.LE_14y, 5, 1)
self.LE_14z = QtWidgets.QLineEdit()
grid.addWidget(self.LE_14z, 5, 2)
self.PB_Axis_03 = QtWidgets.QPushButton()
self.PB_Axis_03.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable
self.PB_Axis_03.clicked.connect(self.on_PB_Axis_Center_Mass)
grid.addWidget(self.PB_Axis_03, 5, 3)
##### Inertia
grid = QtWidgets.QGridLayout()
self.GBox_011_Inertia = QtWidgets.QGroupBox()
if switch_setVisible_GBox_011_Inertia == False:
self.GBox_011_Inertia.setVisible(switch_setVisible_GBox_011_Inertia) # visibility
self.GBox_011_Inertia.setLayout(grid)
vbox.addWidget(self.GBox_011_Inertia)
self.LA_16 = QtWidgets.QLabel()
grid.addWidget(self.LA_16, 0, 0, 1, 3)
self.LE_16_M = QtWidgets.QLineEdit()
self.LE_16_M.setAlignment(QtCore.Qt.AlignCenter)
self.LE_16_M.setStyleSheet(u"QLineEdit {color: #000000; font: bold}") # couleur du texte et gras
grid.addWidget(self.LE_16_M, 0, 3, 1, 2)
self.LA_16x = QtWidgets.QLabel()
self.LA_16x.setStyleSheet(u"QLabel {color: #ff0000; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_16x, 1, 0)
self.LA_16y = QtWidgets.QLabel()
self.LA_16y.setStyleSheet(u"QLabel {color: #008500; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_16y, 1, 1)
self.LA_16z = QtWidgets.QLabel()
self.LA_16z.setStyleSheet(u"QLabel {color: #0000ff; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_16z, 1, 2)
self.LE_16_1x = QtWidgets.QLineEdit()
grid.addWidget(self.LE_16_1x, 2, 0)
self.LE_16_1y = QtWidgets.QLineEdit()
grid.addWidget(self.LE_16_1y, 2, 1)
self.LE_16_1z = QtWidgets.QLineEdit()
grid.addWidget(self.LE_16_1z, 2, 2)
self.LE_16_01 = QtWidgets.QLineEdit()
self.LE_16_01.setEnabled(False)
grid.addWidget(self.LE_16_01, 2, 3)
self.PB_Axis_04_16_1 = QtWidgets.QPushButton()
self.PB_Axis_04_16_1.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable
self.PB_Axis_04_16_1.clicked.connect(self.on_PB_Axis_04_16_1)
grid.addWidget(self.PB_Axis_04_16_1, 2, 4)
self.LE_16_2x = QtWidgets.QLineEdit()
grid.addWidget(self.LE_16_2x, 3, 0)
self.LE_16_2y = QtWidgets.QLineEdit()
grid.addWidget(self.LE_16_2y, 3, 1)
self.LE_16_2z = QtWidgets.QLineEdit()
grid.addWidget(self.LE_16_2z, 3, 2)
self.LE_16_02 = QtWidgets.QLineEdit()
self.LE_16_02.setEnabled(False)
grid.addWidget(self.LE_16_02, 3, 3)
self.PB_Axis_05_16_2 = QtWidgets.QPushButton()
self.PB_Axis_05_16_2.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable
self.PB_Axis_05_16_2.clicked.connect(self.on_PB_Axis_05_16_2)
grid.addWidget(self.PB_Axis_05_16_2, 3, 4)
self.LE_16_3x = QtWidgets.QLineEdit()
grid.addWidget(self.LE_16_3x, 4, 0)
self.LE_16_3y = QtWidgets.QLineEdit()
grid.addWidget(self.LE_16_3y, 4, 1)
self.LE_16_3z = QtWidgets.QLineEdit()
grid.addWidget(self.LE_16_3z, 4, 2)
self.LE_16_03 = QtWidgets.QLineEdit()
self.LE_16_03.setEnabled(False)
grid.addWidget(self.LE_16_03, 4, 3)
self.PB_Axis_06_16_3 = QtWidgets.QPushButton()
self.PB_Axis_06_16_3.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable
self.PB_Axis_06_16_3.clicked.connect(self.on_PB_Axis_06_16_3)
grid.addWidget(self.PB_Axis_06_16_3, 4, 4)
self.LE_16_4x = QtWidgets.QLineEdit()
self.LE_16_4x.setEnabled(False)
grid.addWidget(self.LE_16_4x, 5, 0)
self.LE_16_4y = QtWidgets.QLineEdit()
self.LE_16_4y.setEnabled(False)
grid.addWidget(self.LE_16_4y, 5, 1)
self.LE_16_4z = QtWidgets.QLineEdit()
self.LE_16_4z.setEnabled(False)
grid.addWidget(self.LE_16_4z, 5, 2)
self.LE_16_04 = QtWidgets.QLineEdit()
self.LE_16_04.setEnabled(False)
grid.addWidget(self.LE_16_04, 5, 3)
self.PB_Axis_07_16_4 = QtWidgets.QPushButton()
self.PB_Axis_07_16_4.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable
self.PB_Axis_07_16_4.clicked.connect(self.on_PB_Axis_07_16_4)
grid.addWidget(self.PB_Axis_07_16_4, 5, 4)
self.LA_17 = QtWidgets.QLabel()
grid.addWidget(self.LA_17, 6, 0, 1, 3)
self.LE_17_M = QtWidgets.QLineEdit()
self.LE_17_M.setAlignment(QtCore.Qt.AlignCenter)
self.LE_17_M.setStyleSheet(u"QLineEdit {color: #000000; font: bold}") # couleur du texte et gras
grid.addWidget(self.LE_17_M, 6, 3, 1, 2)
self.LA_17x = QtWidgets.QLabel()
self.LA_17x.setStyleSheet(u"QLabel {color: #ff0000; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_17x, 7, 0)
self.LA_17y = QtWidgets.QLabel()
self.LA_17y.setStyleSheet(u"QLabel {color: #008500; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_17y, 7, 1)
self.LA_17z = QtWidgets.QLabel()
self.LA_17z.setStyleSheet(u"QLabel {color: #0000ff; font: bold}") # couleur du texte et gras
grid.addWidget(self.LA_17z, 7, 2)
self.LE_17_1x = QtWidgets.QLineEdit()
grid.addWidget(self.LE_17_1x, 8, 0)
self.LE_17_1y = QtWidgets.QLineEdit()
grid.addWidget(self.LE_17_1y, 8, 1)
self.LE_17_1z = QtWidgets.QLineEdit()
grid.addWidget(self.LE_17_1z, 8, 2)
self.PB_Axis_08_17_1 = QtWidgets.QPushButton()
self.PB_Axis_08_17_1.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable
self.PB_Axis_08_17_1.clicked.connect(self.on_PB_Axis_08_17_1)
grid.addWidget(self.PB_Axis_08_17_1, 8, 4)
self.LE_17_2x = QtWidgets.QLineEdit()
grid.addWidget(self.LE_17_2x, 9, 0)
self.LE_17_2y = QtWidgets.QLineEdit()
grid.addWidget(self.LE_17_2y, 9, 1)
self.LE_17_2z = QtWidgets.QLineEdit()
grid.addWidget(self.LE_17_2z, 9, 2)
self.PB_Axis_09_17_2 = QtWidgets.QPushButton()
self.PB_Axis_09_17_2.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable
self.PB_Axis_09_17_2.clicked.connect(self.on_PB_Axis_09_17_2)
grid.addWidget(self.PB_Axis_09_17_2, 9, 4)
self.LE_17_3x = QtWidgets.QLineEdit()
grid.addWidget(self.LE_17_3x, 10, 0)
self.LE_17_3y = QtWidgets.QLineEdit()
grid.addWidget(self.LE_17_3y, 10, 1)
self.LE_17_3z = QtWidgets.QLineEdit()
grid.addWidget(self.LE_17_3z, 10, 2)
self.PB_Axis_10_17_3 = QtWidgets.QPushButton()
self.PB_Axis_10_17_3.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable
self.PB_Axis_10_17_3.clicked.connect(self.on_PB_Axis_10_17_3)
grid.addWidget(self.PB_Axis_10_17_3, 10, 4)
self.PB_Axis_11_17_4 = QtWidgets.QPushButton()
self.PB_Axis_11_17_4.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable
self.PB_Axis_11_17_4.clicked.connect(self.on_PB_Axis_11_17_4)
grid.addWidget(self.PB_Axis_11_17_4, 11, 4)
self.LA_determinant = QtWidgets.QLabel()
grid.addWidget(self.LA_determinant, 12, 0, 1, 2)
self.LA_determinantDecimal = QtWidgets.QLabel()
grid.addWidget(self.LA_determinantDecimal, 13, 0, 1, 2)
self.LE_18_determinant = QtWidgets.QLineEdit()
grid.addWidget(self.LE_18_determinant, 12, 2, 1, 3)
self.LE_18_determinantDecim = QtWidgets.QLineEdit()
grid.addWidget(self.LE_18_determinantDecim, 13, 2, 1, 3)
#### Disabled Module (SpreadSheet)
grid = QtWidgets.QGridLayout()
self.GBox_012_SpreadSheet = QtWidgets.QGroupBox()
if switch_setVisible_GBox_012_SpreadSheet == False:
self.GBox_012_SpreadSheet.setVisible(switch_setVisible_GBox_012_SpreadSheet) # visibility
self.GBox_012_SpreadSheet.setCheckable(True)
self.GBox_012_SpreadSheet.setChecked(False)
self.GBox_012_SpreadSheet.setStyleSheet(u"QGroupBox {color : #ff0000}")
self.GBox_012_SpreadSheet.clicked.connect(self.on_GBox_012_SpreadSheet)
self.GBox_012_SpreadSheet.setLayout(grid)
vbox.addWidget(self.GBox_012_SpreadSheet)
self.tableWidget = QtWidgets.QTableWidget() # self.GBox_012_SpreadSheet
self.tableWidget.setIconSize(QtCore.QSize(15, 15))
self.tableWidget.setRowCount(RowCount)
self.tableWidget.setColumnCount(8) # number of columns
self.tableWidget.horizontalHeader().setVisible(False)
self.tableWidget.horizontalHeader().setDefaultSectionSize(100)
self.tableWidget.horizontalHeader().setMinimumSectionSize(15)
self.tableWidget.verticalHeader().setVisible(True)
self.tableWidget.verticalHeader().setCascadingSectionResizes(False)
self.tableWidget.verticalHeader().setDefaultSectionSize(20)
self.tableWidget.verticalHeader().setMinimumSectionSize(20)
grid.addWidget(self.tableWidget, 0, 0, 4, 4)
#### SpreadSheet (options CSV debut)
grid = QtWidgets.QGridLayout()
self.GBox_013_SpreadSheet_Creation = QtWidgets.QGroupBox()
if switch_setVisible_GBox_013_SpreadSheet_Creation == False:
self.GBox_013_SpreadSheet_Creation.setVisible(switch_setVisible_GBox_013_SpreadSheet_Creation) # visibility
self.GBox_013_SpreadSheet_Creation.setLayout(grid)
vbox.addWidget(self.GBox_013_SpreadSheet_Creation)
#### SpreadSheet dans le document
self.PB_03_Create_SpreadSheet = QtWidgets.QPushButton()
self.PB_03_Create_SpreadSheet.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_SpreadSheet))) # icone dans une variable
self.PB_03_Create_SpreadSheet.clicked.connect(self.on_PB_03_Create_SpreadSheet_clicked)
grid.addWidget(self.PB_03_Create_SpreadSheet, 0, 0, 1, 2)
self.LE_SpreadSheet = QtWidgets.QLineEdit()
self.LE_SpreadSheet.setText(newSpreadSheetName)
self.LE_SpreadSheet.textChanged.connect(self.on_LE_SpreadSheet_Pressed)
grid.addWidget(self.LE_SpreadSheet, 0, 2, 1, 2)
self.PB_SpreadSheet_Refresh = QtWidgets.QPushButton()
self.PB_SpreadSheet_Refresh.clicked.connect(self.on_PB_SpreadSheet_clicked)
grid.addWidget(self.PB_SpreadSheet_Refresh, 1, 0, 1, 2)
self.ComboB_SpreadSheet = QtWidgets.QComboBox()
self.ComboB_SpreadSheet.currentIndexChanged[str].connect(self.On_ComboB_SpreadSheet)# [str] or [int]
grid.addWidget(self.ComboB_SpreadSheet, 1, 2, 1, 2)
#### SpreadSheet sur disque
self.PB_01_Read_SpreadSheet = QtWidgets.QPushButton()
self.PB_01_Read_SpreadSheet.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_04))) # icone dans une variable
self.PB_01_Read_SpreadSheet.clicked.connect(self.on_PB_01_Read_SpreadSheet_clicked)
grid.addWidget(self.PB_01_Read_SpreadSheet, 2, 0, 1, 1)
self.PB_02_Save_SreadSheet = QtWidgets.QPushButton()
self.PB_02_Save_SreadSheet.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_03))) # icone dans une variable
self.PB_02_Save_SreadSheet.clicked.connect(self.on_PB_02_Save_SreadSheet_clicked)
grid.addWidget(self.PB_02_Save_SreadSheet, 2, 1, 1, 1)
self.RB_01_Tabulation = QtWidgets.QRadioButton()
self.RB_01_Tabulation.setChecked(True)
self.RB_01_Tabulation.clicked.connect(self.on_RB_Separation)
grid.addWidget(self.RB_01_Tabulation, 3, 0)
self.RB_02_Virgule = QtWidgets.QRadioButton()
self.RB_02_Virgule.clicked.connect(self.on_RB_Separation)
grid.addWidget(self.RB_02_Virgule, 3, 1)
self.RB_03_Point_Virgule = QtWidgets.QRadioButton()
self.RB_03_Point_Virgule.clicked.connect(self.on_RB_Separation)
grid.addWidget(self.RB_03_Point_Virgule, 3, 2)
self.RB_04_Espace = QtWidgets.QRadioButton()
self.RB_04_Espace.clicked.connect(self.on_RB_Separation)
grid.addWidget(self.RB_04_Espace, 3, 3)
#options CSV fin
#### Main
grid = QtWidgets.QGridLayout()
self.GBox_014_Main_Tools = QtWidgets.QGroupBox()
if switch_setVisible_GBox_014_Main_Tools == False:
self.GBox_014_Main_Tools.setVisible(switch_setVisible_GBox_014_Main_Tools) # visibility
self.GBox_014_Main_Tools.setLayout(grid)
vbox.addWidget(self.GBox_014_Main_Tools)
self.CB_01_Info = QtWidgets.QCheckBox()
self.CB_01_Info.setChecked(switchDisplayInfoObject)
self.CB_01_Info.clicked.connect(self.on_CB_01_Info)
grid.addWidget(self.CB_01_Info, 0, 0, 1, 2)
self.CB_02_Point = QtWidgets.QCheckBox()
self.CB_02_Point.setChecked(switchCreatePoint)
self.CB_02_Point.clicked.connect(self.on_CB_02_Point)
grid.addWidget(self.CB_02_Point, 0, 1)
self.CB_03_Axis = QtWidgets.QCheckBox()
self.CB_03_Axis.setChecked(switchCreateAxis) #False
self.CB_03_Axis.clicked.connect(self.on_CB_03_Axis)
grid.addWidget(self.CB_03_Axis, 0, 2)
self.CB_04_Plane = QtWidgets.QCheckBox()
self.CB_04_Plane.setChecked(switchCreatePlane) #False
self.CB_04_Plane.clicked.connect(self.on_CB_04_Plane)
grid.addWidget(self.CB_04_Plane, 0, 3)
self.RB_00_ClipBoard = QtWidgets.QRadioButton()
if seTMemoClipBoard == 0:
self.RB_00_ClipBoard.setChecked(True)
self.RB_00_ClipBoard.clicked.connect(self.on_RB_00_ClipBoard)
grid.addWidget(self.RB_00_ClipBoard, 1, 0)
self.RB_01_ClipBoard = QtWidgets.QRadioButton()
if seTMemoClipBoard == 1:
self.RB_01_ClipBoard.setChecked(True)
self.RB_01_ClipBoard.clicked.connect(self.on_RB_01_ClipBoard)
grid.addWidget(self.RB_01_ClipBoard, 1, 1)
self.RB_02_ClipBoard = QtWidgets.QRadioButton()
if seTMemoClipBoard == 2:
self.RB_02_ClipBoard.setChecked(True)
self.RB_02_ClipBoard.clicked.connect(self.on_RB_02_ClipBoard)
grid.addWidget(self.RB_02_ClipBoard, 1, 2)
self.RB_03_ClipBoard = QtWidgets.QRadioButton()
if seTMemoClipBoard == 3:
self.RB_03_ClipBoard.setChecked(True)
self.RB_03_ClipBoard.clicked.connect(self.on_RB_03_ClipBoard)
grid.addWidget(self.RB_03_ClipBoard, 1, 3)
self.CB_05_Position = QtWidgets.QCheckBox()
self.CB_05_Position.setChecked(False)
if seTPositionFlyRightLeft == 1:
self.CB_05_Position.setVisible(False)
elif seTPositionFlyRightLeft == 2:
self.CB_05_Position.setChecked(False)
else:
self.CB_05_Position.setChecked(True)
self.CB_05_Position.clicked.connect(self.on_CB_05_Position)
grid.addWidget(self.CB_05_Position, 2, 0)
self.SPBox_arrondi = QtWidgets.QSpinBox()
self.SPBox_arrondi.setMinimum(-1)
self.SPBox_arrondi.setMaximum(1000)
#self.SPBox_arrondi.setProperty(u"value", seTDecimalValue)
self.SPBox_arrondi.setValue(seTDecimalValue)
self.SPBox_arrondi.setSuffix(u" (Decimals)")
self.SPBox_arrondi.valueChanged.connect(self.on_SPBox_arrondi_valueChanged)
grid.addWidget(self.SPBox_arrondi, 3, 0, 1, 2)
self.SP_012_01_Text = QtWidgets.QSpinBox()
self.SP_012_01_Text.setMinimum(0)
self.SP_012_01_Text.setMaximum(99999999)
self.SP_012_01_Text.setValue(seTTextHeigthValue)
self.SP_012_01_Text.setSuffix(u" (Text Height)")
self.SP_012_01_Text.valueChanged.connect(self.on_SP_012_01_Text_valueChanged)
grid.addWidget(self.SP_012_01_Text, 3, 2, 1, 2)
self.PB_05_Help_Forum = QtWidgets.QPushButton()
self.PB_05_Help_Forum.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_WebForum))) # icone dans une variable
self.PB_05_Help_Forum.clicked.connect(self.on_PB_05_Help_Forum_clicked)
grid.addWidget(self.PB_05_Help_Forum, 4, 0, 1, 2)
self.PB_06_Help_Wiki = QtWidgets.QPushButton()
self.PB_06_Help_Wiki.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_WebWiki))) # icone dans une variable
self.PB_06_Help_Wiki.clicked.connect(self.on_PB_06_Help_Wiki)
grid.addWidget(self.PB_06_Help_Wiki, 4, 2, 1, 2)
self.PB_01_Refrech = QtWidgets.QPushButton()
self.PB_01_Refrech.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_02))) # icone dans une variable
self.PB_01_Refrech.clicked.connect(self.on_PB_01_Refrech_clicked)
grid.addWidget(self.PB_01_Refrech, 5, 0, 1, 2)
self.PB_04_Quit = QtWidgets.QPushButton()
self.PB_04_Quit.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_01))) # icone dans une variable
self.PB_04_Quit.clicked.connect(self.on_PB_04_Quit)
grid.addWidget(self.PB_04_Quit, 5, 2, 1, 2)
###########################################################scrollArea
self.scrollArea.setWidget(self.scrollAreaWidgetContents_2)
###########################################################scrollArea
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
if seTPositionFlyRightLeft == 1: # 1=MainWindow separate
MainWindow.setWindowTitle(__Title__ + u" rmu (" + __Version__ + ") (" + __Date__ + ")")
MainWindow.setCentralWidget(self.centralWidget)
MainWindow.move(1000, 120) # deplace la fenetre
else:
MainWindow.setWindowTitle(__Title__ + u" rmu (" + __Version__ + ") (" + __Date__ + ")")
MainWindow.setWidget(self.centralWidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
global diffuseColorRF
global diffuseColorVF
global diffuseColorBF
global diffuseColorTF
global unsignedEncodeColor
global typeLongueur
global path
global volume_
global longueurObjet
global rayonObjet
global perimetre
global seTDensiteValue
global seTIndexUnitWeight
global seTIndexUnitLength
global ui
global materialAssociated
global seTMaterialFileName
global seTMaterialSavePathName
global seTMaterialSuffixCost
global seTMaterialPrice
global seTMaterialCost
global seTTextHeigthValue
global directionObj
global direcValueAt
global direcNormalAt
global poids
global unitePs
global numberEdges
global nombreArretesMesh
global nombreFacesMesh
global nombrePointsMesh
global seTUnitSymbolMicro
global BsplineDetect
global BsplineNombreDeNoeuds
global BsplineRayonApproximatif
global BsplineCercleToolTip
global BsplineNumberElement
global BsplineCutLength
global BsplinePointsCoor
global setBSplineToByArcValue
global BSplinetoByArcValeurS
global switchCreateLineDiVatNatOnClick
global switchSetPlaceholderText
global typeNormalAt
ui.on_SP_012_01_Text_valueChanged(seTTextHeigthValue) # actualise text
MainWindow.setWindowFlags(PySide2.QtCore.Qt.WindowStaysOnTopHint) # PySide2 cette fonction met la fenetre en avant
##https://doc.qt.io/qt-5/qtwidgets-widgets-windowflags-example.html
#MainWindow.setWindowFlags(PySide2.QtCore.Qt.WindowTitleHint) # 2 absents X grise (fonctionne pas dans ComboView et desactive WindowStaysOnTopHint)
#MainWindow.setWindowFlags(PySide2.QtCore.Qt.WindowContextHelpButtonHint)# WindowCloseButtonHint , setCancelButton(None)
MainWindow.setWindowIcon(QtGui.QIcon(path+'FCInfo.png')) # icone dans fichier
pointPlanAxesTexte = (
u"Crée un Point ou Axes ou Plans ou Presse papier" + "\n"
u"Coordonnées de la souris" + "\n\n" +
u"La copie des coordonnées est faite sous la forme" + "\n" +
u"FreeCAD.Vector(-24.0, 240.0, 7.0)" + "\n" +
u"X, Y, Z (séparation par une virgule)" + "\n" +
u"X Y Z (séparation par un espace)" + "\n" +
u"suivant l"+chr(39)+"option choisie" + "\n"
)
####
self.GBox_001_Document.setTitle(u"Document")
self.LE_1.setText(document_)
self.LE_1.setToolTip(u"Nom du document actif.")
self.LE_2.setText(object_Label)
self.LE_2.setToolTip(u"Label de l'élément séléctionné.")
self.LE_2a.setText(object_Name)
self.LE_2a.setToolTip(u"Nom interne de l'élément sélectionné.")
self.LE_3.setText(str(subElemName))
self.LE_3.setToolTip(u"Nom du sub objet sélectionné.")
self.LE_3a.setText(str(typeObject))
self.LE_3a.setToolTip(u"TypeID de l'objet (Shape) sélectionné.")
self.LE_4.setText(str(object_Type))
self.LE_4.setToolTip(u"TypeID de l'objet sélectionné.")
# self.LE_Curve.setText(str(curveObject))
# self.LE_Curve.setToolTip(u"Curve.")
self.LA_1.setText(u"Nom du Document")
self.LA_2.setText(u"Label / Nom-Interne")
self.LA_3.setText(u"Sub.Shape / Type")
self.LA_4.setText(u"Shape.TypeID / TypeID")
# self.LA_Curve.setText(u"Curve")
####
self.GBox_002_Coordinate_Mouse.setTitle(u"Coordonnée au point cliqué")
self.LA_4x.setText(u"X")
self.LA_4y.setText(u"Y")
self.LA_4z.setText(u"Z")
self.LE_4x.setText(str(Around(position0)))
self.LE_4x.setToolTip(u"Coordonnée X du clic de la souris.")
self.LE_4y.setText(str(Around(position1)))
self.LE_4y.setToolTip(u"Coordonnée Y du clic de la souris.")
self.LE_4z.setText(str(Around(position2)))
self.LE_4z.setToolTip(u"Coordonnée Z du clic de la souris.")
self.PB_Axis_01.setToolTip(pointPlanAxesTexte)
####
self.GBox_003_Color.setTitle(u"Couleur au point")
self.LA_1_Red.setText(u"Rouge")
self.LA_2_Green.setText(u"Vert")
self.LA_3_Blue.setText(u"Bleu")
self.LA_4_Transparent.setText(u"Transparence")
self.LE_CRed.setText(str(Around(diffuseColorRF)))
self.LE_CRed.setToolTip(u"Pourcentage de couleur Rouge au point cliqué (format Float)" + "\n" +
u"Le cadre est coloré avec le pourcentage de Rouge affiché")
self.LE_CRed.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: rgb("+str(int(diffuseColorRF*255.0))+", 0, 0)}") # white and red
self.LE_CGreen.setText(str(Around(diffuseColorVF)))
self.LE_CGreen.setToolTip(u"Pourcentage de couleur Verte au point cliqué (format Float)" + "\n" +
u"Le cadre est coloré avec le pourcentage de Vert affiché")
self.LE_CGreen.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: rgb(0, "+str(int(diffuseColorVF*255.0))+", 0)}") # white and green
self.LE_CBlue.setText(str(Around(diffuseColorBF)))
self.LE_CBlue.setToolTip(u"Pourcentage de couleur Bleue au point cliqué (format Float)" + "\n" +
u"Le cadre est coloré avec le pourcentage de Bleu affiché")
self.LE_CBlue.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: rgb(0, 0, "+str(int(diffuseColorBF*255.0))+")}") # white and blue
self.LE_Transparent.setText(str(Around(diffuseColorTF)))
self.LE_Transparent.setToolTip(u"Transparence au point cliqué (format Float)")
self.LE_ConversionUnsigned.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: rgb("+str(int(diffuseColorRF*255.0))+","+str(int(diffuseColorVF*255.0))+","+str(int(diffuseColorBF*255.0))+")}") # white
self.LE_ConversionUnsigned.setText(str(unsignedEncodeColor))
self.LE_ConversionUnsigned.setToolTip(u'Donne différents codages de couleurs au point cliqué' + '\n'
u'Le cadre est coloré avec la couleur du point sélectionné' + '\n\n' +
u'Exemple affiché :' + '\n\n'
u'1:\t\t2:\t\t3:\t\t4:\t\t5:' + '\n'
u'"86057986"\t, "#052123"\t, "0x52123"\t, "5,33,35"\t, "0.0196,0.1294,0.1373"' + '\n\n'
u'1: 86057986\t: Mode RVBA Int unsigned (format in FreeCAD preferences) Alpha = 255' + '\n'
u'2: #052123\t: Mode RVB Hexadecimal (Qt setStyleSheet("QLineEdit {color : #052123"})' + '\n'
u'3: 0x052123\t: Mode RVB Hexadecimal (Python: hex(336163)' + '\n'
u'4: RVB decim\t: Mode RVB (Qt setStyleSheet("QLineEdit {background-color: rgb(5, 33, 36)}"))' + '\n'
u'5: RVB float\t: Mode RVB format float de 0.0 à 1.0' + '\n'
u'\t\t(Le nombre de décimales dépend de l' + chr(39) + 'option "x (Décimales)")' + '\n\n')
self.CBox_Color_FaceObject.setText(u"Sub.Objet")
self.CBox_Color_FaceObject.setToolTip(u"Change la couleur de l'objet ou du subObjet sélectionné" + "\n" +
u"Si cette case est activée la face ou le sub Objet sélectionné est modifié ou dupliqué" + "\n" +
u"Si elle n'est pas activée (défaut) l'objet est modifié (couleur) ou dupliqué")
self.PB_ChangeColor.setText(u"Coul. Obj")
self.PB_ChangeColor.setToolTip(u"Changer la couleur du Shape ou de la face sélectionnée et/ou la transparence" + "\n\n"
u"Dans le cas d'un objet Mesh ou Points l'object complet est coloré" + "\n")
#u"Si un point ou un bord est sélectionné, l'objet complet prend la couleur de la sélection"
self.PB_CreateFace.setText(u"Dupl. Obj")
self.PB_CreateFace.setToolTip(u"Duplique la face ou l'objet suivant l'option choisie" + "\n" +
u"Dans le cas d'un objet Mesh ou Points l'object complet est coloré" + "\n" +
u"Dupliquer un objet Mesh conserve l'original et crée une forme solide" + "\n" +
u"Dupliquer un objet Points conserve l'original et crée une copie")
self.SBox_Transparence.setToolTip(u"Degré de transparence de la Face ou l'objet complet sélectionné" + "\n" +
u"suivant l'option choisie" + "\n" +
u"0 = opaque / 100 = transparent")
####
self.GBox_004_Object_Mesh.setTitle(u"Composants") # Mesh or Points
self.LA_N_Edges.setText(u"Edges")
self.LE_N_Edges.setText(str(nombreArretesMesh))
self.LE_N_Edges.setToolTip(u"Nombre d'Arrêtes composant l'objet Mesh")
#self.PB_Axis_01.setText(u"Axis")
self.LA_N_Facets.setText(u"Faces")
self.LE_N_Facets.setText(str(nombreFacesMesh))
self.LE_N_Facets.setToolTip(u"Nombre de Faces composant l'objet Mesh")
self.LA_N_Points.setText(u"Points")
self.LE_N_Points.setText(str(nombrePointsMesh))
self.LE_N_Points.setToolTip(u"Nombre de Points composant l'objet") # mesh and Points
####
self.GBox_005_Value_Unit.setTitle(u"Unités")
self.LA_5a.setText(u"Unités")
#http://fr.wikipedia.org/wiki/Unit%C3%A9s_de_mesure_anglo-saxonnes
self.comboBox.setToolTip(u"Sélectionnez une unité de longueur.")
# self.comboBox.setCurrentIndex(seTIndexUnitLength)
self.comboBox.setCurrentIndex(6)
self.comboBox.setItemText(0, u"km") #km # = 1000000
self.comboBox.setItemText(1, u"hm") #hm # = 100000
self.comboBox.setItemText(2, u"dam") #dam# = 10000
self.comboBox.setItemText(3, u"m") #m # = 1000
self.comboBox.setItemText(4, u"dm") #dm # = 100
self.comboBox.setItemText(5, u"cm") #cm # = 10
self.comboBox.setItemText(6, u"mm") #mm # = 1
self.comboBox.setItemText(7, seTUnitSymbolMicro + u"m")#Um#= 0.001 micro hex="\xB5", html=<span>&#181;</span>
self.comboBox.setItemText(8, u"nm") #nm # * = 0.000001 nano
self.comboBox.setItemText(9, u"pm") #pm # = 0.000000001 pico
self.comboBox.setItemText(10, u"fm") #fm # = 0.000000000001 femto
self.comboBox.setItemText(11, u"inch") #in # inch pouce = 25.400
self.comboBox.setItemText(12, u"link") #lk # link chainon = 201.168
self.comboBox.setItemText(13, u"foot") #ft # foot pied = 304.800
self.comboBox.setItemText(14, u"yard") #yd # yard verge = 914.400
self.comboBox.setItemText(15, u"perch") #rd # rod ou perch perche = 5029.200
self.comboBox.setItemText(16, u"chain") #ch # chain chaine = 20116.800
self.comboBox.setItemText(17, u"furlong") #fur# furlong = 201168
self.comboBox.setItemText(18, u"mile") #mi # mile = 1609344
self.comboBox.setItemText(19, u"league") #lea# league lieue = 4828032
self.comboBox.setItemText(20, u"nautique") #nmi# mile nautique = 1852000
# self.LA_6.setText(u"Périm. du shape")
self.LA_5.setText(typeLongueur)
try:
self.LE_5.setText(str(Around(float(longueurObjet) * float(uniteM)))+ " " +uniteMs)
except Exception:
self.LE_5.setText(u"")
self.LE_5.setToolTip(u"Longueur de l'objet." + "\n"
u"Si une face est sélectionnée le périmètre de la face sera affiché.")
if (rayonObjet != 0.0) or (str(BsplineDetect) == "<BSplineCurve object>"):
self.LE_5b.setVisible(True)
self.LA_5b.setVisible(True)
if (str(BsplineDetect) == "<BSplineCurve object>"):
self.SB_Arc_ToByArcs.setVisible(True)
self.SB_Arc_ToByArcs.setToolTip(u"Bspline détecté " + "\n"
u"Nombre d'élements = " + str(BsplineNumberElement) + "\n" +
u"Calcul avec une distance entre points " + str(Around(BsplineCutLength * uniteM)) + " " + uniteMs + "\n\n" +
u"toBiArcs(" + BSplinetoByArcValeurS + ")" + "\n"
u"Cette valeur peut être changée dans les préferences variable : setBSplineToByArcValue" + "\n")
self.PB_BSplineCreateNodes.setText(u"Points(" + str(len(BsplinePointsCoor)) + ")") # Node
self.PB_BSplineCreateNodes.setToolTip(u"Create on point on Poles (" + str(len(BsplinePointsCoor)) + ") of the BSpline" + "\n\n"
u"Command for Shape : Gui.Selection.getSelection()[0].Points" + "\n"
u"Command for SubObj : Gui.Selection.getSelectionEx()[0].SubObjects[0].Curve.getPoles()" + "\n\n"
u"Hidden Options : " + "\n\n"
u"The variables " + "\n\n"
u"switchBSplineCreateCircleConstructorAxis" + "\n"
u"switchBSplineCreateCircleConstructor" + "\n\n"
u"accessible in : User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__ + "\n"
u"allow to create the circles and the point axes construction of the BSpline" + "\n"
u"their number (precision) depends on the value toBiArcs(BSplinetoByArcValeurS)" + "\n"
u"actual toBiArcs(" + BSplinetoByArcValeurS + ")" + "\n")
self.PB_BSplineCreateNodes.setVisible(True)
self.LA_5b.setText(u"Rayon BSpline.")
self.LE_5b.setText(BsplineRayonApproximatif)
self.LE_5b.setToolTip(u"BSpline Rayon au point : " + self.SB_Arc_ToByArcs.text())
self.LA_6.setText(u"BSpline Noeuds")
self.LE_6.setText(str(BsplineNombreDeNoeuds))
self.LE_6.setToolTip(u"Nombre de noeuds du BSpline.")
else:
self.SB_Arc_ToByArcs.setVisible(False)
self.PB_BSplineCreateNodes.setVisible(False)
self.LA_5b.setText(u"Rayon")
self.LE_5b.setText(str(Around(rayonObjet * float(uniteM))) + " " + uniteMs + (" (dia. " + str(Around(rayonObjet * float(uniteM) * 2.0)) + " " + uniteMs + ")"))
self.LE_5b.setToolTip(u"Rayon détecté affiché en rayon et diamètre." + "\n"
u"Si un rayon est détecté sur une face, il est aussi affiché")
if numberEdges == 1:
self.LA_6.setText(u"Circonférence (" + str(numberEdges) + ")")
else:
self.LA_6.setText(u"Périmètre du shape (" + str(numberEdges) + ")")
self.LE_6.setText(str(Around(float(perimetre) * float(uniteM))) + " " +uniteMs)
else:
self.LA_6.setText(u"Périmètre du shape (" + str(numberEdges) + ")")
self.SB_Arc_ToByArcs.setVisible(False)
self.PB_BSplineCreateNodes.setVisible(False)
self.LE_5b.setVisible(False)
self.LA_5b.setVisible(False)
rayonObjet = 0.0
try:
self.LE_6.setText(str(Around(float(perimetre) * float(uniteM))) + " " +uniteMs)
except Exception:
perimetre = 0.0
self.LE_6.setText(str(Around(perimetre)))
self.LE_6.setToolTip(u"Périmètre total de la forme." + "\n"
u"Affiche la somme totale de toutes les arêtes de la forme")
self.PB_BSplineCreateNodes.setText(u"Points(" + str(len(BsplinePointsCoor)) + ")") # Node
self.PB_BSplineCreateNodes.setToolTip(u"Crée un point à chaque noeud (" + str(len(BsplinePointsCoor)) + ") du BSpline" + "\n\n"
u"Options cachées : " + "\n\n"
u"Command for Shape : Gui.Selection.getSelection()[0].Points" + "\n"
u"Command for SubObj : Gui.Selection.getSelectionEx()[0].SubObjects[0].Curve.getPoles()" + "\n\n"
u"Hidden Options : " + "\n\n"
u"Les variables " + "\n\n"
u"switchBSplineCreateCircleConstructorAxis" + "\n"
u"switchBSplineCreateCircleConstructor" + "\n\n"
u"accessibles dans : User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__ + "\n"
u"permettent de créer les cercles et les axes de construction du BSpline" + "\n"
u"leur nombre (précision) dépend de la valeur toBiArcs(BSplinetoByArcValeurS)" + "\n"
u"actuellement toBiArcs(" + BSplinetoByArcValeurS + ")" + "\n")
####
self.GBox_006_Inclination.setTitle(u"Inclinaison")
self.GBox_006_Inclination.setToolTip(u"Inclinaisons comparées XY, YZ, XZ")
self.LA_8a.setText(u"Plan")
self.PB_Ra.setText(u"Degrees")
self.PB_Ra.setToolTip(u"Bascule entre Degrés décimal, Degrés minutes secondes" + "\n"
u"Radian, Grade, Pourcent.")
self.LA_8a_2.setText(u"Coordonnées")
self.LA_8xy.setText(u"XY")
self.LE_8xy.setText(str(Plan_xy) + " " + uniteAs)
self.LE_8xy.setToolTip(u"Angle dans le plan XY.")
self.LE_8xya.setText(str(Plan_xy_V))
self.LA_8yz.setText(u"YZ")
self.LE_8yz.setText(str(Plan_yz) + " " + uniteAs)
self.LE_8yz.setToolTip(u"Angle dans le plan YZ.")
self.LE_8yza.setText(str(Plan_yz_V))
self.LA_8zx.setText(u"ZX")
self.LE_8zx.setText(str(Plan_zx) + " " + uniteAs)
self.LE_8zx.setToolTip(u"Angle dans le plan ZX.")
self.LE_8zxa.setText(str(Plan_zx_V))
##
if switchCreateLineDiVatNatOnClick == 0:
self.PB_Line_Direction.setText(u"Direction")
self.PB_Line_ValueAT.setText(u"ValueAt(0)")
self.PB_Line_NormalAT.setText(typeNormalAt)
else:
self.PB_Line_Direction.setText(u"*Direction")
self.PB_Line_ValueAT.setText(u"*ValueAt(0)")
self.PB_Line_NormalAT.setText(typeNormalAt)
self.PB_Line_Direction.setToolTip(u"Créee une ligne (Jaune) dans la direction affichée" + "\n"
u"La ligne est créée au point 0,0,0 vers Direction (switchCreateLineDiVatNatOnClick = FALSE)" + "\n"
u"Si switchCreateLineDiVatNatOnClick = True, la ligne commence au point cliqué par la souris" + "\n"
u"\tLe bouton est affiché avec un astérique *Direction" + "\n\n")
self.LE_9_Direction.setText(str(directionObj))
self.LE_9_Direction.setToolTip(u"Direction de l'objet" + "\n"
u"Direction du point(x1,y1,z1) à point(x2,y2,z2)" + "\n"
u"Commande :" + "\n\n"
u"edgeObject = Gui.Selection.getSelection()[0].Shape.Edges[0]" + "\n"
u"directionObj = edgeObject.Vertexes[1].Point.sub(edgeObject.Vertexes[0].Point)" + "\n\n")
self.PB_Line_ValueAT.setToolTip(u"Créee une ligne (Magenta) dans la direction ValueAt(0)" + "\n"
u"La ligne est créée au point 0,0,0 dans la direction ValueAt(0) (switchCreateLineDiVatNatOnClick = FALSE)" + "\n"
u"Si switchCreateLineDiVatNatOnClick = True, la ligne commence au point cliqué par la souris" + "\n"
u"\tLe bouton est affiché avec un astérique *ValueAt(0)" + "\n\n")
self.LE_10_ValueAt.setText(str(direcValueAt))
self.LE_10_ValueAt.setToolTip(u"Retourne la valeur du vecteur correspondant au paramètre 3D. " + "\n"
u"Commande :" + "\n\n"
u"Gui.Selection.getSelectionEx()[0].SubObjects[0].Edges[0].valueAt(0)" + "\n\n")
self.PB_Line_NormalAT.setToolTip(u"Créee une ligne (Cyan) dans la direction NormalAt(0,0)" + "\n"
u"La ligne est créée au point 0,0,0 dans la direction NormalAt(0,0) (switchCreateLineDiVatNatOnClick = FALSE)" + "\n"
u"Si switchCreateLineDiVatNatOnClick = True, la ligne commence au point cliqué par la souris" + "\n"
u"\tLe bouton est affiché avec un astérique *NormalAt(0,0)" + "\n\n")
self.LE_10b_NormalAt.setText(str(direcNormalAt))
self.LE_10b_NormalAt.setToolTip(u"Retourne la valeur des paramètres de la normale de la face sélectionnée" + "\n"
u"Commande :" + "\n\n"
u"Gui.Selection.getSelectionEx()[0].SubObjects[0].Faces[0].normalAt(0,0)" + "\n\n")
##
####
self.GBox_012_SpreadSheet.setTitle(u"Module désactivé")
self.tableWidget.setToolTip(u"Tableau d'affichage des détails de la forme." + "\n"
u"Si la case à cocher est validée un scan complet de la forme sélectionnée est effectué" + "\n"
u"(l'utilisation de cette option peut prendre beaucoup de temps pour un gros objet" + "\n"
u" un scan complet est effectué à chaque clic de souris (Décoché par défaut couleur rouge))" + "\n\n"
u"Seul les informations nécessaires de la forme sont affichées" + "\n\n"
u"Le titre donne : Vertexes et détails : (Edges) (Faces) (Vertex Faces) ...(Total)" + "\n"
u"Seul les 200 premiers détails de la forme sont affichés." + "\n"
u"Tous les éléments seront visibles dans le fichier après l'avoir sauvé.")
####
self.GBox_007_Surface_and_Volume.setTitle(u"Surface et Volume")
self.LA_9.setText(u"Surface de la forme")
self.LE_9a.setText(str(Around(surface)) + " " + uniteSs)
self.LE_9a.setToolTip(u"Surface totale de la forme.")
self.LA_10.setText(u"Surface de la face")
self.LE_10a.setText(str(Around(surfaceFace)) + " " + uniteSs)
self.LE_10a.setToolTip(u"Surface de la face.")
self.LA_11.setText(u"Volume de la forme")
self.LE_11a.setText(str(Around(volume_)) + " " + uniteVs)
self.LE_11a.setToolTip(u"Volume total de la forme.")
self.LA_Unit.setText(u"Unité")
self.comboBox_Unit.setCurrentIndex(5)
self.comboBox_Unit.setItemText(0, u"tonne") #t # = 1000000
self.comboBox_Unit.setItemText(1, u"quintal") #q # = 100000
self.comboBox_Unit.setItemText(2, u"kilo gram") #kg # = 1000
self.comboBox_Unit.setItemText(3, u"hecto gram") #hg # = 100
self.comboBox_Unit.setItemText(4, u"decagram") #dag # = 10
self.comboBox_Unit.setItemText(5, u"gram") #g # = 1
self.comboBox_Unit.setItemText(6, u"decigram") #dg # = 0.1
self.comboBox_Unit.setItemText(7, u"centigram") #cg # = 0.01
self.comboBox_Unit.setItemText(8, u"milligram") #mg # = 0.001
self.comboBox_Unit.setItemText(9, u"microgram") #Ug # = 0.000001 micro hex="\xB5", html=<span>&#181;</span>
self.comboBox_Unit.setItemText(10, u"nanogram") #ng # = 0.000000001
self.comboBox_Unit.setItemText(11, u"picogram") #pg # = 0.000000000001
self.comboBox_Unit.setItemText(12, u"femtogram") #fg # = 0.000000000000001 femtogram
self.comboBox_Unit.setItemText(13, u"grain") #gr # = 0.06479891 g
self.comboBox_Unit.setItemText(14, u"drachm") #dr # = 1.7718451953125 g
self.comboBox_Unit.setItemText(15, u"once") #oz # = 28.3495231250 g
self.comboBox_Unit.setItemText(16, u"once troy") #oz t # = 31.1034768 g once troy
self.comboBox_Unit.setItemText(17, u"livre troy") #lb t # = 373.2417216 g livre de troy
self.comboBox_Unit.setItemText(18, u"livre av") #lb # = 453.59237 g livre avoirdupois pound
self.comboBox_Unit.setItemText(19, u"stone") #st # = 6350.29318 g
self.comboBox_Unit.setItemText(20, u"quarter") #qtr # = 12700.58636 g
self.comboBox_Unit.setItemText(21, u"hundredweight") #cwt # = 50802.34544 g
self.comboBox_Unit.setItemText(22, u"tonneau fr") # # = 0.00000102145045965 g
self.comboBox_Unit.setItemText(23, u"carat") #ct # = 0.2 g
self.comboBox_Unit.setToolTip(u"Selectionnez une unité de masse")
self.LA_Weight.setText(u"Poids")
self.LA_Density.setText(u"Densité")
self.LE_12a.setText(str(Around(poids)) + " " + unitePs)
self.LE_12a.setToolTip(u"Poids de la forme dans l'unité sélectionnée.")
seTMaterialCost = ((volume_ * seTDensiteValue * seTMaterialPrice) / 1000000.0)
self.LE_Cost.setText(str(Around(seTMaterialCost)) + seTMaterialSuffixCost) #CostMaterial
self.DS_Density.setToolTip(u"Give the volume density in Kg by dm3.")
self.GBox_008_Cost_And_Price.setTitle(u"Coût")
self.LA_Cost.setText(u"Coût total")
self.LA_Price.setText(u"Prix (kg/dm3)")
self.PB_Del_Material.setText(u"Effacer (" + str(self.CBox_Materiel.currentIndex() + 1) + "/" + str(len(materialAssociated)) + ")")
self.PB_Del_Material.setToolTip(u"Effacer le matériel courant ")
self.PB_Save_Material.setText(u"Sauve")
self.PB_Save_Material.setToolTip(u"Sauve le materiel courant" + "\n"
u"Le matériel est aussi sauvé en quittant la macro avec le bouton Exit")
self.LA_Material.setText(u"Matériel")
self.CBox_Materiel.setToolTip(u"Les données relatives au matériau sont enregistrées dans le macro-emplacement (par défaut)" + "\n\n"
u"Au premier démarrage, un fichier Matériel est créé avec 20 composants" + "\n"
u"Emplacement : " + seTMaterialSavePathName + " nom du fichier : " + seTMaterialFileName + "\n"
u"Actuel : " + str(len(materialAssociated)) + " matériaux répertoriés" + "\n"
u"Si le fichier est supprimé ou empity un nouveau fichier de matériel est créé" + "\n"
u"avec la liste de matériel incluse dans la macro")
self.LA_NewMaterial.setText(u"Nouveau matériel ou édition")
self.LE_Materiel.setToolTip(u"Entrez votre nouveau matériau et appuyez sur la touche Entrée pour valider" + "\n\n"
u"Format : nouveauNomMatériau,Densité,Prix (par kg),Infos" + "\n\n"
u"PS : le champ Prix (par kg) et le champ Info sont facultatifs" + "\n\n"
u"Un autre format n'est pas accepté et le fond est coloré en rouge" + "\n"
u"Le matériau actuel est affiché, vous pouvez modifier ou compléter les données matériau" + "\n"
u"Si le nom est modifié, un nouveau matériau est créé" + "\n")
####
self.GBox_009_BoundBox.setTitle(u"BoundBox")
self.LA_007_01_Xlength.setText(u"Longueur X")
self.LA_007_02_Ylength.setText(u"Longueur Y")
self.LA_007_03_Zlength.setText(u"Longueur Z")
self.LA_007_04_Diagonallength.setText(u"Diagonale")
self.LE_007_BB_01_XLength.setText(str(Around(boundBoxLX * uniteM)) + " " + uniteMs)
self.LE_007_BB_01_XLength.setToolTip(u"Dimensions hors tout de la forme:" + "\n"
u"Direction X")
self.LE_007_BB_02_YLength.setText(str(Around(boundBoxLY * uniteM)) + " " + uniteMs)
self.LE_007_BB_02_YLength.setToolTip(u"Dimensions hors tout de la forme:" + "\n"
u"Direction Y")
self.LE_007_BB_03_ZLength.setText(str(Around(boundBoxLZ * uniteM)) + " " + uniteMs)
self.LE_007_BB_03_ZLength.setToolTip(u"Dimensions hors tout de la forme:" + "\n"
u"Direction Z")
self.LE_007_BB_04_Diagonal.setText(str(Around(boundBoxDiag * uniteM)) + " " + uniteMs)
self.LE_007_BB_04_Diagonal.setToolTip(u"Dimensions de la diagonale hors tout de la forme.")
self.PB_BoundBox_Tracing.setText(u"Tracing")
self.PB_BoundBox_Tracing.setToolTip(u"Trace le boundBox bord du shape.")
self.PB_00_BoundBox_Volume.setText(u"Volume")
self.PB_00_BoundBox_Volume.setToolTip(u"Crée BoundBox Volume du shape.")
self.CB_01_BoundBox_Text.setText(u"Text Dim.")
self.CB_01_BoundBox_Text.setToolTip(u"Affiche les Dimensions du BoundBox")
####
self.GBox_010_Center_Mass.setTitle(u"Centre de :")
self.LA_13x.setText(u"BoundBox X")
self.LA_13y.setText(u"BoundBox Y")
self.LA_13z.setText(u"BoundBox Z")
self.LE_13x.setText(str(Around(boundBoxCenterX * uniteM)) + " " + uniteMs)
self.LE_13x.setToolTip(u"Coordonnée X du centre de la forme.")
self.LE_13y.setText(str(Around(boundBoxCenterY * uniteM)) + " " + uniteMs)
self.LE_13y.setToolTip(u"Coordonnée Y du centre de la forme.")
self.LE_13z.setText(str(Around(boundBoxCenterZ * uniteM)) + " " + uniteMs)
self.LE_13z.setToolTip(u"Coordonnée Z du centre de la forme.")
#self.PB_Axis_02.setText(u"Axis")
self.PB_Axis_02.setToolTip(pointPlanAxesTexte)
self.LA_14x.setText(u"Masse X")
self.LA_14y.setText(u"Masse Y")
self.LA_14z.setText(u"Masse Z")
self.LE_14x.setText(str(Around(CenterOfMassX * uniteM)) + " " + uniteMs)
self.LE_14x.setToolTip(u"Coordonnée X du centre de la masse")
self.LE_14y.setText(str(Around(CenterOfMassY * uniteM)) + " " + uniteMs)
self.LE_14y.setToolTip(u"Coordonnée Y du centre de la masse")
self.LE_14z.setText(str(Around(CenterOfMassZ * uniteM)) + " " + uniteMs)
self.LE_14z.setToolTip(u"Coordonnée Z du centre de la masse")
#self.PB_Axis_03.setText(u"Axis")
self.PB_Axis_03.setToolTip(pointPlanAxesTexte)
####
self.GBox_011_Inertia.setTitle(u"Inertia")
self.GBox_011_Inertia.setStyleSheet(u"QToolTip { color: #ffffff; font: bold 14px; background-color: #ff0000; border: 2px solid white; }")
self.GBox_011_Inertia.setToolTip(u"\n" + "## Verify this section by person knowing the inertia position" + "\n"
u"## ONLY IF THE OBJECT IS PRESENT IN ONE BODY" + "\n"
u"## and post your knowledges in the forum tread if it is not correct" + "\n"
u"## http://forum.freecadweb.org/viewtopic.php?f=10&t=3185" + "\n\n"
u"Le moment d'inertie, également connu sous le nom de masse angulaire ou" + "\n"
u"inertie de rotation, d'un corps rigide est un tenseur qui détermine" + "\n"
u"le couple nécessaire pour obtenir une accélération angulaire souhaitée autour d'un axe de rotation." + "\n"
u"Il dépend de la distribution de la masse du corps et de l'axe choisi," + "\n"
u"avec des moments plus importants nécessitant plus de couple pour changer la rotation du corps." + "\n"
u"see https://en.wikipedia.org/wiki/Moment_of_inertia" + "\n")
self.LA_16.setText(u"Moment of inertia")
self.LA_16x.setText(u"X")
self.LA_16y.setText(u"Y")
self.LA_16z.setText(u"Z")
self.LE_16_M.setText(uniteMs + "^5")
self.LE_16_1x.setText(str(Around(MatrixX1)))
self.LE_16_1y.setText(str(Around(MatrixY1)))
self.LE_16_1z.setText(str(Around(MatrixZ1)))
self.LE_16_01.setText(str(Around(Matrix_1)))
self.PB_Axis_04_16_1.setToolTip(pointPlanAxesTexte)
self.LE_16_2x.setText(str(Around(MatrixX2)))
self.LE_16_2y.setText(str(Around(MatrixY2)))
self.LE_16_2z.setText(str(Around(MatrixZ2)))
self.LE_16_02.setText(str(Around(Matrix_2)))
self.LE_16_3x.setText(str(Around(MatrixX3)))
self.LE_16_3y.setText(str(Around(MatrixY3)))
self.LE_16_3z.setText(str(Around(MatrixZ3)))
self.LE_16_03.setText(str(Around(Matrix_3)))
self.PB_Axis_05_16_2.setToolTip(pointPlanAxesTexte)
self.PB_Axis_06_16_3.setToolTip(pointPlanAxesTexte)
self.LE_16_4x.setText(str(Around(Matrix12)))
self.LE_16_4y.setText(str(Around(Matrix13)))
self.LE_16_4z.setText(str(Around(Matrix14)))
self.LE_16_04.setText(str(Around(Matrix15)))
self.PB_Axis_07_16_4.setToolTip(pointPlanAxesTexte)
##
self.LA_17.setText(u"Moment of inertia massique")
self.LA_17x.setText(u"X")
self.LA_17y.setText(u"Y")
self.LA_17z.setText(u"Z")
self.LA_determinant.setText(u"Déterminant")
self.LA_determinantDecimal.setText(u"Déterminant Dec.")
self.LE_17_M.setText(unitePs+uniteSs)
self.LE_17_1x.setText(str(Around(MatrixX1*seTDensiteValue)))
self.LE_17_1y.setText(str(Around(MatrixY1*seTDensiteValue*uniteP)))
self.LE_17_1z.setText(str(Around(MatrixZ1*seTDensiteValue)))
self.PB_Axis_08_17_1.setToolTip(pointPlanAxesTexte)
self.LE_17_2x.setText(str(Around(MatrixX2*seTDensiteValue)))
self.LE_17_2y.setText(str(Around(MatrixY2*seTDensiteValue)))
self.LE_17_2z.setText(str(Around(MatrixZ2*seTDensiteValue)))
self.PB_Axis_09_17_2.setToolTip(pointPlanAxesTexte)
self.LE_17_3x.setText(str(Around(MatrixX3*seTDensiteValue)))
self.LE_17_3y.setText(str(Around(MatrixY3*seTDensiteValue)))
self.LE_17_3z.setText(str(Around(MatrixZ3*seTDensiteValue)))
self.PB_Axis_10_17_3.setToolTip(pointPlanAxesTexte)
self.PB_Axis_11_17_4.setToolTip(pointPlanAxesTexte)
self.LE_18_determinant.setText(str(DeterminantM))
self.LE_18_determinant.setToolTip(u"Déterminant de la matrice." + "\n"
u"En algèbre linéaire, le déterminant est une valeur utile qui peut être calculée" + "\n"
u"à partir des éléments d'une matrice carrée." + "\n"
u"Le déterminant d'une matrice A est noté det(A), det A, ou " + chr(124) + "A"+ chr(124)+ "." + "\n"
u"Il peut être considéré comme le facteur d'échelle de la transformation décrite par la matrice." + "\n"
u"see https://en.wikipedia.org/wiki/Determinant")
self.LE_18_determinantDecim.setText(str(decimal.Decimal(DeterminantM)))
self.LE_18_determinantDecim.setToolTip(u"Déterminant format Décimal.")
if switch_Set_Placeholder_Text == True:
self.LE_1.setPlaceholderText(u"Nom du document")
self.LE_2.setPlaceholderText(u"Label")
self.LE_2a.setPlaceholderText(u"Nom interne")
self.LE_3.setPlaceholderText(u"Sub objet")
self.LE_3a.setPlaceholderText(u"Type")
self.LE_4.setPlaceholderText(u"TypeID")
self.LE_4x.setPlaceholderText(u"Souris X")
self.LE_4y.setPlaceholderText(u"Souris Y")
self.LE_4z.setPlaceholderText(u"Souris Z")
self.LE_N_Edges.setPlaceholderText(u"Nombre d'arrête(s)")
self.LE_N_Facets.setPlaceholderText(u"Nombre de Face(s)")
self.LE_N_Points.setPlaceholderText(u"Nombre de Points")
self.LE_CRed.setPlaceholderText(u"Rouge")
self.LE_CGreen.setPlaceholderText(u"Vert")
self.LE_CBlue.setPlaceholderText(u"Bleu")
self.LE_Transparent.setPlaceholderText(u"Transparent")
self.LE_ConversionUnsigned.setPlaceholderText(u"Codage de couleurs")
self.LE_5.setPlaceholderText(u"Longueur")
self.LE_5b.setPlaceholderText(u"Rayon")
self.LE_6.setPlaceholderText(u"Périmètre")
self.LE_8xy.setPlaceholderText(u"Degrés")
self.LE_8yz.setPlaceholderText(u"Degrés")
self.LE_8zx.setPlaceholderText(u"Degrés")
self.LE_8xya.setPlaceholderText(u"Angle XY")
self.LE_8yza.setPlaceholderText(u"Angle YZ")
self.LE_8zxa.setPlaceholderText(u"Angle ZX")
self.LE_9_Direction.setPlaceholderText(u"Direction")
self.LE_10_ValueAt.setPlaceholderText(u"Vecteur")
self.LE_10b_NormalAt.setPlaceholderText(u"NormalAt")
self.LE_9a.setPlaceholderText(u"Surface totale")
self.LE_10a.setPlaceholderText(u"Surface face")
self.LE_11a.setPlaceholderText(u"Volume")
self.LE_12a.setPlaceholderText(u"Poids")
self.LE_Cost.setPlaceholderText(u"Prix")
self.LE_Materiel.setPlaceholderText(u"Matériel")
self.LE_007_BB_01_XLength.setPlaceholderText(u"Longueur X")
self.LE_007_BB_02_YLength.setPlaceholderText(u"Longueur Y")
self.LE_007_BB_03_ZLength.setPlaceholderText(u"Longueur Z")
self.LE_007_BB_04_Diagonal.setPlaceholderText(u"Longueur diagonale")
self.LE_13x.setPlaceholderText(u"Coordonnée X")
self.LE_13y.setPlaceholderText(u"Coordonnée Y")
self.LE_13z.setPlaceholderText(u"Coordonnée Z")
self.LE_14x.setPlaceholderText(u"Coordonnée X")
self.LE_14y.setPlaceholderText(u"Coordonnée Y")
self.LE_14z.setPlaceholderText(u"Coordonnée Z")
self.LE_18_determinant.setPlaceholderText(u"Déterminant")
self.LE_18_determinantDecim.setPlaceholderText(u"Déterminant Décimal")
####
self.GBox_013_SpreadSheet_Creation.setTitle(u"SpreadSheet")
self.GBox_013_SpreadSheet_Creation.setToolTip(u"Options pour sauver ou lire les données d'un fichier pour tableur" + "\n"
u"avec différents séparateurs." + "\n"
u"Tabulation, Virgule, point virgule, Espace" + "\n"
u"La Tabulation est le séparateur par défaut du tableur de FreeCAD" + "\n"
u"Le nombre de ces sépateurs est calculé pour aider si on ne connaît pas le séparateur" + "\n\n"
u"La virgule est le séparateur des anciens tableurs de la macro FCInfo (01.16 et avant)" + "\n"
u"Maintenant avec la version 01.17 FCInfo et pour compatibilité avec le spreadSheet de FreeCAD" + "\n"
u"la TABULATION est le séparateur par défaut" + "\n\n"
u"Si vous désirez convertir les anciens fichiers de FCInfo :" + "\n"
u"ouvrez les fichiers dans FCInfo et sauvez les avec l'option Tabulation cochée")
self.PB_01_Read_SpreadSheet.setText(u"Lire")
self.PB_01_Read_SpreadSheet.setToolTip(u"Lire un fichier sur le disque.")
self.PB_02_Save_SreadSheet.setText(u"Sauve")
self.PB_02_Save_SreadSheet.setToolTip(u"Sauve un fichier sur le disque.")
self.RB_01_Tabulation.setText(u"Tabulation")
self.RB_02_Virgule.setText(u"Virgule")
self.RB_03_Point_Virgule.setText(u"Point Virgule")
self.RB_04_Espace.setText(u"Espace")
self.ComboB_SpreadSheet.setToolTip("Liste des Feuille de calcul disponible")
self.PB_SpreadSheet_Refresh.setText(u"Rafraîchir")
self.PB_SpreadSheet_Refresh.setToolTip(u"Rafraîchir et recherche de Feuille de calcul")
self.LE_SpreadSheet.setToolTip(u"Feuille de calcul actuelle (première affichée)" + "\n" +
u"S'il n'y a pas de feuille de calcul dans le document," + "\n" +
u"une feuille de calcul nommée FCSpreadSheet est créée" + "\n" +
u"ou le tableur affiché est mis à jour" + "\n" +
u"ou saisissez le nom de votre feuille de calcul")
self.PB_03_Create_SpreadSheet.setText(u"SpreadSheet")
self.PB_03_Create_SpreadSheet.setToolTip(u"Crée une feuille de calcul avec toutes les informations dans le document actuel.")
####
self.GBox_014_Main_Tools.setTitle(u"Commandes")
self.CB_01_Info.setText(u"Info")
self.CB_01_Info.setToolTip(u"Si activé , affiche les infos dans la vue rapport")
self.CB_01_Info.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Info))) # icone dans une variable
self.CB_02_Point.setText(u"Point")
self.CB_02_Point.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Point))) # icone dans une variable
self.CB_02_Point.setToolTip(u"<img src= />" + "\n" +
u"Si activé , crée un point")
self.CB_03_Axis.setText(u"Axes")
self.CB_03_Axis.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Axis))) # icone dans une variable
self.CB_03_Axis.setToolTip(u"<img src= />" + "\n" +
u"Si activé , crée 3 Axes dans les directions XYZ")
self.CB_04_Plane.setText(u"Plan")
self.CB_04_Plane.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Plane))) # icone dans une variable
self.CB_04_Plane.setToolTip(u"<img src= />" + "\n" +
u"Si activé , crée 3 Plans dans les directions XYZ")
####
self.RB_00_ClipBoard.setText(u"Clip-B0") #Board
self.RB_00_ClipBoard.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_ClipBoard_None))) # icone dans une variable
self.RB_00_ClipBoard.setToolTip(u"<img src= />" + "\n" +
u"ClipBoard inactif")
self.RB_01_ClipBoard.setText(u"Clip-B1")
self.RB_01_ClipBoard.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_ClipBoard_FC))) # icone dans une variable
self.RB_01_ClipBoard.setToolTip(u"<img src= />" + "\n"
u"Coordonnées mémorisées sous la forme" + "\n" +
u"Forme : FreeCAD.Vector(X.0, Y.0, Z.0)" + "\n" +
u"FreeCAD model")
self.RB_02_ClipBoard.setText(u"Clip-B2")
self.RB_02_ClipBoard.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_ClipBoard_Comma))) # icone dans une variable
self.RB_02_ClipBoard.setToolTip(u"<img src= />" + "\n" +
u"Coordonnées mémorisées sous la forme" + "\n" +
u"Forme : X, Y, Z" + "\n" +
u"avec virgule comme séparateur")
self.RB_03_ClipBoard.setText(u"Clip-B3")
self.RB_03_ClipBoard.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_ClipBoard_Raw))) # icone dans une variable
self.RB_03_ClipBoard.setToolTip(u"<img src= />" + "\n" +
u"Coordonnées mémorisées sous la forme" + "\n" +
u"Form : X Y Z" + "\n" +
u"tel quel ave un espace comme séparateur")
##
self.CB_05_Position.setText(u"Gauche/Droite")
self.CB_05_Position.setToolTip(u"Change la position de la fenêtre de la macro à gauche ou à droite")
##
self.SPBox_arrondi.setSuffix(u" (Décimales)")
self.SPBox_arrondi.setToolTip(u"Sélectionne le nombre de décimales derrière la virgule." + "\n"
u"Si la valeur est -1, l'arrondi est callé sur 1000" + "\n"
u"(infini)")
self.SP_012_01_Text.setSuffix(u" (Dim. texte)")
##
self.PB_05_Help_Forum.setText(u"Forum")
self.PB_05_Help_Forum.setToolTip(u"Ouvre votre explorateur dans la page du Forum de FCInfo ")
self.PB_06_Help_Wiki.setText(u"Wiki")
self.PB_06_Help_Wiki.setToolTip(u"Ouvre votre explorateur dans la page du Wiki FCInfo")
##
self.PB_01_Refrech.setText(u"Raf")
self.PB_01_Refrech.setToolTip(u"Met à jour la vue rapport.")
self.PB_04_Quit.setText(u"Quitte")
self.PB_04_Quit.setToolTip(u"Quitte FCInfo." + "\n"
u"Le matériel est aussi sauvé en quittant la macro par ce bouton" + "\n"
u"Tous les paramètres sont sauvé avec cette action")
self.SPBox_arrondi.setToolTip(u"Sélectionne le nombre de décimales derrière la virgule." + "\n"
u"Si la valeur est -1, l'arrondi est callé sur 1000" + "\n"
u"(infini)")
##
def on_SP_012_01_Text_valueChanged(self, value):
global ui
global seTTextHeigthValue
global FreeCAD_ParamGetSet
seTTextHeigthValue = value
FreeCAD_ParamGetSet.SetInt(u"seTTextHeigthValue", seTTextHeigthValue) # 11
self.fontGlobal_08.setPixelSize(seTTextHeigthValue) # pour compatibilite Windows Linux pour tous les textes
self.scrollArea.setFont(self.fontGlobal_08)
######GBox_001_Document
self.GBox_001_Document.setFont(self.fontGlobal_08)
self.LA_1.setFont(self.fontGlobal_08)
self.LE_1.setFont(self.fontGlobal_08)
self.LA_2.setFont(self.fontGlobal_08)
self.LE_2.setFont(self.fontGlobal_08)
self.LE_2a.setFont(self.fontGlobal_08)
self.LA_3.setFont(self.fontGlobal_08)
self.LA_4.setFont(self.fontGlobal_08)
self.LE_3.setFont(self.fontGlobal_08)
self.LE_3a.setFont(self.fontGlobal_08)
######GBox_002_Coordinate_Mouse
self.GBox_002_Coordinate_Mouse.setFont(self.fontGlobal_08)
self.LA_4x.setFont(self.fontGlobal_08)
self.LA_4y.setFont(self.fontGlobal_08)
self.LA_4z.setFont(self.fontGlobal_08)
self.LE_4x.setFont(self.fontGlobal_08)
self.LE_4y.setFont(self.fontGlobal_08)
self.LE_4z.setFont(self.fontGlobal_08)
self.PB_Axis_01.setFont(self.fontGlobal_08)
######GBox_003_Color
self.GBox_003_Color.setFont(self.fontGlobal_08)
self.LA_1_Red.setFont(self.fontGlobal_08)
self.LA_2_Green.setFont(self.fontGlobal_08)
self.LA_3_Blue.setFont(self.fontGlobal_08)
self.LA_4_Transparent.setFont(self.fontGlobal_08)
self.LE_CRed.setFont(self.fontGlobal_08)
self.LE_CGreen.setFont(self.fontGlobal_08)
self.LE_CBlue.setFont(self.fontGlobal_08)
self.LE_Transparent.setFont(self.fontGlobal_08)
self.LE_ConversionUnsigned.setFont(self.fontGlobal_08)
self.PB_ChangeColor.setFont(self.fontGlobal_08)
self.CBox_Color_FaceObject.setFont(self.fontGlobal_08)
self.PB_CreateFace.setFont(self.fontGlobal_08)
self.SBox_Transparence.setFont(self.fontGlobal_08)
######GBox_004_Object_Mesh
self.GBox_004_Object_Mesh.setFont(self.fontGlobal_08)
self.LA_N_Edges.setFont(self.fontGlobal_08)
self.LE_N_Edges.setFont(self.fontGlobal_08)
self.LA_N_Facets.setFont(self.fontGlobal_08)
self.LE_N_Facets.setFont(self.fontGlobal_08)
self.LA_N_Points.setFont(self.fontGlobal_08)
self.LE_N_Points.setFont(self.fontGlobal_08)
######GBox_005_Value_Unit
self.GBox_005_Value_Unit.setFont(self.fontGlobal_08)
#self.ComboB_Grandeur.setFont(self.fontGlobal_08)
self.LA_5.setFont(self.fontGlobal_08)
self.LA_5b.setFont(self.fontGlobal_08)
self.LE_5.setFont(self.fontGlobal_08)
self.LE_5b.setFont(self.fontGlobal_08)
self.SB_Arc_ToByArcs.setFont(self.fontGlobal_08)
self.PB_BSplineCreateNodes.setFont(self.fontGlobal_08)
self.LA_6.setFont(self.fontGlobal_08)
self.LE_6.setFont(self.fontGlobal_08)
######GBox_012_SpreadSheet
self.GBox_012_SpreadSheet.setFont(self.fontGlobal_08)
self.tableWidget.setFont(self.fontGlobal_08)
######GBox_006_Inclination
self.GBox_006_Inclination.setFont(self.fontGlobal_08)
self.LA_8a.setFont(self.fontGlobal_08)
self.PB_Ra.setFont(self.fontGlobal_08)
self.LA_8a_2.setFont(self.fontGlobal_08)
self.LE_8xy.setFont(self.fontGlobal_08)
self.LA_8xy.setFont(self.fontGlobal_08)
self.LE_8xya.setFont(self.fontGlobal_08)
self.LA_8yz.setFont(self.fontGlobal_08)
self.LE_8yz.setFont(self.fontGlobal_08)
self.LE_8yza.setFont(self.fontGlobal_08)
self.LA_8zx.setFont(self.fontGlobal_08)
self.LE_8zx.setFont(self.fontGlobal_08)
self.LE_8zxa.setFont(self.fontGlobal_08)
self.PB_Line_Direction.setFont(self.fontGlobal_08)
self.PB_Line_ValueAT.setFont(self.fontGlobal_08)
self.PB_Line_NormalAT.setFont(self.fontGlobal_08)
self.LE_9_Direction.setFont(self.fontGlobal_08)
self.LE_10_ValueAt.setFont(self.fontGlobal_08)
self.LE_10b_NormalAt.setFont(self.fontGlobal_08)
######GBox_007_Surface_and_Volume
self.GBox_007_Surface_and_Volume.setFont(self.fontGlobal_08)
self.LA_9.setFont(self.fontGlobal_08)
self.LE_9a.setFont(self.fontGlobal_08)
self.LA_10.setFont(self.fontGlobal_08)
self.LE_10a.setFont(self.fontGlobal_08)
self.LA_11.setFont(self.fontGlobal_08)
self.LE_11a.setFont(self.fontGlobal_08)
self.LA_Unit.setFont(self.fontGlobal_08)
self.comboBox_Unit.setFont(self.fontGlobal_08)
self.LA_Weight.setFont(self.fontGlobal_08)
self.LE_12a.setFont(self.fontGlobal_08)
self.LA_Density.setFont(self.fontGlobal_08)
self.DS_Density.setFont(self.fontGlobal_08)
self.LA_Cost.setFont(self.fontGlobal_08)
self.LA_Price.setFont(self.fontGlobal_08)
self.LE_Cost.setFont(self.fontGlobal_08)
self.DS_Price.setFont(self.fontGlobal_08)
self.PB_Del_Material.setFont(self.fontGlobal_08)
self.CBox_Materiel.setFont(self.fontGlobal_08)
self.LE_Materiel.setFont(self.fontGlobal_08)
######GBox_009_BoundBox
self.GBox_009_BoundBox.setFont(self.fontGlobal_08)
self.LA_007_01_Xlength.setFont(self.fontGlobal_08)
self.LA_007_02_Ylength.setFont(self.fontGlobal_08)
self.LA_007_03_Zlength.setFont(self.fontGlobal_08)
self.LA_007_04_Diagonallength.setFont(self.fontGlobal_08)
self.LE_007_BB_01_XLength.setFont(self.fontGlobal_08)
self.LE_007_BB_02_YLength.setFont(self.fontGlobal_08)
self.LE_007_BB_03_ZLength.setFont(self.fontGlobal_08)
self.LE_007_BB_04_Diagonal.setFont(self.fontGlobal_08)
self.PB_BoundBox_Tracing.setFont(self.fontGlobal_08)
self.PB_00_BoundBox_Volume.setFont(self.fontGlobal_08)
self.CB_01_BoundBox_Text.setFont(self.fontGlobal_08)
self.DS_BoundBoxTextHeigth.setFont(self.fontGlobal_08)
######GBox_010_Center_Mass
self.GBox_010_Center_Mass.setFont(self.fontGlobal_08)
self.PB_BoundBox_Tracing.setFont(self.fontGlobal_08)
self.LA_13x.setFont(self.fontGlobal_08)
self.LA_13y.setFont(self.fontGlobal_08)
self.LA_13z.setFont(self.fontGlobal_08)
self.LE_13x.setFont(self.fontGlobal_08)
self.LE_13y.setFont(self.fontGlobal_08)
self.LE_13z.setFont(self.fontGlobal_08)
self.PB_Axis_02.setFont(self.fontGlobal_08)
self.LA_14x.setFont(self.fontGlobal_08)
self.LA_14y.setFont(self.fontGlobal_08)
self.LA_14z.setFont(self.fontGlobal_08)
self.LE_14x.setFont(self.fontGlobal_08)
self.LE_14y.setFont(self.fontGlobal_08)
self.LE_14z.setFont(self.fontGlobal_08)
self.PB_Axis_03.setFont(self.fontGlobal_08)
######GBox_011_Inertia
self.GBox_011_Inertia.setFont(self.fontGlobal_08)
self.LA_16.setFont(self.fontGlobal_08)
self.LE_16_M.setFont(self.fontGlobal_08)
self.LA_16x.setFont(self.fontGlobal_08)
self.LA_16y.setFont(self.fontGlobal_08)
self.LA_16z.setFont(self.fontGlobal_08)
self.LE_16_1x.setFont(self.fontGlobal_08)
self.LE_16_1y.setFont(self.fontGlobal_08)
self.LE_16_1z.setFont(self.fontGlobal_08)
self.LE_16_01.setFont(self.fontGlobal_08)
self.PB_Axis_04_16_1.setFont(self.fontGlobal_08)
self.LE_16_2x.setFont(self.fontGlobal_08)
self.LE_16_2y.setFont(self.fontGlobal_08)
self.LE_16_2z.setFont(self.fontGlobal_08)
self.LE_16_02.setFont(self.fontGlobal_08)
self.PB_Axis_05_16_2.setFont(self.fontGlobal_08)
self.LE_16_3x.setFont(self.fontGlobal_08)
self.LE_16_3y.setFont(self.fontGlobal_08)
self.LE_16_3z.setFont(self.fontGlobal_08)
self.LE_16_03.setFont(self.fontGlobal_08)
self.PB_Axis_06_16_3.setFont(self.fontGlobal_08)
self.LE_16_4x.setFont(self.fontGlobal_08)
self.LE_16_4y.setFont(self.fontGlobal_08)
self.LE_16_4z.setFont(self.fontGlobal_08)
self.LE_16_04.setFont(self.fontGlobal_08)
self.PB_Axis_07_16_4.setFont(self.fontGlobal_08)
self.LA_17.setFont(self.fontGlobal_08)
self.LE_17_M.setFont(self.fontGlobal_08)
self.LA_17x.setFont(self.fontGlobal_08)
self.LA_17y.setFont(self.fontGlobal_08)
self.LA_17z.setFont(self.fontGlobal_08)
self.LE_17_1x.setFont(self.fontGlobal_08)
self.LE_17_1y.setFont(self.fontGlobal_08)
self.LE_17_1z.setFont(self.fontGlobal_08)
self.PB_Axis_08_17_1.setFont(self.fontGlobal_08)
self.LE_17_2x.setFont(self.fontGlobal_08)
self.LE_17_2y.setFont(self.fontGlobal_08)
self.LE_17_2z.setFont(self.fontGlobal_08)
self.PB_Axis_09_17_2.setFont(self.fontGlobal_08)
self.LE_17_3x.setFont(self.fontGlobal_08)
self.LE_17_3y.setFont(self.fontGlobal_08)
self.LE_17_3z.setFont(self.fontGlobal_08)
self.PB_Axis_10_17_3.setFont(self.fontGlobal_08)
self.PB_Axis_11_17_4.setFont(self.fontGlobal_08)
self.LA_determinant.setFont(self.fontGlobal_08)
self.LA_determinantDecimal.setFont(self.fontGlobal_08)
self.LE_18_determinant.setFont(self.fontGlobal_08)
self.LE_18_determinantDecim.setFont(self.fontGlobal_08)
######GBox_013_SpreadSheet_Creation
self.GBox_013_SpreadSheet_Creation.setFont(self.fontGlobal_08)
self.PB_01_Read_SpreadSheet.setFont(self.fontGlobal_08)
self.PB_02_Save_SreadSheet.setFont(self.fontGlobal_08)
self.PB_03_Create_SpreadSheet.setFont(self.fontGlobal_08)
self.RB_01_Tabulation.setFont(self.fontGlobal_08)
self.RB_02_Virgule.setFont(self.fontGlobal_08)
self.RB_03_Point_Virgule.setFont(self.fontGlobal_08)
self.RB_04_Espace.setFont(self.fontGlobal_08)
######GBox_014_Main_Tools
self.GBox_014_Main_Tools.setFont(self.fontGlobal_08)
self.RB_01_ClipBoard.setFont(self.fontGlobal_08)
self.CB_02_Point.setFont(self.fontGlobal_08)
self.CB_03_Axis.setFont(self.fontGlobal_08)
self.CB_04_Plane.setFont(self.fontGlobal_08)
self.CB_01_Info.setFont(self.fontGlobal_08)
self.CB_05_Position.setFont(self.fontGlobal_08)
self.SPBox_arrondi.setFont(self.fontGlobal_08)
self.SPBox_arrondi.setFont(self.fontGlobal_08)
self.SP_012_01_Text.setFont(self.fontGlobal_08)
self.PB_05_Help_Forum.setFont(self.fontGlobal_08)
self.PB_06_Help_Wiki.setFont(self.fontGlobal_08)
self.PB_01_Refrech.setFont(self.fontGlobal_08)
self.PB_04_Quit.setFont(self.fontGlobal_08)
def on_SPBox_arrondi_valueChanged(self, value):
global ui
global seTDecimalValue
global FreeCAD_ParamGetSet
seTDecimalValue = value
FreeCAD_ParamGetSet.SetInt(u"seTDecimalValue", seTDecimalValue) # *4
ui.on_PB_01_Refrech_clicked()
def on_PB_Line_Direction(self):
global object_Label
global directionObj
global direcValueAt
global direcNormalAt
global switchInertia
global RotationToEuler
global switchCreateLineDiVatNatOnClick
global position0
global position1
global position2
if (directionObj != "[]"):
switchInertia = 1
try:
FreeCAD.ActiveDocument.openTransaction(u"FCInfo Direction") # memorise les actions (avec annuler restore)
if switchCreateLineDiVatNatOnClick == 0:
points=[FreeCAD.Vector(0.0,0.0,0.0),FreeCAD.Vector(directionObj)]
else:
points=[FreeCAD.Vector(position0,position1,position2),FreeCAD.Vector(directionObj[0]+position0,directionObj[1]+position1,directionObj[2]+position2)]
line0 = Draft.makeWire(points,closed=False,face=False,support=None)
App.ActiveDocument.ActiveObject.recompute()
line0.Label = u"Direction_(Yellow)_" + object_Label
line0.ViewObject.LineColor = (1.0,1.0,0.0)
line0.Length = 100.0
if RotationToEuler != "":
line0.Placement.Rotation = FreeCAD.Rotation(RotationToEuler[0] ,RotationToEuler[1], RotationToEuler[2])
RotationToEuler = ""
App.ActiveDocument.recompute()
except Exception:
None
switchInertia = 0
def on_PB_Line_ValueAT(self):
global object_Label
global direcValueAt
global switchInertia
global RotationToEuler
global switchCreateLineDiVatNatOnClick
global position0
global position1
global position2
if (direcValueAt != "[]"):
switchInertia = 1
try:
FreeCAD.ActiveDocument.openTransaction(u"FCInfo ValueAt") # memorise les actions (avec annuler restore)
if switchCreateLineDiVatNatOnClick == 0:
points=[FreeCAD.Vector(0.0,0.0,0.0),FreeCAD.Vector(direcValueAt)]
else:
points=[FreeCAD.Vector(position0,position1,position2),FreeCAD.Vector(direcValueAt[0]+position0,direcValueAt[1]+position1,direcValueAt[2]+position2)]
line0 = Draft.makeWire(points,closed=False,face=False,support=None)
App.ActiveDocument.ActiveObject.recompute()
line0.Label = u"ValueAt_(Magenta)_" + object_Label
line0.ViewObject.LineColor = (1.0,0.0,1.0)
line0.Length = 100.0
if RotationToEuler != "":
line0.Placement.Rotation = FreeCAD.Rotation(RotationToEuler[0] ,RotationToEuler[1], RotationToEuler[2])
RotationToEuler = ""
App.activeDocument().recompute()
except Exception:
None
switchInertia = 0
def on_PB_Line_NormalAT(self):
global object_Label
global direcNormalAt
global switchInertia
global RotationToEuler
global switchCreateLineDiVatNatOnClick
global position0
global position1
global position2
if (direcNormalAt != "[]"):
switchInertia = 1
try:
FreeCAD.ActiveDocument.openTransaction(u"FCInfo NormalAt") # memorise les actions (avec annuler restore)
if switchCreateLineDiVatNatOnClick == 0:
points=[FreeCAD.Vector(0.0,0.0,0.0),FreeCAD.Vector(direcNormalAt)]
else:
points=[FreeCAD.Vector(position0,position1,position2),FreeCAD.Vector(direcNormalAt[0]+position0,direcNormalAt[1]+position1,direcNormalAt[2]+position2)]
line0 = Draft.makeWire(points,closed=False,face=False,support=None)
App.ActiveDocument.ActiveObject.recompute()
line0.Label = u"NormalAt_(Cyan)_" + object_Label
line0.ViewObject.LineColor = (0.0,1.0,1.0)
line0.Length = 100.0
if RotationToEuler != "":
line0.Placement.Rotation = FreeCAD.Rotation(RotationToEuler[0] ,RotationToEuler[1], RotationToEuler[2])
RotationToEuler = ""
App.ActiveDocument.recompute()
except Exception:
None
switchInertia = 0
def paletteBase(self):
qpBase = "QLineEdit {background-color: QPalette.Base}"
qpIcon = QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05)) # icone dans une variable
self.LE_4x.setStyleSheet(qpBase)
self.LE_4y.setStyleSheet(qpBase)
self.LE_4z.setStyleSheet(qpBase)
self.PB_Axis_01.setIcon(qpIcon) # icon dans une variable
self.LE_13x.setStyleSheet(qpBase)
self.LE_13y.setStyleSheet(qpBase)
self.LE_13z.setStyleSheet(qpBase)
self.PB_Axis_02.setIcon(qpIcon) # icon dans une variable
self.LE_14x.setStyleSheet(qpBase)
self.LE_14y.setStyleSheet(qpBase)
self.LE_14z.setStyleSheet(qpBase)
self.PB_Axis_03.setIcon(qpIcon) # icon dans une variable
self.LE_16_1x.setStyleSheet(qpBase)
self.LE_16_1y.setStyleSheet(qpBase)
self.LE_16_1z.setStyleSheet(qpBase)
self.PB_Axis_04_16_1.setIcon(qpIcon) # icone dans une variable
self.LE_16_2x.setStyleSheet(qpBase)
self.LE_16_2y.setStyleSheet(qpBase)
self.LE_16_2z.setStyleSheet(qpBase)
self.PB_Axis_05_16_2.setIcon(qpIcon) # icone dans une variable
self.LE_16_3x.setStyleSheet(qpBase)
self.LE_16_3y.setStyleSheet(qpBase)
self.LE_16_3z.setStyleSheet(qpBase)
self.PB_Axis_06_16_3.setIcon(qpIcon) # icone dans une variable
self.PB_Axis_07_16_4.setIcon(qpIcon) # icone dans une variable
self.LE_17_1x.setStyleSheet(qpBase)
self.LE_17_1y.setStyleSheet(qpBase)
self.LE_17_1z.setStyleSheet(qpBase)
self.PB_Axis_08_17_1.setIcon(qpIcon) # icone dans une variable
self.LE_17_2x.setStyleSheet(qpBase)
self.LE_17_2y.setStyleSheet(qpBase)
self.LE_17_2z.setStyleSheet(qpBase)
self.PB_Axis_09_17_2.setIcon(qpIcon) # icone dans une variable
self.LE_17_3x.setStyleSheet(qpBase)
self.LE_17_3y.setStyleSheet(qpBase)
self.LE_17_3z.setStyleSheet(qpBase)
self.PB_Axis_10_17_3.setIcon(qpIcon) # icone dans une variable
self.PB_Axis_11_17_4.setIcon(qpIcon) # icone dans une variable
self.PB_05_Help_Forum.setStyleSheet(qpBase)
self.PB_06_Help_Wiki.setStyleSheet(qpBase)
def on_GBox_012_SpreadSheet(self):
global ui
if self.GBox_012_SpreadSheet.isChecked():
self.GBox_012_SpreadSheet.setStyleSheet(u"QGroupBox {color : QPalette.Base;}") # origin system
ui.on_PB_01_Refrech_clicked()
else:
self.GBox_012_SpreadSheet.setStyleSheet(u"QGroupBox {color : #ff0000;}")
self.GBox_012_SpreadSheet.setTitle(u"Détails de la forme")
self.GBox_012_SpreadSheet.setToolTip(u"Module désactivé par défaut pour améliorer les performences de la macro")
self.tableWidget.clear()
def on_PB_Axis_Mouse(self):
global position0
global position1
global position2
global ui
ui.paletteBase()
self.LE_4x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red
self.LE_4y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}")
self.LE_4z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}")
self.PB_Axis_01.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(position0, position1, position2, "Mouse"))))
def on_PB_ChangeColor(self):
global seTPositionFlyRightLeft
global transparenceFace
global ui
if len(FreeCADGui.Selection.getSelection()) != 0:
if seTPositionFlyRightLeft == 1: self.window.hide() # 1=MainWindow separate
couleur = PySide2.QtWidgets.QColorDialog.getColor()
if couleur.isValid():
FreeCAD.ActiveDocument.openTransaction(u"FCInfo Color") # memorise les actions (avec annuler restore)
r = int(str(couleur.name()[1:3]),16)
v = int(str(couleur.name()[3:5]),16)
b = int(str(couleur.name()[5:7]),16)
t = transparenceFace # transparence de 0 a 100
a = FreeCADGui.Selection.getSelectionEx() # selection sous objet
aa = FreeCADGui.Selection.getSelection() # selection objet
try:
if str(Gui.Selection.getSelectionEx()[0].SubObjects[0])[1:5] == "Face":
if self.CBox_Color_FaceObject.isChecked(): # checked = face if not = object
try:
cols = colors = []
cols = FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.DiffuseColor
if len(cols) == 1:
for i in aa[0].Shape.Faces:
colors += [(cols[0])]
else:
colors = cols
for i in range(len(aa)):
fce = int(a[0].SubElementNames[i][4:])-1
colors[fce] = (float(r)/255.0, float(v)/255.0, float(b)/255.0, float(t)/100.0)
aa[i].ViewObject.DiffuseColor = colors
except Exception:
None
else:
try:
aa = FreeCADGui.Selection.getSelection() # selection objet
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.ShapeColor = (float(r)/255.0, float(v)/255.0, float(b)/255.0)
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.Transparency = transparenceFace
except Exception:
None
elif str(Gui.Selection.getSelectionEx()[0].SubObjects[0])[1:5] == "Edge":
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.LineColor = (float(r)/255.0, float(v)/255.0, float(b)/255.0)
elif str(Gui.Selection.getSelectionEx()[0].SubObjects[0])[1:7] == "Vertex":
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.PointColor = (float(r)/255.0, float(v)/255.0, float(b)/255.0)
except Exception:
aa = FreeCADGui.Selection.getSelection() # selection objet
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.ShapeColor = (float(r)/255.0, float(v)/255.0, float(b)/255.0)
try:
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.LineColor = (float(r)/255.0, float(v)/255.0, float(b)/255.0)
except Exception: None
try:
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.PointColor = (float(r)/255.0, float(v)/255.0, float(b)/255.0)
except Exception: None
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.Transparency = transparenceFace
####
transparenceFace = FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.Transparency
# unsignedEncodeColor decimal pour FC
unsignedEncodeColor = '"' + str(unsignedEncode((r), (v), (b), 0.0)) + '"'
diffuseColorHexa = '"' + "#" + decimalTohexa(int(r/255.0)) + decimalTohexa(int(v/255.0)) + decimalTohexa(int(b/255.0)) + '"'
diffuseColorHexaPy = '"' + "0x" + decimalTohexa(int(r/255.0)) + decimalTohexa(int(v/255.0)) + decimalTohexa(int(b/255.0)) + '"'
diffuseColorRVB = '"' + str(int(r/255.0)) + "," + str(int(v/255.0)) + "," + str(int(b/255.0)) + '"'
#
ui.on_PB_01_Refrech_clicked()
####
if seTPositionFlyRightLeft == 1: self.window.show() # 1=MainWindow separate
def SIGNAL_CBox_Color_FaceObject(self):
if self.CBox_Color_FaceObject.isChecked(): # checked = face if not = object
self.PB_ChangeColor.setText(u"Coul.S.Obj")
self.PB_CreateFace.setText(u"Dupl.S.Obj")
self.CBox_Color_FaceObject.setText(u"Object")
else:
self.PB_ChangeColor.setText(u"Coul.Objet")
self.PB_CreateFace.setText(u"Dupl.Objet")
self.CBox_Color_FaceObject.setText(u"Sub.Objet")
def on_PB_CreateFace(self):
global sel
global indexFaceMesh
global coordPointsMesh
global detected
global cols
global colorShapeFace
global colorShapeLine
global colorShapePoint
global setMeshTopologyValue
if self.CBox_Color_FaceObject.isChecked(): # repro face / subOject
FreeCAD.ActiveDocument.openTransaction(u"FCInfo Copy Element") # memorise les actions (avec annuler restore)
if detected[0:4] == "Mesh":
labelObject = sel[0].Label
points = [FreeCAD.Vector(coordPointsMesh[0][0], coordPointsMesh[0][1], coordPointsMesh[0][2]),
FreeCAD.Vector(coordPointsMesh[1][0], coordPointsMesh[1][1], coordPointsMesh[1][2]),
FreeCAD.Vector(coordPointsMesh[2][0], coordPointsMesh[2][1], coordPointsMesh[2][2])]
dummy = cols # save cols before changing []
lineTriangle = Draft.makeWire(points, closed=True, face=True, support=None)
cols = dummy # restitue the cols deleted
actifObjet = App.ActiveDocument.ActiveObject
FreeCAD.ActiveDocument.getObject(lineTriangle.Name).Label = "Face_" + str(indexFaceMesh) + "_" + labelObject
Gui.Selection.clearSelection(sel[0].Name)
elif detected == "<PointKernel object>":
Gui.runCommand(u'Std_Copy',0)
Gui.runCommand(u'Std_Paste',0)
actifObjet = App.ActiveDocument.ActiveObject
else:
try:
try:
placementOrigine = sel[0].getGlobalPlacement()
except Exception:
placementOrigine = sel[0].Placement()
Part.show(FreeCADGui.Selection.getSelectionEx()[0].SubObjects[0].copy()) # create repro shape subObject
actifObjet = App.ActiveDocument.ActiveObject
actifObjet.Placement = placementOrigine
except Exception:
None
else: # repro object
FreeCAD.ActiveDocument.openTransaction(u"FCInfo Copy Object") # memorise les actions (avec annuler restore)
if detected[0:4] == u"Mesh":
### Begin command Part_ShapeFromMesh
_Shape = App.ActiveDocument.addObject('Part::Feature', str(sel[0].Name) + "_Shape")
__shape__ = Part.Shape()
__shape__.makeShapeFromMesh(App.ActiveDocument.getObject(sel[0].Name).Mesh.Topology, setMeshTopologyValue, False) # 0.10000
App.ActiveDocument.ActiveObject.Shape = __shape__
App.ActiveDocument.ActiveObject.purgeTouched()
### End command Part_ShapeFromMesh
### Begin command Part_MakeSolid
__s__=App.ActiveDocument.getObject(_Shape.Name).Shape.Faces
__s__=Part.Solid(Part.Shell(__s__))
__o__=App.ActiveDocument.addObject("Part::Feature",str(sel[0].Name + "_solid"))
__o__.Label=sel[0].Name + u"_(Solid)"
__o__.Shape=__s__
App.ActiveDocument.removeObject(_Shape.Name)
### End command Part_MakeSolid
actifObjet = App.ActiveDocument.ActiveObject
App.ActiveDocument.getObject(sel[0].Name).Visibility = False
elif detected == "<PointKernel object>":
Gui.runCommand('Std_Copy',0)
Gui.runCommand('Std_Paste',0)
actifObjet = App.ActiveDocument.ActiveObject
actifObjet.Label = App.ActiveDocument.getObject(sel[0].Name).Label + "_Points"
App.ActiveDocument.getObject(sel[0].Name).Visibility = False
else:
try:
placementOrigine = sel[0].getGlobalPlacement()
except Exception:
placementOrigine = sel[0].Placement()
try:
Part.show(sel[0].Shape)
except Exception:
None
actifObjet = App.ActiveDocument.ActiveObject
actifObjet.Placement = placementOrigine
try:
actifObjet.ViewObject.ShapeColor = colorShapeFace
except Exception:
None
try:
actifObjet.ViewObject.LineColor = colorShapeLine
except Exception:
None
try:
actifObjet.ViewObject.PointColor = colorShapePoint
except Exception:
None
try:
transPar = math.ceil(round(cols[indexFaceMesh][3]*100, 12)) # face
except Exception:
try:
transPar = math.ceil(round(cols[indexFaceMesh]*100, 12)) # edge
except Exception:
try:
transPar = math.ceil(round(cols[0]*100, 12)) # if indexFaceMesh-1 = -1
except Exception:
transPar = 0
try:
if self.CBox_Color_FaceObject.isChecked():
actifObjet.ViewObject.Transparency = transPar
if (self.SBox_Transparence.value()) != transPar:
actifObjet.ViewObject.Transparency = self.SBox_Transparence.value()
else:
try:
actifObjet.ViewObject.DiffuseColor = cols
except Exception: None
if (self.CBox_Color_FaceObject.isChecked()) or (len(cols) == 1):
actifObjet.ViewObject.Transparency = transPar
if (self.SBox_Transparence.value()) != transPar:
actifObjet.ViewObject.Transparency = self.SBox_Transparence.value()
except Exception:
None
App.activeDocument().recompute(None,True,True)
def on_SBox_Transparence_valueChanged(self, value):
global transparenceFace
transparenceFace = value
def on_PB_Axis_Center_Shape(self):
global boundBoxCenterX
global boundBoxCenterY
global boundBoxCenterZ
global ui
ui.paletteBase()
self.LE_13x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red
self.LE_13y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}")
self.LE_13z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}")
self.PB_Axis_02.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(boundBoxCenterX, boundBoxCenterY, boundBoxCenterZ, "BBCenter")))) # icone dans une variable
def on_PB_Axis_Center_Mass(self):
global CenterOfMassX
global CenterOfMassY
global CenterOfMassZ
global ui
ui.paletteBase()
self.LE_14x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red
self.LE_14y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}")
self.LE_14z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}")
self.PB_Axis_03.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(CenterOfMassX, CenterOfMassY, CenterOfMassZ, "CenterOfMass")))) # icone dans une variable
def on_PB_Axis_04_16_1(self):
global MatrixX1_16
global MatrixY1_16
global MatrixZ1_16
global ui
ui.paletteBase()
self.LE_16_1x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red
self.LE_16_1y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}")
self.LE_16_1z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}")
self.PB_Axis_04_16_1.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX1_16, MatrixY1_16, MatrixZ1_16, "Matrix1")))) # icone dans une variable
def on_PB_Axis_05_16_2(self):
global MatrixX2_16
global MatrixY2_16
global MatrixZ2_16
global ui
ui.paletteBase()
self.LE_16_2x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red
self.LE_16_2y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}")
self.LE_16_2z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}")
self.PB_Axis_05_16_2.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX2_16, MatrixY2_16, MatrixZ2_16, "Matrix2")))) # icone dans une variable
def on_PB_Axis_06_16_3(self):
global MatrixX3_16
global MatrixY3_16
global MatrixZ3_16
global ui
ui.paletteBase()
self.LE_16_3x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red
self.LE_16_3y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}")
self.LE_16_3z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}")
self.PB_Axis_06_16_3.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX3_16, MatrixY3_16, MatrixZ3_16, "Matrix3")))) # icone dans une variable
def on_PB_Axis_07_16_4(self):
global MatrixX1_16
global MatrixY2_16
global MatrixZ3_16
global ui
ui.paletteBase()
self.LE_16_1x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red
self.LE_16_2y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}")
self.LE_16_3z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}")
self.PB_Axis_07_16_4.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX1_16, MatrixY2_16, MatrixZ3_16, "Matrix123")))) # icone dans une variable
def on_PB_Axis_08_17_1(self):
global MatrixX1_17
global MatrixY1_17
global MatrixZ1_17
global ui
ui.paletteBase()
self.LE_17_1x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red
self.LE_17_1y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}")
self.LE_17_1z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}")
self.PB_Axis_08_17_1.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX1_17, MatrixY1_17, MatrixZ1_17, "MatrixW1")))) # icone dans une variable
def on_PB_Axis_09_17_2(self):
global MatrixX2_17
global MatrixY2_17
global MatrixZ2_17
global ui
ui.paletteBase()
self.LE_17_2x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red
self.LE_17_2y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}")
self.LE_17_2z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}")
self.PB_Axis_09_17_2.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX2_17, MatrixY2_17, MatrixZ2_17, "MatrixW2")))) # icone dans une variable
def on_PB_Axis_10_17_3(self):
global MatrixX3_17
global MatrixY3_17
global MatrixZ3_17
global ui
ui.paletteBase()
self.LE_17_3x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red
self.LE_17_3y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}")
self.LE_17_3z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}")
self.PB_Axis_10_17_3.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX3_17, MatrixY3_17, MatrixZ3_17, "MatrixW3")))) # icone dans une variable
def on_PB_Axis_11_17_4(self):
global MatrixX1_17
global MatrixY2_17
global MatrixZ3_17
global ui
ui.paletteBase()
self.LE_17_1x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red
self.LE_17_2y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}")
self.LE_17_3z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}")
self.PB_Axis_11_17_4.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX1_17, MatrixY2_17, MatrixZ3_17, "MatrixW123")))) # icone dans une variable
def on_PB_BoundBox_Tracing(self):
bounBoxTracing()
def On_PB_00_BoundBox_Volume(self):
global switchBoundBoxCreateVolume
switchBoundBoxCreateVolume = 1
bounBoxTracing()
def On_CB_01_BoundBox_Text(self):
global switchBoundBoxCreateText
global FreeCAD_ParamGetSet
if self.CB_01_BoundBox_Text.isChecked():
switchBoundBoxCreateText = 1
self.DS_BoundBoxTextHeigth.setEnabled(True)
FreeCAD_ParamGetSet.SetBool(u"switchBoundBoxCreateText", True) # True or False
else:
switchBoundBoxCreateText = 0
self.DS_BoundBoxTextHeigth.setEnabled(False)
FreeCAD_ParamGetSet.SetBool(u"switchBoundBoxCreateText", False) # True or False
def on_DS_BoundBoxTextHeigth_valueChanged(self, value):
global seTBoundBoxTextHeigth
global FreeCAD_ParamGetSet
seTBoundBoxTextHeigth = value
FreeCAD_ParamGetSet.SetFloat(u"seTBoundBoxTextHeigth", seTBoundBoxTextHeigth) # 3.0
def SIGNAL_comboPoids_Changed(self,text):
global volume_
global seTDensiteValue
global poids
global uniteM
global uniteS
global uniteSs
global uniteV
global uniteP
global unitePs
global MatrixX1_17
global MatrixY1_17
global MatrixZ1_17
global MatrixX2_17
global MatrixY2_17
global MatrixZ2_17
global MatrixX3_17
global MatrixY3_17
global MatrixZ3_17
global seTMaterialPrice
global seTMaterialCost
global seTMaterialSuffixCost
global seTIndexUnitWeight
global seTUnitSymbolMicro
if text == u"tonne": #t #0.00001 = 1000000
uniteP = 0.000001
unitePs= u"t"
elif text == u"quintal": #q #0.00001 = 100000
uniteP = 0.00001
unitePs= u"q"
elif text == u"kilo gram": #kg # 0.001 = 1000
uniteP = 0.001
unitePs= u"kg"
elif text == u"hecto gram": #hg # 0.01 = 100
uniteP = 0.01
unitePs= u"hg"
elif text == u"decagram": #dag # 0.1 = 10
uniteP = 0.1
unitePs= u"dag"
elif text == u"gram": #g # = 1 Base
uniteP = 1.00
unitePs= u"g"
elif text == u"decigram": #dg # = 0.1
uniteP = 10.0
unitePs= u"dg"
elif text == u"centigram": #cg # = 0.01
uniteP = 100.0
unitePs= u"cg"
elif text == u"milligram": #mg # = 0.001
uniteP = 1000.0
unitePs= u"mg"
elif text == u"microgram": #Ug # = 0.000001 # micro hex="\xB5", html=<span>&#181;</span>
uniteP = 1000000.0
unitePs= seTUnitSymbolMicro+"g"
elif text == u"nanogram": #ng # = 0.000000001
uniteP = 1000000000.0
unitePs= u"ng"
elif text == u"picogram": #pg # = 0.000000000001
uniteP = 1000000000000.0
unitePs= u"pg"
elif text == u"femtogram": #fg # = 0.000000000000001
uniteP = 1000000000000000.0
unitePs= u"fg"
elif text == u"grain": #gr # = 0.06479891
uniteP = 0.06479891
unitePs= u"gr"
elif text == u"drachm": #dr # = 1.7718451953125
uniteP = 0.56438339189006794681850148894339
unitePs= u"dr"
elif text == u"once": #oz # = 28.3495231250
uniteP = 0.035273961949580412915675808215204
unitePs= u"oz"
elif text == u"once troy": #oz t # = once troy = 31.1034768
uniteP = 0.032150746568627980522100346029483
unitePs= u"oz t"
elif text == u"livre troy": #lb t # = 373.2417216 livre de troy (pound)
uniteP = 0.0026792288807189983768416955024569
unitePs= u"lb t"
elif text == u"livre av": #lb # = 453.59237 livre avoirdupois (pound)
uniteP = 0.0022046226218487758072297380134503
unitePs= u"lb"
elif text == u"stone": #st # = 6350.29318 1 stone = 14 livres
uniteP = 0.00015747304441776970051640985810359
unitePs= u"st"
elif text == u"quarter": #qtr # = 12700.58636
uniteP = 0.000078736522208884850258204929051795
unitePs= u"qtr"
elif text == u"hundredweight":#cwt # = 50802.34544
uniteP = 0.000019684130552221212564551232262949
unitePs= u"cwt"
elif text == u"tonneau fr": # # tonneau fr = 0.00000102145045965
uniteP = 0.00000102145045965
unitePs= u"tonneau fr"
elif text == u"carat": #ct # = 0.2
uniteP = 5.0
unitePs= u"ct"
seTIndexUnitWeight = self.comboBox_Unit.currentIndex()
try:
poids = ((volume_ * seTDensiteValue) * uniteP) / 1000.0
self.LE_12a.setText(str(Around(poids))+ " " +unitePs)
self.LE_17_M.setText(unitePs+uniteSs)
seTMaterialCost = ((volume_ * seTDensiteValue * seTMaterialPrice) / 1000000.0)
self.LE_Cost.setText(str(Around(seTMaterialCost)) + seTMaterialSuffixCost) #CostMaterial
except Exception:
self.LE_12a.setText(u"")
self.LE_17_M.setText(u"")
self.LE_Cost.setText(u"-" + seTMaterialSuffixCost) #CostMaterial
try:
MatrixX1_17 = MatrixX1*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixY1_17 = MatrixY1*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixZ1_17 = MatrixZ1*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixX2_17 = MatrixX2*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixY2_17 = MatrixY2*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixZ2_17 = MatrixZ2*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixX3_17 = MatrixX3*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixY3_17 = MatrixY3*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixZ3_17 = MatrixZ3*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
except Exception:
MatrixX1_17 = MatrixY1_17 = MatrixZ1_17 = 0.0
MatrixX2_17 = MatrixY2_17 = MatrixZ2_17 = 0.0
MatrixX3_17 = MatrixY3_17 = MatrixZ3_17 = 0.0
self.LE_17_1x.setText(str(Around(MatrixX1_17)))
self.LE_17_1y.setText(str(Around(MatrixY1_17)))
self.LE_17_1z.setText(str(Around(MatrixZ1_17)))
self.LE_17_2x.setText(str(Around(MatrixX2_17)))
self.LE_17_2y.setText(str(Around(MatrixY2_17)))
self.LE_17_2z.setText(str(Around(MatrixZ2_17)))
self.LE_17_3x.setText(str(Around(MatrixX3_17)))
self.LE_17_3y.setText(str(Around(MatrixY3_17)))
self.LE_17_3z.setText(str(Around(MatrixZ3_17)))
def SIGNAL_comboBox_Changed(self,text):
global position0
global position1
global position2
global longueurObjet
global rayonObjet
global perimetre
global numberEdges
global surface
global surfaceFace
global volume_
global seTDensiteValue
global uniteM
global uniteMs
global uniteS
global uniteSs
global uniteV
global uniteVs
global uniteP
global unitePs
global boundBoxCenterX
global boundBoxCenterY
global boundBoxCenterZ
global CenterOfMassX
global CenterOfMassY
global CenterOfMassZ
global boundBoxLX
global boundBoxLY
global boundBoxLZ
global boundBoxDiag
global boundBox_S
global MatrixX1
global MatrixY1
global MatrixZ1
global Matrix_1
global MatrixX2
global MatrixY2
global MatrixZ2
global Matrix_2
global MatrixX3
global MatrixY3
global MatrixZ3
global Matrix_3
global Matrix12
global Matrix13
global Matrix14
global Matrix15
global Vertx
global Edges
global EdgesLong
global Faces
global FacesSurf
global FacesCoor
global RowCount
global MatrixX1_16
global MatrixY1_16
global MatrixZ1_16
global MatrixX2_16
global MatrixY2_16
global MatrixZ2_16
global MatrixX3_16
global MatrixY3_16
global MatrixX1_17
global MatrixY1_17
global MatrixZ1_17
global MatrixX2_17
global MatrixY2_17
global MatrixZ2_17
global MatrixX3_17
global MatrixY3_17
global MatrixZ3_17
global seTIndexUnitLength
global seTUnitSymbolMicro
global seTUnitSymbolCube
global seTUnitSymbolCarre
global BsplineDetect
global BsplineNombreDeNoeuds
global BsplineRayonApproximatif
global BsplineNumberElement
global BsplineCutLength
global setBSplineToByArcValue
global BSplinetoByArcValeurS
if text == u"km": # = 1000000
uniteM = 0.000001
uniteMs= u"km"
uniteS = 0.000000000001
uniteSs= u"km"+seTUnitSymbolCarre
uniteV = 0.000000000000000001
uniteVs= u"km"+seTUnitSymbolCube
elif text == u"hm": # = 100000
uniteM = 0.00001
uniteMs= u"hm"
uniteS = 0.0000000001
uniteSs= u"hm"+seTUnitSymbolCarre
uniteV = 0.000000000000001
uniteVs= u"hm"+seTUnitSymbolCube
elif text == u"dam": # = 10000
uniteM = 0.0001
uniteMs= u"dam"
uniteS = 0.00000001
uniteSs= u"dam"+seTUnitSymbolCarre
uniteV = 0.000000000001
uniteVs= u"dam"+seTUnitSymbolCube
elif text == u"m": # = 1000
uniteM = 0.001
uniteMs= u"m"
uniteS = 0.000001
uniteSs= u"m"+seTUnitSymbolCarre
uniteV = 0.000000001
uniteVs= u"m"+seTUnitSymbolCube
elif text == u"dm": # = 100
uniteM = 0.01
uniteMs= u"dm"
uniteS = 0.0001
uniteSs= u"dm"+seTUnitSymbolCarre
uniteV = 0.000001
uniteVs= u"dm"+seTUnitSymbolCube
elif text == u"cm": # = 10
uniteM = 0.1
uniteMs= u"cm"
uniteS = 0.01
uniteSs= u"cm"+seTUnitSymbolCarre
uniteV = 0.001
uniteVs= u"cm"+seTUnitSymbolCube
elif text == u"mm": # = 1 ###############################
uniteM = 1.0
uniteMs= u"mm"
uniteS = 1.0
uniteSs= u"mm"+seTUnitSymbolCarre
uniteV = 1.0
uniteVs= u"mm"+seTUnitSymbolCube
elif text == seTUnitSymbolMicro+"m": # = 1000 #http://fr.wiktionary.org/wiki/%CE%BCm#conv
uniteM = 1000.0
uniteMs= seTUnitSymbolMicro+"m"
uniteS = 1000.0**2
uniteSs= seTUnitSymbolMicro+"m"+seTUnitSymbolCarre
uniteV = 1000.0**3
uniteVs= seTUnitSymbolMicro+"m"+seTUnitSymbolCube
elif text == u"nm": # = 1000000
uniteM = 1000000.0
uniteMs= u"nm"
uniteS = 1000000.0**2
uniteSs= u"nm"+seTUnitSymbolCarre
uniteV = 1000000.0**3
uniteVs= u"nm"+seTUnitSymbolCube
elif text == u"pm": # = 1000000000
uniteM = 1000000000.0
uniteMs= u"pm"
uniteS = 1000000000.0**2
uniteSs= u"pm"+seTUnitSymbolCarre
uniteV = 1000000000.0**3
uniteVs= u"pm"+seTUnitSymbolCube
elif text == u"fm": # = 1000000000000
uniteM = 1000000000000.0
uniteMs= u"fm"
uniteS = 1000000000000.0**2
uniteSs= u"fm"+seTUnitSymbolCarre
uniteV = 1000000000000.0**3
uniteVs= u"fm"+seTUnitSymbolCube
elif text == u"inch": # inch = 25.400
uniteM = 1.0/25.400
uniteMs= u"in"
uniteS = uniteM**2
uniteSs= u"in"+seTUnitSymbolCarre
uniteV = uniteM**3
uniteVs= u"in"+seTUnitSymbolCube
elif text == u"link": # link = 201.168
uniteM = 1.0/201.168
uniteMs= u"lk"
uniteS = uniteM**2
uniteSs= u"lk"+seTUnitSymbolCarre
uniteV = uniteM**3
uniteVs= u"lk"+seTUnitSymbolCube
elif text == u"foot": # foot = 304.800
uniteM = 1.0/304.800
uniteMs= u"ft"
uniteS = uniteM**2
uniteSs= u"ft"+seTUnitSymbolCarre
uniteV = uniteM**3
uniteVs= u"ft"+seTUnitSymbolCube
elif text == u"yard": # yard = 914.400
uniteM = 1.0/914.400
uniteMs= u"yd"
uniteS = uniteM**2
uniteSs= u"yd"+seTUnitSymbolCarre
uniteV = uniteM**3
uniteVs= u"yd"+seTUnitSymbolCube
elif text == u"perch": #rd # rod perche = 5029.200
uniteM = 1.0/5029.200
uniteMs= u"rd"
uniteS = uniteM**2
uniteSs= u"rd"+seTUnitSymbolCarre
uniteV = uniteM**3
uniteVs= u"rd"+seTUnitSymbolCube
elif text == u"chain": # chain = 20116.800
uniteM = 1.0/20116.800
uniteMs= u"ch"
uniteS = uniteM**2
uniteSs= u"ch"+seTUnitSymbolCarre
uniteV = uniteM**3
uniteVs= u"ch"+seTUnitSymbolCube
elif text == u"furlong": # furlong= 201168
uniteM = 1.0/201168
uniteMs= u"fur"
uniteS = uniteM**2
uniteSs= u"fur"+seTUnitSymbolCarre
uniteV = uniteM**3
uniteVs= u"fur"+seTUnitSymbolCube
elif text == u"mile": # mile = 1609344
uniteM = 1.0/1609344
uniteMs= u"mi"
uniteS = uniteM**2
uniteSs= u"mi"+seTUnitSymbolCarre
uniteV = uniteM**3
uniteVs= u"mi"+seTUnitSymbolCube
elif text == u"league": # league = 4828032
uniteM = 1.0/4828032
uniteMs= u"lea"
uniteS = uniteM**2
uniteSs= u"lea"+seTUnitSymbolCarre
uniteV = uniteM**3
uniteVs= u"lea"+seTUnitSymbolCube
elif text == u"nautique": # nautique = 1852000
uniteM = 1.0/1852000
uniteMs= u"nmi"
uniteS = uniteM**2
uniteSs= u"nmi"+seTUnitSymbolCarre
uniteV = uniteM**3
uniteVs= u"nmi"+seTUnitSymbolCube
seTIndexUnitLength = self.comboBox.currentIndex()
try:
self.LE_4x.setText(str(Around(position0 * uniteM)) + " " + uniteMs)
self.LE_4y.setText(str(Around(position1 * uniteM)) + " " + uniteMs)
self.LE_4z.setText(str(Around(position2 * uniteM)) + " " + uniteMs)
except Exception:
position0 = position1 = position2 = 0.0
self.LE_4x.setText(str(position0) + " " + uniteMs)
self.LE_4y.setText(str(position1) + " " + uniteMs)
self.LE_4z.setText(str(position2) + " " + uniteMs)
try:
self.LE_13x.setText(str(Around(boundBoxCenterX * uniteM)) + " " + uniteMs)
self.LE_13y.setText(str(Around(boundBoxCenterY * uniteM)) + " " + uniteMs)
self.LE_13z.setText(str(Around(boundBoxCenterZ * uniteM)) + " " + uniteMs)
except Exception:
boundBoxCenterX = boundBoxCenterY = boundBoxCenterZ = 0.0
self.LE_13x.setText(str(boundBoxCenterX) + " " + uniteMs)
self.LE_13y.setText(str(boundBoxCenterY) + " " + uniteMs)
self.LE_13z.setText(str(boundBoxCenterZ) + " " + uniteMs)
try:
self.LE_14x.setText(str(Around(CenterOfMassX * uniteM)) + " " + uniteMs)
self.LE_14y.setText(str(Around(CenterOfMassY * uniteM)) + " " + uniteMs)
self.LE_14z.setText(str(Around(CenterOfMassZ * uniteM)) + " " + uniteMs)
except Exception:
CenterOfMassX = CenterOfMassY = CenterOfMassZ = 0.0
self.LE_14x.setText(str(CenterOfMassX) + " " + uniteMs)
self.LE_14y.setText(str(CenterOfMassY) + " " + uniteMs)
self.LE_14z.setText(str(CenterOfMassZ) + " " + uniteMs)
try:
self.LE_007_BB_01_XLength.setText(str(Around(boundBoxLX * uniteM)) + " " + uniteMs)
self.LE_007_BB_02_YLength.setText(str(Around(boundBoxLY * uniteM)) + " " + uniteMs)
self.LE_007_BB_03_ZLength.setText(str(Around(boundBoxLZ * uniteM)) + " " + uniteMs)
self.LE_007_BB_04_Diagonal.setText(str(Around(boundBoxDiag * uniteM)) + " " + uniteMs)
except Exception:
boundBoxLX = boundBoxLY = boundBoxLZ = 0.0
self.LE_007_BB_01_XLength.setText(str(boundBoxLX) + " " + uniteMs)
self.LE_007_BB_02_YLength.setText(str(boundBoxLY) + " " + uniteMs)
self.LE_007_BB_03_ZLength.setText(str(boundBoxLZ) + " " + uniteMs)
self.LE_007_BB_04_Diagonal.setText(str(boundBoxDiag) + " " + uniteMs)
try:
self.LE_5.setText(str(Around(float(longueurObjet) * float(uniteM)))+ " " +uniteMs)
except Exception:
self.LE_5.setText(u"")
if (rayonObjet != 0.0) or (str(BsplineDetect) == "<BSplineCurve object>"):
self.LE_5b.setVisible(True)
self.LA_5b.setVisible(True)
if (str(BsplineDetect) == "<BSplineCurve object>"):
self.SB_Arc_ToByArcs.setVisible(True)
ui.on_SB_Arc_ToByArcs_valueChanged(1)
self.SB_Arc_ToByArcs.setToolTip(u"Bspline détecté " + "\n"
u"Nombre d'élements = " + str(BsplineNumberElement) + "\n" +
u"Calcul avec une distance entre points " + str(Around((BsplineCutLength) * uniteM)) + " " + uniteMs + "\n\n" +
u"toBiArcs(" + BSplinetoByArcValeurS + ")" + "\n"
u"Cette valeur peut être changée dans les préferences variable : setBSplineToByArcValue" + "\n")
self.PB_BSplineCreateNodes.setText(u"Points (" + str(len(BsplinePointsCoor)) + ")") # Node
self.PB_BSplineCreateNodes.setToolTip(u"Create on point on Poles (" + str(len(BsplinePointsCoor)) + ") of the BSpline" + "\n\n"
u"Command for Shape : Gui.Selection.getSelection()[0].Points" + "\n"
u"Command for SubObj : Gui.Selection.getSelectionEx()[0].SubObjects[0].Curve.getPoles()" + "\n\n"
u"Hidden Options : " + "\n\n"
u"The variables " + "\n\n"
u"switchBSplineCreateCircleConstructorAxis" + "\n"
u"switchBSplineCreateCircleConstructor" + "\n\n"
u"accessible in : User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__ + "\n"
u"allow to create the circles and the point axes construction of the BSpline" + "\n"
u"their number (precision) depends on the value toBiArcs(BSplinetoByArcValeurS)" + "\n"
u"actual toBiArcs(" + BSplinetoByArcValeurS + ")" + "\n")
self.PB_BSplineCreateNodes.setVisible(True)
self.LA_5b.setText(u"Rayon Appr.")
try:
BsplineRayonApproximatif = str(Around(BsplineArcsRadius[0] * float(uniteM))) + " " + uniteMs # calcul
except Exception:
BsplineRayonApproximatif = u""
self.LE_5b.setText(BsplineRayonApproximatif)
self.LE_5b.setToolTip(u"BSpline Rayon au point : " + self.SB_Arc_ToByArcs.text())
self.LA_6.setText(u"BSpline Noeuds")
self.LE_6.setText(str(BsplineNombreDeNoeuds))
self.LE_6.setToolTip(u"Nombre de noeuds du BSpline.")
else:
self.SB_Arc_ToByArcs.setVisible(False)
self.PB_BSplineCreateNodes.setVisible(False)
self.LA_5b.setText(u"Rayon")
#self.LE_5b.setText(str(Around(rayonObjet * float(uniteM))) + " " + uniteMs)
self.LE_5b.setText(str(Around(rayonObjet * float(uniteM))) + " " + uniteMs + (" (dia. " + str(Around(rayonObjet * float(uniteM) * 2.0)) + " " + uniteMs + ")"))
self.LE_5b.setToolTip(u"Rayon détecté.")
if numberEdges == 1:
self.LA_6.setText(u"Circonférence (" + str(numberEdges) + ")")
else:
self.LA_6.setText(u"Périmètre du shape (" + str(numberEdges) + ")")
self.LE_6.setText(str(Around(float(perimetre) * float(uniteM))) + " " +uniteMs)
else:
self.LA_6.setText(u"Périmètre du shape (" + str(numberEdges) + ")")
self.SB_Arc_ToByArcs.setVisible(False)
self.PB_BSplineCreateNodes.setVisible(False)
self.LE_5b.setVisible(False)
self.LA_5b.setVisible(False)
rayonObjet = 0.0
try:
self.LE_6.setText(str(Around(float(perimetre) * float(uniteM))) + " " +uniteMs)
except Exception:
perimetre = 0.0
self.LE_6.setText(str(Around(perimetre)))
self.LE_6.setToolTip(u"Périmètre total de la forme." + "\n"
u"Affiche la somme totale de toutes les arêtes de la forme")
try:
self.LE_9a.setText(str(Around(float(surface) * float(uniteS))) + " " + uniteSs)
except Exception:
self.LE_9a.setText(u"")
try:
self.LE_10a.setText(str(Around(float(surfaceFace) * float(uniteS))) + " " + uniteSs)
except Exception:
self.LE_10a.setText(u"")
try:
self.LE_11a.setText(str(Around(float(volume_) * float(uniteV))) + " " + uniteVs)
except Exception:
self.LE_11a.setText(u"")
try:
self.LE_16_M.setText(uniteMs+"^5")
MatrixX1_16 = MatrixX1*uniteM**5
MatrixY1_16 = MatrixY1*uniteM**5
MatrixZ1_16 = MatrixZ1*uniteM**5
MatrixX2_16 = MatrixX2*uniteM**5
MatrixY2_16 = MatrixY2*uniteM**5
MatrixZ2_16 = MatrixZ2*uniteM**5
MatrixX3_16 = MatrixX3*uniteM**5
MatrixY3_16 = MatrixY3*uniteM**5
MatrixZ3_16 = MatrixZ3*uniteM**5
except Exception:
MatrixX1_16 = MatrixY1_16 = MatrixZ1_16 = 0.0
MatrixX2_16 = MatrixY2_16 = MatrixZ2_16 = 0.0
MatrixX3_16 = MatrixY3_16 = MatrixZ3_16 = 0.0
self.LE_16_M.setText(u"")
self.LE_16_1x.setText(str(Around(MatrixX1_16)))
self.LE_16_1y.setText(str(Around(MatrixY1_16)))
self.LE_16_1z.setText(str(Around(MatrixZ1_16)))
self.LE_16_2x.setText(str(Around(MatrixX2_16)))
self.LE_16_2y.setText(str(Around(MatrixY2_16)))
self.LE_16_2z.setText(str(Around(MatrixZ2_16)))
self.LE_16_3x.setText(str(Around(MatrixX3_16)))
self.LE_16_3y.setText(str(Around(MatrixY3_16)))
self.LE_16_3z.setText(str(Around(MatrixZ3_16)))
try:
MatrixX1_17 = MatrixX1*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixY1_17 = MatrixY1*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixZ1_17 = MatrixZ1*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixX2_17 = MatrixX2*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixY2_17 = MatrixY2*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixZ2_17 = MatrixZ2*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixX3_17 = MatrixX3*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixY3_17 = MatrixY3*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixZ3_17 = MatrixZ3*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
except Exception:
MatrixX1_17 = MatrixY1_17 = MatrixZ1_17 = 0.0
MatrixX2_17 = MatrixY2_17 = MatrixZ2_17 = 0.0
MatrixX3_17 = MatrixY3_17 = MatrixZ3_17 = 0.0
self.LE_17_1x.setText(str(Around(MatrixX1_17)))
self.LE_17_1y.setText(str(Around(MatrixY1_17)))
self.LE_17_1z.setText(str(Around(MatrixZ1_17)))
self.LE_17_2x.setText(str(Around(MatrixX2_17)))
self.LE_17_2y.setText(str(Around(MatrixY2_17)))
self.LE_17_2z.setText(str(Around(MatrixZ2_17)))
self.LE_17_3x.setText(str(Around(MatrixX3_17)))
self.LE_17_3y.setText(str(Around(MatrixY3_17)))
self.LE_17_3z.setText(str(Around(MatrixZ3_17)))
try:
self.LE_17_M.setText(unitePs+uniteSs)
except Exception:
self.LE_17_M.setText(u"")
try:
self.LE_007_BB_01_XLength.setText(str(Around(boundBoxLX * uniteM)) + " " + uniteMs)
self.LE_007_BB_02_YLength.setText(str(Around(boundBoxLY * uniteM)) + " " + uniteMs)
self.LE_007_BB_03_ZLength.setText(str(Around(boundBoxLZ * uniteM)) + " " + uniteMs)
self.LE_007_BB_04_Diagonal.setText(str(Around(boundBoxDiag * uniteM)) + " " + uniteMs)
boundBox_S = (u"[X: " + str(Around(boundBoxLX * uniteM)) + " " + uniteMs +
u"] x [Y: " + str(Around(boundBoxLY * uniteM)) + " " + uniteMs +
u"] x [Z: " + str(Around(boundBoxLZ * uniteM)) + " " + uniteMs +
u"] Diagonale: " + str(Around(boundBoxDiag * uniteM)) + " " + uniteMs)
except Exception:
self.LE_007_BB_01_XLength.setText(u"")
self.LE_007_BB_02_YLength.setText(u"")
self.LE_007_BB_03_ZLength.setText(u"")
self.LE_007_BB_04_Diagonal.setText(u"")
boundBox_S = ""
if self.GBox_012_SpreadSheet.isChecked():
co = 0
li = 0
for li in range(RowCount): # Zero
for co in range(10):
newitem = QtWidgets.QTableWidgetItem(u"")
self.tableWidget.setItem( li,co, newitem)
co = 0
li = 0
aa = 0
for j in enumerate(Edges): # Edges
newitem = QtWidgets.QTableWidgetItem(str(j[1]))
self.tableWidget.setItem( li,0, newitem)
newitem = QtWidgets.QTableWidgetItem(str(float(EdgesLong[li]) * float(uniteM)) + " " + uniteMs)
self.tableWidget.setItem( li,1, newitem)
co+=1
try:
for a in range(aa,aa+6): # Vertexes
co += 1
#newitem = QtWidgets.QTableWidgetItem(str(Vertx[a]))
chaine = str(Vertx[a]).split(u":")
newitem = QtWidgets.QTableWidgetItem(chaine[0]+":" + str(float(chaine[1]) * float(uniteM)) + " " + uniteMs)
self.tableWidget.setItem( li,co, newitem)
except Exception:
None
aa += 6
co = 0
li+= 1
li += 1
co = 0
cco = 0
co2 = 0
for j in enumerate(Faces):
newitem = QtWidgets.QTableWidgetItem(str(j[1]))
self.tableWidget.setItem( li,0, newitem)
newitem = QtWidgets.QTableWidgetItem(str(float(FacesSurf[co]) * float(uniteS)) + " " + uniteSs)
self.tableWidget.setItem( li,1, newitem)
li+= 1
for jj in range(cco,len(FacesCoor)):# Faces coordinates
cco+=1
if FacesCoor[jj] == "T":
break
else:
#newitem = QtWidgets.QTableWidgetItem(FacesCoor[jj])
chaine = str(FacesCoor[jj]).split(":")
newitem = QtWidgets.QTableWidgetItem(chaine[0]+":" + str(float(chaine[1]) * float(uniteM)) + " " + uniteMs)
self.tableWidget.setItem( li,co2, newitem)
co2 += 1
if co2 == 3:
li += 1
co2 = 0
co += 1
li += 1
def on_SB_Arc_ToByArcs_valueChanged(self, val):
global uniteM
global uniteMs
global BsplineArcsRadius
global BsplineRayonApproximatif
global BsplineNumberElement
if (val >=1) and (val <= BsplineNumberElement):
self.SB_Arc_ToByArcs.setSuffix(u" / " + str(BsplineNumberElement))
self.SB_Arc_ToByArcs.setPrefix(u"arc ")
try:
BsplineRayonApproximatif = str(Around(BsplineArcsRadius[val - 1] * float(uniteM))) + " " + uniteMs
except Exception:
BsplineRayonApproximatif = str(Around(0 * float(uniteM))) + " " + uniteMs
self.LE_5b.setText(BsplineRayonApproximatif)
else:
self.SB_Arc_ToByArcs.setValue(0)
def on_PB_BSplineCreateNodes(self):
global subElemName
global BsplinePointsCoor
global switchInertia
global switchBSplineCreateCircleConstructorAxis
global switchBSplineCreateCircleConstructor
FreeCAD.ActiveDocument.openTransaction(u"FCInfo Points BS") # memorise les actions (avec annuler restore)
switchInertia = 1 # for create points without refresh
self.PB_BSplineCreateNodes.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Work))) # icone dans une variable
try: # create point on node
conteneurBSpline = App.activeDocument().addObject(u"App::DocumentObjectGroup", "BSpline_Points(" + str(len(BsplinePointsCoor)) + ")")
for i in BsplinePointsCoor:
point = Draft.makePoint( i[0], i[1], i[2])
conteneurBSpline.addObject(point)
point.ViewObject.PointColor = (1.0,0.0,0.0)
point.Label = u"FCPoint_BSPline_" + subElemName
FreeCADGui.updateGui() # updateGui
App.ActiveDocument.recompute()
except Exception:
None
FreeCAD.ActiveDocument.openTransaction(u"FCInfo Axis BS") # memorise les actions (avec annuler restore)
if (switchBSplineCreateCircleConstructorAxis == 1) and (len(BsplineArcsLocation) != 0):
try: # create point axis toByArcs()
conteneurBSplineP = App.activeDocument().addObject(u"App::DocumentObjectGroup", "BSpline_Center(" + str(len(BsplineArcsLocation)) + ")")
for i in BsplineArcsLocation:
point = Draft.makePoint(i.Location.x, i.Location.y, i.Location.z)
point.ViewObject.PointColor = (0.0,1.0,0.0)
point.Label = u"FCPoint_BSPline_toByArcs_" + subElemName
conteneurBSplineP.addObject(point)
App.ActiveDocument.recompute()
except Exception:
None
FreeCAD.ActiveDocument.openTransaction(u"FCInfo Circles BS") # memorise les actions (avec annuler restore)
if (switchBSplineCreateCircleConstructor == 1) and (len(BsplineArcsLocation) != 0):
try: # create circle toByArcs()
conteneurBSplineC = App.activeDocument().addObject(u"App::DocumentObjectGroup", "BSpline_Circles(" + str(len(BsplineArcsLocation)) + ")")
pl=FreeCAD.Placement()
for i in BsplineArcsLocation:
##
pl.Base = FreeCAD.Vector(i.Location.x, i.Location.y, i.Location.z)
pl.Rotation.Q = i.Circle.Rotation.Q
circle = Draft.makeCircle(radius = i.Radius, placement = pl, face = False, support = None)
circle.ViewObject.LineColor = (0.0,0.0,1.0)
circle.Label = u"FCCircle_BSPline_toByArcs" + subElemName
conteneurBSplineC.addObject(circle)
App.ActiveDocument.recompute()
except Exception:
None
self.PB_BSplineCreateNodes.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Point))) # icone dans une variable
switchInertia = 0
def SIGNAL_CBox_Materiel_Changed(self,text):
global seTDensiteValue
global seTMaterialCurrentIndex
global seTMaterialPrice
global materialAssociated
global FreeCAD_ParamGetSet
self.PB_Del_Material.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_DeleteLineMaterial))) # icone dans une variable
self.LE_Materiel.setStyleSheet(u"QLineEdit {background-color: QPalette.Base}") # origin system
if text != "":
self.LE_Materiel.setText(materialAssociated[self.CBox_Materiel.currentIndex()]) # affiche la chaine pour completion ou info
self.PB_Del_Material.setText(u"Delete (" + str(self.CBox_Materiel.currentIndex() + 1) + "/" + str(len(materialAssociated)) + ")")
chaineMat = text.rstrip().split(",")
seTDensiteValue = float(chaineMat[1])
FreeCAD_ParamGetSet.SetFloat(u"seTDensiteValue", seTDensiteValue) #*1.0
try:
seTMaterialPrice = float(chaineMat[2])
except Exception:
seTMaterialPrice = 0.0
#self.DS_Density.setProperty(u"value", seTDensiteValue)
self.DS_Density.setValue(seTDensiteValue)
self.DS_Price.setValue(seTMaterialPrice)
seTMaterialCurrentIndex = self.CBox_Materiel.currentIndex()
if self.CBox_Materiel.currentIndex() == -1:
self.PB_Del_Material.setText(u"Delete (0\0)")
self.PB_Del_Material.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Beer))) # icone dans une variable
FreeCAD_ParamGetSet.SetInt(u"seTMaterialCurrentIndex", seTMaterialCurrentIndex) #*0
def on_PB_Del_Material_clicked(self): # efface le materiel en cours
global materialAssociated
index = self.CBox_Materiel.currentIndex()
if self.CBox_Materiel.currentIndex() != -1:
try:
materialAssociated.remove(materialAssociated[index])
self.CBox_Materiel.clear()
for ligneMat in materialAssociated:
self.CBox_Materiel.addItem(_fromUtf8(ligneMat))
self.CBox_Materiel.setCurrentIndex(0)
self.LE_Materiel.setText(materialAssociated[0])
ui.PB_Save_Material.setText(u"Sauve (*)")
except Exception:
self.LE_Materiel.clear()
None
def on_PB_Save_Material_clicked(self): # sauve le materiel en cours
global materialAssociated
global seTMaterialSavePathName
global seTMaterialFileName
global FreeCAD_ParamGetSet
#### save the material begin ####
materialAssociated.sort()
App_Console_PrintMessage(u"Number material : " + str(len(materialAssociated)) + "\n")
try:
seTMaterialSavePathName = path #+ seTMaterialFileName # u"FCInfo_material.txt"
f = open(seTMaterialSavePathName + seTMaterialFileName, 'w') # write
for i in materialAssociated:
f.write(i + "\n")
f.close()
self.PB_Save_Material.setText(u"Sauver")
App_Console_PrintMessage(u"Create file : " + seTMaterialFileName + "\n")
FreeCAD_ParamGetSet.SetString(u"seTMaterialFileName", seTMaterialFileName) #*"FCInfo_material.txt"
FreeCAD_ParamGetSet.SetString(u"seTMaterialSavePathName", seTMaterialSavePathName) #*"C:\...\Macro\ #FCInfo_material.txt"
except Exception:
App_Console_PrintError(u"Not file " + seTMaterialFileName + " saved" + "\n")
#### save the material end ####
def on_LE_Materiel_Pressed(self): # LEdit Materiel , tableau des materiaux : [ materiel, poids, prix, info ]
global materialAssociated
global ui
newMateriel = self.LE_Materiel.text() # extract the string in the LE_Materiel
self.LE_Materiel.setStyleSheet(u"QLineEdit {background-color: QPalette.Base}") # origin system
if (len(newMateriel.split(",")) >= 2):
try:
if (newMateriel.split(",")[1].isdecimal()) or ((float(newMateriel.split(",")[1])!= 0.0)): # test si alphaNumerique
##nomMat = newMateriel.split(",")[0].capitalize() # Metal copper (cu),8.96,10.0
##nomMat = newMateriel.split(",")[0].title() # Metal Copper (Cu),8.96,10.0
##nomMat = newMateriel.split(",")[0].upper() # METAL COPPER (CU),8.96,10.0
nomMat = newMateriel.split(",")[0][0].upper() + newMateriel.split(",")[0][1:] # Metal Copper (Cu),8.96,10.0
try:
poidsMat = str(float(newMateriel.split(",")[1])) # teste si float
except Exception:
poidsMat = "0.0"
try:
coutMat = str(float(newMateriel.split(",")[2])) # teste si float (facultatif)
except Exception:
coutMat = "0.0"
try:
infoMat = newMateriel.split(",")[3] # info (facultatif)
except Exception:
infoMat = " !"
newMateriel = nomMat + "," + poidsMat + "," + coutMat + "," + infoMat
self.LE_Materiel.setStyleSheet(u"QLineEdit {color : QPalette.Base}") # origin system
index = self.CBox_Materiel.currentIndex()
if index == -1:
index = 0
try:
if nomMat.upper() == materialAssociated[index].split(",")[0].upper(): # remplace (efface)si c'est le meme nom
materialAssociated.remove(materialAssociated[index])
except Exception:
None
#materialAssociated.append(newMateriel.capitalize()) # ajout la nouvelle entree
materialAssociated.append(newMateriel) # ajout la nouvelle entree
materialAssociated.sort()
self.CBox_Materiel.clear()
comptIndex = 0
for ligneMat in materialAssociated:
self.CBox_Materiel.addItem(_fromUtf8(ligneMat))
#if ligneMat.rstrip().split(",")[0] == newMateriel.capitalize().split(",")[0]:
if ligneMat.rstrip().split(",")[0] == newMateriel.split(",")[0][0].upper() + newMateriel.split(",")[0][1:]:
index = comptIndex
comptIndex += 1
self.CBox_Materiel.setCurrentIndex(index)
self.LE_Materiel.clear()
ui.PB_Save_Material.setText(u"Sauver (*)")
else:
self.LE_Materiel.setStyleSheet(u"QLineEdit {background-color: #efef29}")
except Exception:
self.LE_Materiel.setStyleSheet(u"QLineEdit {background-color: #ef2929}")
else:
self.LE_Materiel.setStyleSheet(u"QLineEdit {background-color: #ef2929}")
def on_DS_Density_valueChanged(self,densiteSB): # SpinBox # DS_Density_1 poids
global ui
global volume_
global uniteP
global unitePs
global uniteV # uniteV not in Global ?, add it 05/12/21
global seTDensiteValue
global poids
global MatrixX1_17
global MatrixY1_17
global MatrixZ1_17
global MatrixX2_17
global MatrixY2_17
global MatrixZ2_17
global MatrixX3_17
global MatrixY3_17
global MatrixZ3_17
global seTMaterialPrice
global seTMaterialCost
global seTMaterialSuffixCost
global FreeCAD_ParamGetSet
seTDensiteValue = densiteSB
FreeCAD_ParamGetSet.SetFloat(u"seTDensiteValue", seTDensiteValue)
poids = ((volume_ * seTDensiteValue) * uniteP) / 1000.0 # base FreeCAD = mm
self.LE_12a.setText(str(Around(poids)) + " " + unitePs)
seTMaterialCost = ((volume_ * seTDensiteValue * seTMaterialPrice) / 1000000.0)
self.LE_Cost.setText(str(Around(seTMaterialCost)) + seTMaterialSuffixCost) #CostMaterial
try:
MatrixX1_17 = MatrixX1*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixY1_17 = MatrixY1*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixZ1_17 = MatrixZ1*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixX2_17 = MatrixX2*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixY2_17 = MatrixY2*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixZ2_17 = MatrixZ2*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixX3_17 = MatrixX3*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixY3_17 = MatrixY3*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixZ3_17 = MatrixZ3*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
except Exception:
MatrixX1_17 = MatrixY1_17 = MatrixZ1_17 = 0.0
MatrixX2_17 = MatrixY2_17 = MatrixZ2_17 = 0.0
MatrixX3_17 = MatrixY3_17 = MatrixZ3_17 = 0.0
self.LE_17_M.setText(u"")
self.LE_17_1x.setText(str(Around(MatrixX1_17)))
self.LE_17_1y.setText(str(Around(MatrixY1_17)))
self.LE_17_1z.setText(str(Around(MatrixZ1_17)))
self.LE_17_2x.setText(str(Around(MatrixX2_17)))
self.LE_17_2y.setText(str(Around(MatrixY2_17)))
self.LE_17_2z.setText(str(Around(MatrixZ2_17)))
self.LE_17_3x.setText(str(Around(MatrixX3_17)))
self.LE_17_3y.setText(str(Around(MatrixY3_17)))
self.LE_17_3z.setText(str(Around(MatrixZ3_17)))
def on_DS_Price_valueChanged(self, price): # DSpinBox
global volume_
global seTDensiteValue
global seTMaterialPrice
global seTMaterialCost
global seTMaterialSuffixCost
seTMaterialPrice = price
seTMaterialCost = ((volume_ * seTDensiteValue * seTMaterialPrice) / 1000000.0)
self.LE_Cost.setText(str(Around(seTMaterialCost)) + seTMaterialSuffixCost) #CostMaterial
FreeCAD_ParamGetSet.SetFloat(u"seTMaterialPrice", seTMaterialPrice) # *x
FreeCAD_ParamGetSet.SetFloat(u"seTMaterialCost", seTMaterialCost) # *x
def on_PB_01_Refrech_clicked(self): # refresh
global ui
global sel
global document_
global object_Label
global object_Name
global typeObject
global object_Type
global subElemName
global position0
global position1
global position2
global diffuseColorRF
global diffuseColorVF
global diffuseColorBF
global diffuseColorTF
global unsignedEncodeColor
global longueurObjet
global rayonObjet
global perimetre
global typeLongueur
global numberEdges
global nombreArretesMesh
global nombreFacesMesh
global nombrePointsMesh
global Plan_xy
global Plan_xy_V
global Plan_yz
global Plan_yz_V
global Plan_zx
global Plan_zx_V
global surface
global surfaceFace
global volume_
global seTDensiteValue
global poids
global uniteM
global uniteMs
global uniteS
global uniteSs
global uniteV
global uniteVs
global uniteP
global unitePs
global uniteAs
global boundBoxCenterX
global boundBoxCenterY
global boundBoxCenterZ
global CenterOfMassX
global CenterOfMassY
global CenterOfMassZ
global boundBoxLX
global boundBoxLY
global boundBoxLZ
global boundBox_S
global MatrixX1
global MatrixY1
global MatrixZ1
global Matrix_1
global MatrixX2
global MatrixY2
global MatrixZ2
global Matrix_2
global MatrixX3
global MatrixY3
global MatrixZ3
global Matrix_3
global Matrix12
global Matrix13
global Matrix14
global Matrix15
global Vertx
global Edges
global EdgesLong
global Faces
global FacesSurf
global FacesCoor
global compt_E
global compt_F
global compt_VF
global RowCount
global RowCountTest
global ESCAPE
global directionObj
global direcValueAt
global direcNormalAt
global typeNormalAt
global switchCreateLineDiVatNatOnClick
global MatrixX1_16
global MatrixY1_16
global MatrixZ1_16
global MatrixX2_16
global MatrixY2_16
global MatrixZ2_16
global MatrixX3_16
global MatrixY3_16
global MatrixZ3_16
global MatrixX1_17
global MatrixY1_17
global MatrixZ1_17
global MatrixX2_17
global MatrixY2_17
global MatrixZ2_17
global MatrixX3_17
global MatrixY3_17
global MatrixZ3_17
global DeterminantM
global seTMaterialPrice
global seTMaterialCost
global seTMaterialSuffixCost
global seTIndexUnitLength
global BsplineDetect
global BsplineNombreDeNoeuds
global BsplinePointsCoor
global BsplineRayonApproximatif
global BsplineNumberElement
global BsplineCutLength
global setBSplineToByArcValue
global BSplinetoByArcValeurS
global BsplineArcsRadius
global FreeCAD_ParamGetSet
sel = FreeCADGui.Selection.getSelection()
if len(sel)==0:
App_Console_PrintMessage(u"Sélectionnez un objet" + "\n")
errorDialog(u"Sélectionnez un objet")
else:
if self.GBox_012_SpreadSheet.isChecked():
affect(1)
else:
affect(0)
self.GBox_012_SpreadSheet.setTitle(u"Module désactivé")
self.LE_1.setText(document_)
self.LE_2.setText(object_Label)
self.LE_2a.setText(object_Name)
self.LE_3.setText(str(subElemName))
self.LE_3a.setText(str(typeObject))
self.LE_4.setText(str(object_Type))
self.LE_4x.setText(str(Around(position0 * uniteM)) + " " + uniteMs)
self.LE_4y.setText(str(Around(position1 * uniteM)) + " " + uniteMs)
self.LE_4z.setText(str(Around(position2 * uniteM)) + " " + uniteMs)
self.LE_N_Edges.setText(str(nombreArretesMesh))
self.LE_N_Facets.setText(str(nombreFacesMesh))
self.LE_N_Points.setText(str(nombrePointsMesh))
self.LE_CRed.setText(str(Around(diffuseColorRF)))
self.LE_CRed.setToolTip(u"Couleur Rouge au point cliqué (format FreeCAD)")
self.LE_CRed.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: rgb("+str(int(diffuseColorRF*255.0))+", 0, 0)}") # white and red
self.LE_CGreen.setText(str(Around(diffuseColorVF)))
self.LE_CGreen.setToolTip(u"Couleur Verte au point cliqué (format FreeCAD)")
self.LE_CGreen.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: rgb(0, "+str(int(diffuseColorVF*255.0))+", 0)}") # white and green
self.LE_CBlue.setText(str(Around(diffuseColorBF)))
self.LE_CBlue.setToolTip(u"Couleur Bleue au point cliqué (format FreeCAD)")
self.LE_CBlue.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: rgb(0, 0, "+str(int(diffuseColorBF*255.0))+")}") # white and blue
self.LE_Transparent.setText(str(Around(diffuseColorTF)))
self.LE_Transparent.setToolTip(u"Transparence au point cliqué")
self.LE_ConversionUnsigned.setText(str(unsignedEncodeColor))
self.LE_ConversionUnsigned.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: rgb("+str(int(diffuseColorRF*255.0))+","+str(int(diffuseColorVF*255.0))+","+str(int(diffuseColorBF*255.0))+")}") # white
switchCreateLineDiVatNatOnClick = FreeCAD_ParamGetSet.GetBool(u"switchCreateLineDiVatNatOnClick")
if switchCreateLineDiVatNatOnClick == 0:
self.PB_Line_Direction.setText(u"Direction")
self.PB_Line_ValueAT.setText(u"ValueAt(0)")
self.PB_Line_NormalAT.setText(typeNormalAt)
else:
self.PB_Line_Direction.setText(u"*Direction")
self.PB_Line_ValueAT.setText(u"*ValueAt(0)")
self.PB_Line_NormalAT.setText(typeNormalAt)
self.LE_9_Direction.setText(str(directionObj))
self.LE_10_ValueAt.setText(str(direcValueAt))
self.LE_10b_NormalAt.setText(str(direcNormalAt))
self.PB_Line_NormalAT.setText(typeNormalAt)
self.SBox_Transparence.setValue(transparenceFace)
try:
self.LE_007_BB_01_XLength.setText(str(Around(boundBoxLX * uniteM)) + " " + uniteMs)
self.LE_007_BB_02_YLength.setText(str(Around(boundBoxLY * uniteM)) + " " + uniteMs)
self.LE_007_BB_03_ZLength.setText(str(Around(boundBoxLZ * uniteM)) + " " + uniteMs)
self.LE_007_BB_04_Diagonal.setText(str(Around(boundBoxDiag * uniteM)) + " " + uniteMs)
boundBox_S = "[X: "+str(Around(boundBoxLX * uniteM)) + " " + uniteMs+"] x [Y: "+str(Around(boundBoxLY * uniteM)) + " " + uniteMs+"] x [Z: "+str(Around(boundBoxLZ * uniteM)) + " " + uniteMs+"] Diagonal: " + str(Around(boundBoxDiag * uniteM)) + " " + uniteMs
except Exception:
self.LE_007_BB_01_XLength.setText(u"")
self.LE_007_BB_02_YLength.setText(u"")
self.LE_007_BB_03_ZLength.setText(u"")
self.LE_007_BB_04_Diagonal.setText(u"")
boundBox_S = u""
self.LA_5.setText(typeLongueur)
try:
self.LE_5.setText(str(Around(float(longueurObjet) * float(uniteM)))+ " " +uniteMs)
except Exception:
self.LE_5.setText(u"")
# Circle Bspline
if (rayonObjet != 0.0) or (str(BsplineDetect) == "<BSplineCurve object>"):
self.LE_5b.setVisible(True)
self.LA_5b.setVisible(True)
if str(BsplineDetect) == "<BSplineCurve object>":
# BsplineArcsRadius = []
ui.on_SB_Arc_ToByArcs_valueChanged(1)
self.SB_Arc_ToByArcs.setVisible(True)
self.SB_Arc_ToByArcs.setToolTip(u"Bspline détecté " + "\n"
u"Nombre d'élements = " + str(BsplineNumberElement) + "\n" +
u"Calcul avec une distance entre points " + str(Around(BsplineCutLength * uniteM)) + " " + uniteMs + "\n\n" +
u"toBiArcs(" + BSplinetoByArcValeurS + ")" + "\n"
u"Cette valeur peut être changée dans les préferences variable : setBSplineToByArcValue" + "\n")
self.PB_BSplineCreateNodes.setText(u"Points(" + str(len(BsplinePointsCoor)) + ")") # Node
self.PB_BSplineCreateNodes.setToolTip(u"Create on point on Poles (" + str(len(BsplinePointsCoor)) + ") of the BSpline" + "\n\n"
u"Command for Shape : Gui.Selection.getSelection()[0].Points" + "\n"
u"Command for SubObj : Gui.Selection.getSelectionEx()[0].SubObjects[0].Curve.getPoles()" + "\n\n"
u"Hidden Options : " + "\n\n"
u"The variables " + "\n\n"
u"switchBSplineCreateCircleConstructorAxis" + "\n"
u"switchBSplineCreateCircleConstructor" + "\n\n"
u"accessible in : User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__ + "\n"
u"allow to create the circles and the point axes construction of the BSpline" + "\n"
u"their number (precision) depends on the value toBiArcs(BSplinetoByArcValeurS)" + "\n"
u"actual toBiArcs(" + BSplinetoByArcValeurS + ")" + "\n")
self.PB_BSplineCreateNodes.setVisible(True)
self.LA_5b.setText(u"Rayon Appr.")
self.LE_5b.setText(BsplineRayonApproximatif)
self.LE_5b.setToolTip(u"BSpline Rayon au point : ")# + self.SB_Arc_ToByArcs.text()
self.LA_6.setText(u"BSpline Noeuds")
self.LE_6.setText(str(BsplineNombreDeNoeuds))
self.LE_6.setToolTip(u"Nombre de noeuds du BSpline.")
else:
self.SB_Arc_ToByArcs.setVisible(False)
self.PB_BSplineCreateNodes.setVisible(False)
self.LA_5b.setText(u"Rayon")
#self.LE_5b.setText(str(Around(rayonObjet * float(uniteM))) + " " + uniteMs)
self.LE_5b.setText(str(Around(rayonObjet * float(uniteM))) + " " + uniteMs + (u" (dia. " + str(Around(rayonObjet * float(uniteM) * 2.0)) + " " + uniteMs + ")"))
self.LE_5b.setToolTip(u"Rayon détecté.")
if numberEdges == 1:
self.LA_6.setText(u"Circonférence (" + str(numberEdges) + ")")
else:
self.LA_6.setText(u"Périmètre du shape (" + str(numberEdges) + ")")
self.LE_6.setText(str(Around(float(perimetre) * float(uniteM))) + " " +uniteMs)
else:
self.LA_6.setText(u"Périmètre du shape (" + str(numberEdges) + ")")
self.SB_Arc_ToByArcs.setVisible(False)
self.PB_BSplineCreateNodes.setVisible(False)
self.LE_5b.setVisible(False)
self.LA_5b.setVisible(False)
rayonObjet = 0.0
try:
self.LE_6.setText(str(Around(float(perimetre) * float(uniteM))) + " " +uniteMs)
except Exception:
perimetre = 0.0
self.LE_6.setText(str(Around(perimetre)))
self.LE_6.setToolTip(u"Périmètre total de la forme." + "\n"
u"Affiche la somme totale de toutes les arêtes de la forme")
if self.GBox_012_SpreadSheet.isChecked():
self.tableWidget.clear() # Zero
co = 0
li = 1
aa = 0
#### detail of Cercle BSpline begin
if (str(BsplineDetect) == "<BSplineCurve object>"):
newitem = QtWidgets.QTableWidgetItem(u"Nombre de noeuds")
self.tableWidget.setItem( li,0, newitem)
newitem = QtWidgets.QTableWidgetItem(str(len(BsplinePointsCoor)))
self.tableWidget.setItem( li,1, newitem)
li += 1
for i in enumerate(BsplinePointsCoor): # Edges
newitem = QtWidgets.QTableWidgetItem(u"Node" + str(i[0]+1))
self.tableWidget.setItem( li,0, newitem)
for a in range(3): # Vertexes
co += 1
chaine = str(Around(BsplinePointsCoor[i[0]][a]))
newitem = QtWidgets.QTableWidgetItem(chaine)
self.tableWidget.setItem( li,co, newitem)
aa += 6
co = 0
li += 1
#### detail of Cercle BSpline end
if RowCountTest > RowCount:
self.GBox_012_SpreadSheet.setTitle(u"Détails ("+ str(compt_E) +") ("+ str(compt_F)+") ("+ str(compt_VF)+") (!+ "+str(RowCount)+") "+str(RowCountTest))
else:
self.GBox_012_SpreadSheet.setTitle(u"Vertexes et détails ("+ str(compt_E) +") ("+ str(compt_F)+") ("+ str(compt_VF)+")")#str(RowCount)
co = 0
li = 0
aa = 0
for j in enumerate(Edges): # Edges
newitem = QtWidgets.QTableWidgetItem(str(j[1]))
self.tableWidget.setItem( li,0, newitem)
newitem = QtWidgets.QTableWidgetItem(str(float(EdgesLong[li]) * float(uniteM))+" "+uniteMs)
self.tableWidget.setItem( li,1, newitem)
co+=1
try:
for a in range(aa,aa+6): # Vertexes
co += 1
#newitem = QtWidgets.QTableWidgetItem(str(Vertx[a]))
chaine = str(Vertx[a]).split(":")
newitem = QtWidgets.QTableWidgetItem(chaine[0]+":" + str(float(chaine[1]) * float(uniteM))+" "+uniteMs)
self.tableWidget.setItem( li,co, newitem)
except Exception:
None
aa += 6
co = 0
li += 1
li += 1
co = 0
cco = 0
co2 = 0
for j in enumerate(Faces): # Faces
newitem = QtWidgets.QTableWidgetItem(str(j[1]))
self.tableWidget.setItem( li,0, newitem)
newitem = QtWidgets.QTableWidgetItem(str(float(FacesSurf[co]) * float(uniteS))+" "+uniteSs)
self.tableWidget.setItem( li,1, newitem)
li += 1
for jj in range(cco,len(FacesCoor)):# Faces coordinates
cco+=1
if FacesCoor[jj] == "T":
break
else:
# newitem = QtWidgets.QTableWidgetItem(FacesCoor[jj])
chaine = str(FacesCoor[jj]).split(":")
newitem = QtWidgets.QTableWidgetItem(chaine[0]+":" + str(float(chaine[1]) * float(uniteM)) + " " + uniteMs)
self.tableWidget.setItem( li,co2, newitem)
co2 += 1
if co2 == 3:
li += 1
co2 = 0
co += 1
li += 1
self.LE_8xy.setText(str(Around(Plan_xy))+uniteAs)
self.LE_8xya.setText(str(Plan_xy_V))
self.LE_8yz.setText(str(Around(Plan_yz))+uniteAs)
self.LE_8yza.setText(str(Plan_yz_V))
self.LE_8zx.setText(str(Around(Plan_zx))+uniteAs)
self.LE_8zxa.setText(str(Plan_zx_V))
self.LE_9a.setText(str(Around(surface * uniteS)) + " " + uniteSs)
self.LE_10a.setText(str(Around(surfaceFace * uniteS)) + " " + uniteSs)
self.LE_11a.setText(str(Around(volume_ * uniteV)) + " " + uniteVs)
self.LE_12a.setText(str(Around(poids)) + " " + unitePs)
seTMaterialCost = ((volume_ * seTDensiteValue * seTMaterialPrice) / 1000000.0)
self.LE_Cost.setText(str(Around(seTMaterialCost)) + seTMaterialSuffixCost) #CostMaterial
self.LE_13x.setText(str(Around(boundBoxCenterX * uniteM)) + " " + uniteMs)
self.LE_13y.setText(str(Around(boundBoxCenterY * uniteM)) + " " + uniteMs)
self.LE_13z.setText(str(Around(boundBoxCenterZ * uniteM)) + " " + uniteMs)
self.LE_14x.setText(str(Around(CenterOfMassX * uniteM)) + " " + uniteMs)
self.LE_14y.setText(str(Around(CenterOfMassY * uniteM)) + " " + uniteMs)
self.LE_14z.setText(str(Around(CenterOfMassZ * uniteM)) + " " + uniteMs)
self.LE_007_BB_01_XLength.setText(str(Around(boundBoxLX * uniteM)) + " " + uniteMs)
self.LE_007_BB_02_YLength.setText(str(Around(boundBoxLY * uniteM)) + " " + uniteMs)
self.LE_007_BB_03_ZLength.setText(str(Around(boundBoxLZ * uniteM)) + " " + uniteMs)
self.LE_007_BB_04_Diagonal.setText(str(Around(boundBoxDiag * uniteM)) + " " + uniteMs)
try:
MatrixX1_16 = MatrixX1*uniteS**5
MatrixY1_16 = MatrixY1*uniteS**5
MatrixZ1_16 = MatrixZ1*uniteS**5
MatrixX2_16 = MatrixX2*uniteS**5
MatrixY2_16 = MatrixY2*uniteS**5
MatrixZ2_16 = MatrixZ2*uniteS**5
MatrixX3_16 = MatrixX3*uniteS**5
MatrixY3_16 = MatrixY3*uniteS**5
MatrixZ3_16 = MatrixZ3*uniteS**5
except Exception:
MatrixX1_16 = MatrixY1_16 = MatrixZ1_16 = 0.0
MatrixX2_16 = MatrixY2_16 = MatrixZ2_16 = 0.0
MatrixX3_16 = MatrixY3_16 = MatrixZ3_16 = 0.0
self.LE_16_M.setText(u"")
self.LE_16_1x.setText(str(Around(MatrixX1_16)))
self.LE_16_1y.setText(str(Around(MatrixY1_16)))
self.LE_16_1z.setText(str(Around(MatrixZ1_16)))
self.LE_16_01.setText(str(Around(Matrix_1)))
self.LE_16_2x.setText(str(Around(MatrixX2_16)))
self.LE_16_2y.setText(str(Around(MatrixY2_16)))
self.LE_16_2z.setText(str(Around(MatrixZ2_16)))
self.LE_16_02.setText(str(Around(Matrix_2)))
self.LE_16_3x.setText(str(Around(MatrixX3_16)))
self.LE_16_3y.setText(str(Around(MatrixY3_16)))
self.LE_16_3z.setText(str(Around(MatrixZ3_16)))
self.LE_16_03.setText(str(Around(Matrix_3)))
self.LE_16_4x.setText(str(Around(Matrix12)))
self.LE_16_4y.setText(str(Around(Matrix13)))
self.LE_16_4z.setText(str(Around(Matrix14)))
self.LE_16_04.setText(str(Around(Matrix15)))
try:
MatrixX1_17 = MatrixX1*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixY1_17 = MatrixY1*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixZ1_17 = MatrixZ1*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixX2_17 = MatrixX2*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixY2_17 = MatrixY2*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixZ2_17 = MatrixZ2*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixX3_17 = MatrixX3*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixY3_17 = MatrixY3*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
MatrixZ3_17 = MatrixZ3*uniteM**5*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))
except Exception:
MatrixX1_17 = MatrixY1_17 = MatrixZ1_17 = 0.0
MatrixX2_17 = MatrixY2_17 = MatrixZ2_17 = 0.0
MatrixX3_17 = MatrixY3_17 = MatrixZ3_17 = 0.0
self.LE_17_M.setText(u"")
self.LE_17_1x.setText(str(Around(MatrixX1_17)))
self.LE_17_1y.setText(str(Around(MatrixY1_17)))
self.LE_17_1z.setText(str(Around(MatrixZ1_17)))
self.LE_17_2x.setText(str(Around(MatrixX2_17)))
self.LE_17_2y.setText(str(Around(MatrixY2_17)))
self.LE_17_2z.setText(str(Around(MatrixZ2_17)))
self.LE_17_3x.setText(str(Around(MatrixX3_17)))
self.LE_17_3y.setText(str(Around(MatrixY3_17)))
self.LE_17_3z.setText(str(Around(MatrixZ3_17)))
self.LE_18_determinant.setText(str(DeterminantM))
self.LE_18_determinantDecim.setText(str(decimal.Decimal(DeterminantM)))
self.RB_01_Tabulation.setText(u"Tabulation")
self.RB_02_Virgule.setText(u"Virgule")
self.RB_03_Point_Virgule.setText(u"Point Virgule")
self.RB_04_Espace.setText(u"Espace")
# self.RB_01_Tabulation.setChecked(True)
# ESCAPE = "\t"
ui.paletteBase()
def on_RB_Separation(self): # option ESCAPE for spreadSheet
global ESCAPE
if self.RB_01_Tabulation.isChecked(): #tabulation #compatible FC
ESCAPE = "\t"
elif self.RB_02_Virgule.isChecked(): #virgule #compatible FCInfo
ESCAPE = ","
elif self.RB_03_Point_Virgule.isChecked(): #point virgule #option
ESCAPE = ";"
elif self.RB_04_Espace.isChecked(): #espace #option
ESCAPE = " "
def on_PB_01_Read_SpreadSheet_clicked(self): # lecture
global ESCAPE
global setPathLatestDirectory
global FreeCAD_ParamGetSet
OpenName = ""
#### mint
if switchQFileDialogMint == True: # Mint
OpenName, Filter = PySide2.QtWidgets.QFileDialog.getOpenFileName(None, u"Read a txt file", setPathLatestDirectory, "(FCInfo *.FCInfo);;(Cvs *.csv);;(Ascii *.asc);;(TXT *.txt);;(*.*);;(*)")#PySide2 Mint
#### mint
else:
OpenName, Filter = PySide2.QtWidgets.QFileDialog.getOpenFileName(None, u"Read a txt file", setPathLatestDirectory, "*.FCInfo *.csv *.asc *.txt;;FCInfo (*.FCInfo);;Cvs (*.csv);;Ascii (*.asc);;TXT (*.txt);;(*.*);;(*)")#PySide2
try:
if OpenName != "":
####new2
pathFile = os.path.dirname(OpenName) + "/" #1# = C:/Provisoire400/
setPathLatestDirectory = pathFile
FreeCAD_ParamGetSet.SetString(u"setPathLatestDirectory", setPathLatestDirectory) #*"C:\ ???"
#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
####detection separator###################
file = open(OpenName, "r") # open file for counter separator
separateur1 = separateur2 = separateur3 = separateur4 = 0
for separator in file:
separateur1 += separator.count(u"\t")
separateur2 += separator.count(u",")
separateur3 += separator.count(u";")
separateur4 += separator.count(u" ")
self.RB_01_Tabulation.setText(u"Tabulation "+str(separateur1))
self.RB_02_Virgule.setText(u"Virgule "+str(separateur2))
self.RB_03_Point_Virgule.setText(u"Point Virgule "+str(separateur3))
self.RB_04_Espace.setText(u"Espace "+"(" + str(separateur4) + ")")
file.close()
####detection separator###################
####counter line and colonne###################
file = open(OpenName, "r") # open file for counter line and colonne
reader = csv.reader(file, delimiter = ESCAPE) #, quotechar=';'
Count0 = 0
ligne = 0
colonne = 0
try: #
for row in reader:
ligne += 1 #
for field in row:
Count0 += 1 #
if Count0 > colonne:
colonne = Count0
Count0 = 0
finally:
file.close()
self.table = QtWidgets.QTableWidget( ligne , colonne) # prepare le tableau
self.table.setWindowTitle(u"FCInfo Patience lecture du fichier")
# self.table.resize(700, 500)
self.table.resize(500, 700)
self.table.setWindowModality(QtCore.Qt.NonModal)
self.table.setWindowFlags(PySide2.QtCore.Qt.WindowStaysOnTopHint) # PySide2
self.table.setWindowIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_04))) # icone dans une variable
self.table.show()
####counter line and colonne###################
####csv.reader###################
file = open(OpenName, "r") # open file for read
reader = csv.reader(file, delimiter = ESCAPE) #, quotechar=';'
lignes = ligne
colonne = 0
ligne = 0
try:
for row in reader:
for field in row:
newitem = QtWidgets.QTableWidgetItem(str(field))
self.table.setItem(ligne, colonne, newitem)
colonne += 1
ligne += 1
colonne = 0
self.table.setWindowTitle(u"FCInfo Patience lecture du fichier "+str(ligne)+"/"+str(lignes))
finally:
file.close()
self.table.setWindowTitle(u"FCInfo Tableau " + OpenName)
####csv.reader###################
except Exception:
App_Console_PrintMessage(u"Erreur en lecture du fichier " + OpenName + "\n")
errorDialog(u"Erreur en lecture du fichier " + OpenName)
def on_PB_02_Save_SreadSheet_clicked(self): # registration
global document_
global object_Label
global object_Name
global typeObject
global object_Type
global subElemName
global position0
global position1
global position2
global longueurObjet
global rayonObjet
global detected
global perimetre
global diffuseColorRF
global diffuseColorVF
global diffuseColorBF
global diffuseColorTF
global Plan_xy_V
global Plan_yz_V
global Plan_zx_V
global surface
global surfaceFace
global volume_
global seTDensiteValue
global poids
global uniteM
global uniteMs
global uniteS
global uniteSs
global uniteV
global uniteVs
global unitePs
global boundBoxCenterX
global boundBoxCenterY
global boundBoxCenterZ
global CenterOfMassX
global CenterOfMassY
global CenterOfMassZ
global boundBoxLX
global boundBoxLY
global boundBoxLZ
global Vertx
global Edges
global EdgesLong
global Faces
global FacesSurf
global FacesCoor
global compt_E
global compt_F
global compt_VF
global RowCountTest
global path
global SaveName
global ESCAPE
global directionObj
global direcValueAt
global direcNormalAt
global Matrix_1
global Matrix_2
global Matrix_3
global Matrix12
global Matrix13
global Matrix14
global Matrix15
global DeterminantM
global MatrixX1_16
global MatrixY1_16
global MatrixZ1_16
global MatrixX2_16
global MatrixY2_16
global MatrixZ2_16
global MatrixX3_16
global MatrixY3_16
global MatrixZ3_16
global MatrixX1_17
global MatrixY1_17
global MatrixZ1_17
global MatrixX2_17
global MatrixY2_17
global MatrixZ2_17
global MatrixX3_17
global MatrixY3_17
global MatrixZ3_17
global typeLongueur
global nombreArretesMesh
global nombreFacesMesh
global nombrePointsMesh
global colorShapeFaceDiffuseColor
global BsplineDetect
global BsplineNombreDeNoeuds
global BsplinePointsCoor
global seTMaterialCost
global seTMaterialPrice
global seTMaterialSuffixCost
global materialAssociated
global seTMaterialCurrentIndex
global setPathLatestDirectory
global FreeCAD_ParamGetSet
SaveName = ""
#### mint
if switchQFileDialogMint == True: # Mint
SaveName, Filter = PySide2.QtWidgets.QFileDialog.getSaveFileName(None, "Save a txt file", setPathLatestDirectory, " (FCInfo *.FCInfo);; (Cvs *.csv);; (Ascii *.asc);; (TXT *.txt);;(*.*);;(*)")#PySide2 Mint
Filter = Filter[Filter.find("."):Filter.find(")")]
if Filter[-2:] == ".*":
Filter = Filter[:-2]
SaveName = SaveName + Filter
#### mint
else:
SaveName, Filter = PySide2.QtWidgets.QFileDialog.getSaveFileName(None, "Save a txt file", setPathLatestDirectory, "*.FCInfo *.csv *.asc *.txt;;FCInfo (*.FCInfo);;Cvs (*.csv);;Ascii (*.asc);;TXT (*.txt);;(*.*);;(*)")#PySide2
if SaveName == "":
App_Console_PrintMessage(u"Processus abandonné" + "\n")
errorDialog(u"Processus abandonné")
else:
App_Console_PrintMessage(u"Enregistrement de " + SaveName + "\n")
####new2
pathFile = os.path.dirname(SaveName) + "/" #1# = C:/Provisoire400/
setPathLatestDirectory = pathFile
FreeCAD_ParamGetSet.SetString(u"setPathLatestDirectory", setPathLatestDirectory) #*"C:\ ???"
#racineDrive = os.path.splitdrive(SaveName)[0] #2# = C:
#formatFichier = os.path.splitext(SaveName)[1] #4# = .png
#SaveName = os.path.splitext(SaveName)[0] #5# = /home/kubuntu/.FreeCAD/Macro/Texture_007_H #= C:/Provisoire400/image3D
#nomFichier = os.path.basename(SaveName) #3# = image3D
#SaveNameformatFichier = SaveName + formatFichier #6# = C:/Provisoire400/image3D.png
#pathFileSaveNameformatFichier = pathFile + nomFichier + formatFichier #7# = C:/Provisoire400/image3D.png
####new2
try:
f = open(SaveName, 'w') # write
f.write(iso8859(u"Information de l'élement\n"))
f.write(iso8859(u"________________________\n"))
f.write(iso8859(dateEu() + " "+ heure() + "\n\n"))
f.write(iso8859(u"Nom du document" + ESCAPE + document_ + "\n"))
f.write(iso8859(u"Label de l'objet" + ESCAPE + object_Label + "\n"))
f.write(iso8859(u"Nom interne de l'objet" + ESCAPE + object_Name + "\n"))
f.write(iso8859(u"Nom de l'élément" + ESCAPE + str(subElemName) + "\n"))
f.write(iso8859(u"Type d'objet (Shape)" + ESCAPE + typeObject + "\n"))
f.write(iso8859(u"Type d'objet" + ESCAPE + object_Type + "\n\n"))
f.write(iso8859(u"Coordonnées de la souris" + ESCAPE + u"X" + ESCAPE + str(Around(position0 * uniteM)) + ESCAPE + uniteMs + ESCAPE +
u"Y" + ESCAPE + str(Around(position1 * uniteM)) + ESCAPE + uniteMs + ESCAPE +
u"Z" + ESCAPE + str(Around(position2 * uniteM)) + ESCAPE + uniteMs + "\n\n"))
#### couleurs
f.write(iso8859(u"Couleur sur la sélection" + "\n"))
f.write(iso8859(u"Rouge" + ESCAPE + str(int(diffuseColorRF*255.0)) + ESCAPE +
u"Vert" + ESCAPE + str(int(diffuseColorVF*255.0)) + ESCAPE +
u"Bleu" + ESCAPE + str(int(diffuseColorBF*255.0)) + ESCAPE +
u"Transparence" + ESCAPE + str(int(diffuseColorTF*255.0)) + "\n\n"))
if len(colorShapeFace) != 0:
f.write(iso8859(u"Couleur Objet (float) " + ESCAPE + u"Rouge" + ESCAPE + str(colorShapeFace[0]) + ESCAPE +
u"Vert" + ESCAPE + str(colorShapeFace[1]) + ESCAPE +
u"Bleu" + ESCAPE + str(colorShapeFace[2]) + ESCAPE +
u"Transparence" + ESCAPE + str(colorShapeFace[3]) + "\n"))
f.write(iso8859(u"Couleur Objet (int ) " + ESCAPE + u"Rouge" + ESCAPE + str(int(colorShapeFace[0]*255.0)) + ESCAPE +
u"Vert" + ESCAPE + str(int(colorShapeFace[1]*255.0)) + ESCAPE +
u"Bleu" + ESCAPE + str(int(colorShapeFace[2]*255.0)) + ESCAPE +
u"Transparence" + ESCAPE + str(int(colorShapeFace[3]*255.0)) + "\n\n"))
if len(colorShapeLine) != 0:
f.write(iso8859(u"Couleur Ligne(s) (float) " + ESCAPE + u"Rouge" + ESCAPE + str(colorShapeLine[0]) + ESCAPE +
u"Vert" + ESCAPE + str(colorShapeLine[1]) + ESCAPE +
u"Bleu" + ESCAPE + str(colorShapeLine[2]) + ESCAPE +
u"Transparence" + ESCAPE + str(colorShapeLine[3]) + "\n"))
f.write(iso8859(u"Couleur Ligne(s) (int ) " + ESCAPE + u"Rouge" + ESCAPE + str(int(colorShapeLine[0]*255.0)) + ESCAPE +
u"Vert" + ESCAPE + str(int(colorShapeLine[1]*255.0)) + ESCAPE +
u"Bleu" + ESCAPE + str(int(colorShapeLine[2]*255.0)) + ESCAPE +
u"Transparence" + ESCAPE + str(int(colorShapeLine[3]*255.0)) + "\n\n"))
if len(colorShapePoint) != 0:
try:
f.write(iso8859(u"Couleur Point(s) (float) " + ESCAPE + u"Rouge" + ESCAPE + str(colorShapePoint[0]) + ESCAPE +
u"Vert" + ESCAPE + str(colorShapePoint[1]) + ESCAPE +
u"Bleu" + ESCAPE + str(colorShapePoint[2]) + ESCAPE +
u"Transparence" + ESCAPE + str(colorShapePoint[3]) + "\n"))
f.write(iso8859(u"Couleur Point(s) (int ) " + ESCAPE + u"Rouge" + ESCAPE + str(int(colorShapePoint[0]*255.0)) + ESCAPE +
u"Vert" + ESCAPE + str(int(colorShapePoint[1]*255.0)) + ESCAPE +
u"Bleu" + ESCAPE + str(int(colorShapePoint[2]*255.0)) + ESCAPE +
u"Transparence" + ESCAPE + str(int(colorShapePoint[3]*255.0)) + "\n\n"))
except Exception:
None
f.write(iso8859(typeLongueur + ESCAPE + str(Around(longueurObjet * uniteM)) + ESCAPE + uniteMs + "\n"))
if detected[0:4] == "Mesh":
f.write(iso8859(u"Composants Mesh" + "\n"))
f.write(iso8859(u"_______________\n"))
f.write(iso8859(u"Nombre d'Arrêtes" + ESCAPE + str(nombreArretesMesh) + "\n"))
f.write(iso8859(u"Nombre de Faces" + ESCAPE + str(nombreFacesMesh) + "\n"))
f.write(iso8859(u"Nombre de Points" + ESCAPE + str(nombrePointsMesh) + "\n\n"))
if detected == "<PointKernel object>":
f.write(iso8859(u"Composants Points" + "\n"))
f.write(iso8859(u"_________________\n"))
f.write(iso8859(u"Nombre de Points" + ESCAPE + str(nombrePointsMesh) + "\n\n"))
#### detail of Cercle
if rayonObjet != 0.0:
f.write(iso8859(u"Rayon de l'objet" + ESCAPE + str(Around(rayonObjet * uniteM)) + ESCAPE + uniteMs + "\n\n"))
f.write(iso8859(u"Périmètre de la forme" + ESCAPE + str(Around(perimetre * uniteM)) + ESCAPE + uniteMs + "\n\n"))
if self.GBox_012_SpreadSheet.isChecked():
#### detail of Cercle BSpline begin
if (str(BsplineDetect) == "<BSplineCurve object>"):
f.write(iso8859(u"Nombre de noeuds" + ESCAPE + str(BsplineNombreDeNoeuds) + "\n"))
for i in enumerate(BsplinePointsCoor): # nombre de points noeuds
f.write(iso8859(u"Noeud" + str(i[0]) + ESCAPE + u"X" + str(i[0] + 1) + ESCAPE + str(Around(i[1][0])) + ESCAPE +
u"Y" + str(i[0] + 1) + ESCAPE + str(Around(i[1][1])) + ESCAPE +
u"Z" + str(i[0] + 1) + ESCAPE + str(Around(i[1][2])) + ESCAPE + "\n"))
f.write(iso8859("\n"))
#### detail of Cercle BSpline end
f.write(iso8859(u"Vertexes et détails" + ESCAPE + u" Nombre de Bords" + ESCAPE + str(compt_E) + ESCAPE + u" Nombre de Faces" + ESCAPE + str(compt_F) + ESCAPE + u" Number Vertexes faces" + ESCAPE + str(compt_VF) + ESCAPE + u" Détail Total" + ESCAPE + str(RowCountTest) + "\n\n"))
co = 0
aa = 0
for j in enumerate(Edges):
f.write(str(j[1]) + ESCAPE +iso8859(str(Around(float(EdgesLong[co]) * float(uniteM))) + ESCAPE + uniteMs + ESCAPE))#"\n"
co+=1
for a in range(aa,aa+6):
try:
chaine = str(Vertx[a]).split(":")
f.write(chaine[0] + ESCAPE + iso8859(str(Around(float(chaine[1]) * float(uniteM)))) + ESCAPE + uniteMs + ESCAPE)
except Exception:
None
aa += 6
f.write("\n")
f.write("\n")
co = 0
cco = 0
co2 = 0
for j in enumerate(Faces):
f.write(str(j[1]) + ESCAPE + iso8859(str(Around(float(FacesSurf[co]) * float(uniteS))) + ESCAPE + uniteSs + "\n"))
co += 1
if len(colorShapeFaceDiffuseColor) != 0:
f.write(iso8859(u"Couleur float Face" + str(j[0]+1) + ESCAPE +
u"Rouge" + ESCAPE + str(colorShapeFaceDiffuseColor[j[0]][0]) + ESCAPE +
u"Vert " + ESCAPE + str(colorShapeFaceDiffuseColor[j[0]][1]) + ESCAPE +
u"Bleu " + ESCAPE + str(colorShapeFaceDiffuseColor[j[0]][2]) + ESCAPE +
u"Transparent" + ESCAPE + str(colorShapeFaceDiffuseColor[j[0]][3]) + ESCAPE + "\n"))
f.write(iso8859(u"Couleur integer Face" + str(j[0]+1) + ESCAPE +
u"Rouge" + ESCAPE + str(int(colorShapeFaceDiffuseColor[j[0]][0]*255.0)) + ESCAPE +
u"Vert " + ESCAPE + str(int(colorShapeFaceDiffuseColor[j[0]][1]*255.0)) + ESCAPE +
u"Bleu " + ESCAPE + str(int(colorShapeFaceDiffuseColor[j[0]][2]*255.0)) + ESCAPE +
u"Transparent" + ESCAPE + str(int(colorShapeFaceDiffuseColor[j[0]][3]*255.0)) + ESCAPE + "\n"))
for jj in range(cco,len(FacesCoor)):# Faces coordinates
cco+=1
if FacesCoor[jj] == "T":
f.write("\n")
break
else:
chaine = str(FacesCoor[jj]).split(":")
f.write(iso8859(chaine[0] + ESCAPE + str(Around(float(chaine[1]) * float(uniteM))) + ESCAPE + uniteMs + ESCAPE))
co2 += 1
if co2 == 3:
f.write("\n")
co2 = 0
f.write(u"\n")
f.write(iso8859(u"Plan" + ESCAPE + u" XY:" + ESCAPE + self.LE_8xy.text() + ESCAPE + u" coordinates:" + ESCAPE + str(Plan_xy_V) + "\n"))
f.write(iso8859(u"Plan" + ESCAPE + u" YZ:" + ESCAPE + self.LE_8yz.text() + ESCAPE + u" coordinates:" + ESCAPE + str(Plan_yz_V) + "\n"))
f.write(iso8859(u"Plan" + ESCAPE + u" ZX:" + ESCAPE + self.LE_8zx.text() + ESCAPE + u" coordinates:" + ESCAPE + str(Plan_zx_V) + "\n\n"))
f.write(iso8859(u"Surface de la forme" + ESCAPE + str(Around(surface * uniteS)) + ESCAPE + uniteSs + "\n"))
f.write(iso8859(u"Surface de la face" + ESCAPE + str(Around(surfaceFace * uniteS)) + ESCAPE + uniteSs + "\n\n"))
f.write(iso8859(u"Volume de la forme" + ESCAPE + str(Around(volume_ * uniteV)) + ESCAPE + uniteVs + "\n"))
f.write(iso8859(u"Poids" + ESCAPE + str(Around(poids)) + ESCAPE + unitePs + ESCAPE + u" Density:" + ESCAPE + str(Around(seTDensiteValue)) + "\n\n"))
f.write(iso8859(u"Centre de la forme" + ESCAPE + u" X:" + ESCAPE + str(Around(boundBoxCenterX * uniteM)) + ESCAPE + uniteMs + ESCAPE +
u" Y:" + ESCAPE + str(Around(boundBoxCenterY * uniteM)) + ESCAPE + uniteMs + ESCAPE +
u" Z:" + ESCAPE + str(Around(boundBoxCenterZ * uniteM)) + ESCAPE + uniteMs + "\n"))
f.write(iso8859(u"Centre de la masse" + ESCAPE + u" X:" + ESCAPE + str(Around(CenterOfMassX * uniteM)) + ESCAPE + uniteMs + ESCAPE +
u" Y:" + ESCAPE + str(Around(CenterOfMassY * uniteM)) + ESCAPE + uniteMs + ESCAPE +
u" Z:" + ESCAPE + str(Around(CenterOfMassZ * uniteM)) + ESCAPE + uniteMs + "\n"))
f.write(iso8859(u"Dimensions hors tout" + ESCAPE + u" X:" + ESCAPE + str(Around(boundBoxLX * uniteM)) + ESCAPE + uniteMs + ESCAPE +
u" Y:" + ESCAPE + str(Around(boundBoxLY * uniteM)) + ESCAPE + uniteMs + ESCAPE +
u" Z:" + ESCAPE + str(Around(boundBoxLZ * uniteM)) + ESCAPE + uniteMs + "\n"))
f.write(iso8859(u"Dimensions de la diagonale" + ESCAPE + str(Around(boundBoxDiag * uniteM)) + ESCAPE + uniteMs + "\n\n"))
if directionObj != "[]":
f.write(iso8859(u"Direction" + ESCAPE + u" X:" + ESCAPE + str(Around(directionObj[0])) + ESCAPE + u" Y:" + ESCAPE + str(Around(directionObj[1])) + ESCAPE + u" Z:" + ESCAPE + str(Around(directionObj[2])) + "\n"))
if direcValueAt != "[]":
f.write(iso8859(u"ValueAt" + ESCAPE + u" X:" + ESCAPE + str(Around(direcValueAt[0])) + ESCAPE + u" Y:" + ESCAPE + str(Around(direcValueAt[1])) + ESCAPE + u" Z:" + ESCAPE + str(Around(direcValueAt[2])) + "\n"))
if direcNormalAt != "[]":
f.write(iso8859(u"NormalAt" + ESCAPE + u" X:" + ESCAPE + str(Around(direcNormalAt[0])) + ESCAPE + u" Y:" + ESCAPE + str(Around(direcNormalAt[1])) + ESCAPE + u" Z:" + ESCAPE + str(Around(direcNormalAt[2])) + "\n"))
f.write(iso8859(u"\n"))
if detected[0:4] == "Mesh":
None
else:
f.write(iso8859(u"Matrix of inertia" + ESCAPE + uniteMs+"^5") + "\n")
f.write(iso8859(ESCAPE + u" X:" + ESCAPE + str(Around(MatrixX1_16)) + ESCAPE +
u" Y:" + ESCAPE + str(Around(MatrixY1_16)) + ESCAPE +
u" Z:" + ESCAPE + str(Around(MatrixZ1_16)) + ESCAPE +
u" :" + ESCAPE + str(Around(Matrix_1)) + "\n"))
f.write(iso8859(ESCAPE + u" X:" + ESCAPE + str(Around(MatrixX2_16)) + ESCAPE +
u" Y:" + ESCAPE + str(Around(MatrixY2_16)) + ESCAPE +
u" Z:" + ESCAPE + str(Around(MatrixZ2_16)) + ESCAPE +
u" :" + ESCAPE + str(Around(Matrix_2)) + "\n"))
f.write(iso8859(ESCAPE + u" X:" + ESCAPE + str(Around(MatrixX3_16)) + ESCAPE +
u" Y:" + ESCAPE + str(Around(MatrixY3_16)) + ESCAPE +
u" Z:" + ESCAPE + str(Around(MatrixZ3_16)) + ESCAPE +
u" :" + ESCAPE + str(Around(Matrix_3)) + "\n"))
f.write(iso8859(ESCAPE + u" X:" + ESCAPE + str(Around(Matrix12)) + ESCAPE +
u" Y:" + ESCAPE + str(Around(Matrix13)) + ESCAPE +
u" Z:" + ESCAPE + str(Around(Matrix14)) + ESCAPE +
u" :" + ESCAPE + str(Around(Matrix15)) + "\n\n"))
f.write(iso8859(u"Matrix inertia massique" + ESCAPE + unitePs + uniteSs) + "\n")
f.write(iso8859(ESCAPE + u" X:" + ESCAPE + str(Around(MatrixX1_17)) + ESCAPE +
u" Y:" + ESCAPE + str(Around(MatrixY1_17)) + ESCAPE +
u" Z:" + ESCAPE + str(Around(MatrixZ1_17)) + "\n"))
f.write(iso8859(ESCAPE + u" X:" + ESCAPE + str(Around(MatrixX2_17)) + ESCAPE +
u" Y:" + ESCAPE + str(Around(MatrixY2_17)) + ESCAPE +
u" Z:" + ESCAPE + str(Around(MatrixZ2_17)) + "\n"))
f.write(iso8859(ESCAPE + u" X:" + ESCAPE + str(Around(MatrixX3_17)) + ESCAPE +
u" Y:" + ESCAPE + str(Around(MatrixY3_17)) + ESCAPE +
u" Z:" + ESCAPE + str(Around(MatrixZ3_17)) + "\n\n"))
f.write(iso8859(u"Matrix Détérminant" + ESCAPE + str(DeterminantM) + "\n"))
f.write(iso8859(u"Détérminant décimal" + ESCAPE + str(decimal.Decimal(DeterminantM)) + "\n\n"))
materiel = materialAssociated[seTMaterialCurrentIndex].rstrip().split(",")
nomMateriel = materiel[0]
densitexMateriel= str(Around(float(materiel[1])))
prixMateriel = str(Around(float(materiel[2])))
infoMateriel = materiel[3]
f.write(iso8859(u"Material" + ESCAPE + "\n"))
f.write(iso8859(u"Name" + ESCAPE + u"Densité" + ESCAPE + u"Volume" + ESCAPE + u"Unit" + ESCAPE + u"Price (kg/dm3)"+ ESCAPE +
u"Coût total" + ESCAPE + u"Devise" + ESCAPE + u"Info" + "\n"))
f.write(iso8859(nomMateriel + ESCAPE + densitexMateriel + ESCAPE + str(Around(volume_ * uniteV)) + ESCAPE + uniteVs + ESCAPE +
prixMateriel + ESCAPE + str(Around(seTMaterialCost)) + ESCAPE + seTMaterialSuffixCost + ESCAPE + infoMateriel + "\n\n"))
f.write(iso8859(u"Fin " + ESCAPE + document_ + "\n"))
f.close()
except Exception:
App_Console_PrintMessage(u"Erreur d'enregistrement du fichier " + SaveName + "\n")
errorDialog(u"Erreur d'enregistrement du fichier " + SaveName)
def on_PB_Ra_clicked(self): # clicked() pressed(), released() Bouton radian/degrees
global uniteAs
global Plan_xy
global Plan_yz
global Plan_zx
Plan_xy2 = 0.0
Plan_yz2 = 0.0
Plan_zx2 = 0.0
choice = self.PB_Ra.text()
if choice == "Degrees": # ne pas traduire
uniteAs = ""
self.PB_Ra.setText(u"DegMinSec") # ne pas traduire
self.PB_Ra.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_DegreesMinSec))) # icone dans une variable
self.LE_8xy.setText(str(degMinSec(Plan_xy))) #angle degesMinutesSecondes
self.LE_8yz.setText(str(degMinSec(Plan_yz)))
self.LE_8zx.setText(str(degMinSec(Plan_zx)))
elif choice == "DegMinSec":# ne pas traduire
uniteAs = " rad"
self.PB_Ra.setText(u"Radian") # ne pas traduire
self.PB_Ra.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Radian))) # icone dans une variable
Plan_xy2 = radians(Plan_xy)
self.LE_8xy.setText(str(Around(Plan_xy2))+uniteAs) # angleRadian
Plan_yz2 = radians(Plan_yz)
self.LE_8yz.setText(str(Around(Plan_yz2))+uniteAs)
Plan_zx2 = radians(Plan_zx)
self.LE_8zx.setText(str(Around(Plan_zx2))+uniteAs)
elif choice == "Radian": # ne pas traduire
uniteAs = " gon"
self.PB_Ra.setText(u"Grade") # ne pas traduire
self.PB_Ra.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Grade))) # icone dans une variable
Plan_xy2 = angleGrade(Plan_xy)
self.LE_8xy.setText(str(Around(Plan_xy2))+uniteAs) #angleGrade
Plan_yz2 = angleGrade(Plan_yz)
self.LE_8yz.setText(str(Around(Plan_yz2))+uniteAs)
Plan_zx2 = angleGrade(Plan_zx)
self.LE_8zx.setText(str(Around(Plan_zx2))+uniteAs)
elif choice == "Grade": # ne pas traduire
uniteAs = u"%"
self.PB_Ra.setText(u"Percent") # ne pas traduire
self.PB_Ra.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Pourcent))) # icone dans une variable
Plan_xy2 = anglePourcent(Plan_xy)
self.LE_8xy.setText(str(Around(Plan_xy2))+uniteAs) #anglePourcent
Plan_yz2 = anglePourcent(Plan_yz)
self.LE_8yz.setText(str(Around(Plan_yz2))+uniteAs)
Plan_zx2 = anglePourcent(Plan_zx)
self.LE_8zx.setText(str(Around(Plan_zx2))+uniteAs)
elif choice == "Percent": # ne pas traduire
uniteAs = " deg"
try:
self.PB_Ra.setText(u"Degrees") # ne pas traduire
self.PB_Ra.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Degrees))) # icone dans une variable
self.LE_8xy.setText(str(Around(Plan_xy))+uniteAs) # angleDegree
self.LE_8yz.setText(str(Around(Plan_yz))+uniteAs)
self.LE_8zx.setText(str(Around(Plan_zx))+uniteAs)
except Exception:
None
def on_CB_01_Info(self):
global switchDisplayInfoObject
global FreeCAD_ParamGetSet
if switchDisplayInfoObject == 0:
switchDisplayInfoObject = 1
else:
switchDisplayInfoObject = 0
FreeCAD_ParamGetSet.SetBool(u"switchDisplayInfoObject", switchDisplayInfoObject) # True or False
def on_CB_02_Point(self):
global switchCreatePoint
global FreeCAD_ParamGetSet
if switchCreatePoint == 0:
switchCreatePoint = 1
else:
switchCreatePoint = 0
FreeCAD_ParamGetSet.SetBool(u"switchCreatePoint", switchCreatePoint) # True or False
def on_CB_03_Axis(self):
global switchCreateAxis
global FreeCAD_ParamGetSet
if switchCreateAxis == 0:
switchCreateAxis = 1
else:
switchCreateAxis = 0
FreeCAD_ParamGetSet.SetBool(u"switchCreateAxis", switchCreateAxis) #*True or False
def on_CB_04_Plane(self):
global switchCreatePlane
global FreeCAD_ParamGetSet
if switchCreatePlane == 0:
switchCreatePlane = 1
else:
switchCreatePlane = 0
FreeCAD_ParamGetSet.SetBool(u"switchCreatePlane", switchCreatePlane) #*True or False
def on_RB_00_ClipBoard(self):
global seTMemoClipBoard
global FreeCAD_ParamGetSet
#self.RB_00_ClipBoard.setChecked(True)
seTMemoClipBoard = 0
FreeCAD_ParamGetSet.SetInt(u"seTMemoClipBoard", seTMemoClipBoard) # 0, 1, 2
def on_RB_01_ClipBoard(self):
global seTMemoClipBoard
global FreeCAD_ParamGetSet
#self.RB_01_ClipBoard.setChecked(True)
seTMemoClipBoard = 1
FreeCAD_ParamGetSet.SetInt(u"seTMemoClipBoard", seTMemoClipBoard) # 0, 1, 2
def on_RB_02_ClipBoard(self):
global seTMemoClipBoard
global FreeCAD_ParamGetSet
#self.RB_02_ClipBoard.setChecked(True)
seTMemoClipBoard = 2
FreeCAD_ParamGetSet.SetInt(u"seTMemoClipBoard", seTMemoClipBoard) # 0, 1, 2
def on_RB_03_ClipBoard(self):
global seTMemoClipBoard
global FreeCAD_ParamGetSet
#self.RB_03_ClipBoard.setChecked(True)
seTMemoClipBoard = 3
FreeCAD_ParamGetSet.SetInt(u"seTMemoClipBoard", seTMemoClipBoard) # 0, 1, 2
def on_CB_05_Position(self):
global FCmw
global seTPositionFlyRightLeft
global seTWidgetPosition
global FreeCAD_ParamGetSet
if seTPositionFlyRightLeft != 1:
if self.CB_05_Position.isChecked():
FCmw.addDockWidget(QtCore.Qt.LeftDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window Left
FreeCAD_ParamGetSet.SetInt(u"seTPositionFlyRightLeft", 3) #*1, 2, other
FreeCAD_ParamGetSet.SetBool(u"seTWidgetPosition", True) # True or False
seTPositionFlyRightLeft = 3
seTWidgetPosition = True
else:
FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget)# add the widget to the main window Right
FreeCAD_ParamGetSet.SetInt(u"seTPositionFlyRightLeft", 2) #*1, 2, other
FreeCAD_ParamGetSet.SetBool(u"seTWidgetPosition", False) # True or False
seTPositionFlyRightLeft = 2
seTWidgetPosition = False
def on_ZeroInfo(self): # reset to 0
global typeObject
global diffuseColorRF, diffuseColorVF, diffuseColorBF, diffuseColorTF, unsignedEncodeColor
global longueurObjet, rayonObjet, perimetre, typeLongueur, numberEdges
global Plan_xy, Plan_xy_V, Plan_yz, Plan_yz_V, Plan_zx, Plan_zx_V
global surface,surfaceFace,volume_,seTDensiteValue,poids,uniteM, uniteMs, uniteS, uniteSs, uniteV, uniteVs, uniteP, unitePs, uniteAs
global boundBoxCenterX, boundBoxCenterY, boundBoxCenterZ, CenterOfMassX, CenterOfMassY, CenterOfMassZ
global boundBoxLX, boundBoxLY, boundBoxLZ, boundBox_S
global MatrixX1, MatrixY1, MatrixZ1, Matrix_1
global MatrixX2, MatrixY2, MatrixZ2, Matrix_2
global MatrixX3, MatrixY3, MatrixZ3, Matrix_3
global Matrix12, Matrix13, Matrix14, Matrix15
global Vertx, Edges, EdgesLong, Faces, FacesSurf, FacesCoor, compt_E, compt_F, compt_VF, RowCountTest, ESCAPE, directionObj, direcValueAt, direcNormalAt
global MatrixX1_16, MatrixY1_16, MatrixZ1_16, MatrixX2_16, MatrixY2_16, MatrixZ2_16, MatrixX3_16, MatrixY3_16, MatrixZ3_16
global MatrixX1_17, MatrixY1_17, MatrixZ1_17, MatrixX2_17, MatrixY2_17, MatrixZ2_17, MatrixX3_17, MatrixY3_17, MatrixZ3_17
global DeterminantM
global seTMaterialPrice, seTMaterialCost, seTMaterialSuffixCost
global seTIndexUnitLength
global BsplineNombreDeNoeuds, BsplineRayonApproximatif, BsplineNumberElement, BsplineCutLength, setBSplineToByArcValue, BSplinetoByArcValeurS
global transparenceFace
global typeNormalAt
global nombreArretesMesh
global nombreFacesMesh
global nombrePointsMesh
####
transparenceFace = 0
longueurObjet = rayonObjet = perimetre = 0.0
numberEdges = 0
nombreArretesMesh = nombreFacesMesh = nombrePointsMesh = 0
diffuseColorRF = diffuseColorVF = diffuseColorBF = diffuseColorTF = unsignedEncodeColor = 0.0
surface = surfaceFace = volume_ = poids = 0.0
Plan_xy = Plan_yz = Plan_zx = 0.0
Plan_xy_V = Plan_yz_V = Plan_zx_V = ""
MatrixX1 = MatrixY1 = MatrixZ1 = Matrix_1 = 0.0
MatrixX2 = MatrixY2 = MatrixZ2 = Matrix_2 = 0.0
MatrixX3 = MatrixY3 = MatrixZ3 = Matrix_3 = 0.0
Matrix12 = Matrix13 = Matrix14 = Matrix15 = 0.0
directionObj = direcValueAt = direcNormalAt = "[]"
MatrixX1_16 = MatrixY1_16 = MatrixZ1_16 = MatrixX2_16 = MatrixY2_16 = MatrixZ2_16 = MatrixX3_16 = MatrixY3_16 = MatrixZ3_16 = 0.0
MatrixX1_17 = MatrixY1_17 = MatrixZ1_17 = MatrixX2_17 = MatrixY2_17 = MatrixZ2_17 = MatrixX3_17 = MatrixY3_17 = MatrixZ3_17 = 0.0
DeterminantM = 0.0
####
self.LE_N_Edges.setText(str(nombreArretesMesh))
self.LE_N_Facets.setText(str(nombreFacesMesh))
self.LE_N_Points.setText(str(nombrePointsMesh))
self.LE_CRed.setText(str(Around(diffuseColorRF)))
self.LE_CGreen.setText(str(Around(diffuseColorVF)))
self.LE_CBlue.setText(str(Around(diffuseColorBF)))
self.LE_Transparent.setText(str(Around(diffuseColorTF)))
self.LE_ConversionUnsigned.setText(str(unsignedEncodeColor))
self.LE_9_Direction.setText(str(directionObj))
self.LE_10_ValueAt.setText(str(direcValueAt))
self.LE_10b_NormalAt.setText(str(direcNormalAt))
self.PB_Line_NormalAT.setText(typeNormalAt)
self.SBox_Transparence.setValue(transparenceFace)
self.LE_007_BB_01_XLength.setText(str(Around(boundBoxLX * uniteM)) + " " + uniteMs)
self.LE_007_BB_02_YLength.setText(str(Around(boundBoxLY * uniteM)) + " " + uniteMs)
self.LE_007_BB_03_ZLength.setText(str(Around(boundBoxLZ * uniteM)) + " " + uniteMs)
self.LE_007_BB_04_Diagonal.setText(str(Around(boundBoxDiag * uniteM)) + " " + uniteMs)
boundBox_S = "[X: "+str(Around(boundBoxLX * uniteM)) + " " + uniteMs+"] x [Y: "+str(Around(boundBoxLY * uniteM)) + " " + uniteMs+"] x [Z: "+str(Around(boundBoxLZ * uniteM)) + " " + uniteMs+"] Diagonal: " + str(Around(boundBoxDiag * uniteM)) + " " + uniteMs
self.LE_6.setText(str(Around(float(perimetre) * float(uniteM))) + " " +uniteMs)
self.LE_8xy.setText(str(Around(Plan_xy))+uniteAs)
self.LE_8xya.setText(str(Plan_xy_V))
self.LE_8yz.setText(str(Around(Plan_yz))+uniteAs)
self.LE_8yza.setText(str(Plan_yz_V))
self.LE_8zx.setText(str(Around(Plan_zx))+uniteAs)
self.LE_8zxa.setText(str(Plan_zx_V))
self.LE_9a.setText(str(Around(surface * uniteS)) + " " + uniteSs)
self.LE_10a.setText(str(Around(surfaceFace * uniteS)) + " " + uniteSs)
self.LE_11a.setText(str(Around(volume_ * uniteV)) + " " + uniteVs)
self.LE_12a.setText(str(Around(poids)) + " " + unitePs)
self.LE_Cost.setText(str(Around(seTMaterialCost)) + seTMaterialSuffixCost) #CostMaterial
self.LE_13x.setText(str(Around(boundBoxCenterX * uniteM)) + " " + uniteMs)
self.LE_13y.setText(str(Around(boundBoxCenterY * uniteM)) + " " + uniteMs)
self.LE_13z.setText(str(Around(boundBoxCenterZ * uniteM)) + " " + uniteMs)
self.LE_14x.setText(str(Around(CenterOfMassX * uniteM)) + " " + uniteMs)
self.LE_14y.setText(str(Around(CenterOfMassY * uniteM)) + " " + uniteMs)
self.LE_14z.setText(str(Around(CenterOfMassZ * uniteM)) + " " + uniteMs)
self.LE_007_BB_01_XLength.setText(str(Around(boundBoxLX * uniteM)) + " " + uniteMs)
self.LE_007_BB_02_YLength.setText(str(Around(boundBoxLY * uniteM)) + " " + uniteMs)
self.LE_007_BB_03_ZLength.setText(str(Around(boundBoxLZ * uniteM)) + " " + uniteMs)
self.LE_007_BB_04_Diagonal.setText(str(Around(boundBoxDiag * uniteM)) + " " + uniteMs)
self.LE_16_1x.setText(str(Around(MatrixX1_16)))
self.LE_16_1y.setText(str(Around(MatrixY1_16)))
self.LE_16_1z.setText(str(Around(MatrixZ1_16)))
self.LE_16_01.setText(str(Around(Matrix_1)))
self.LE_16_2x.setText(str(Around(MatrixX2_16)))
self.LE_16_2y.setText(str(Around(MatrixY2_16)))
self.LE_16_2z.setText(str(Around(MatrixZ2_16)))
self.LE_16_02.setText(str(Around(Matrix_2)))
self.LE_16_3x.setText(str(Around(MatrixX3_16)))
self.LE_16_3y.setText(str(Around(MatrixY3_16)))
self.LE_16_3z.setText(str(Around(MatrixZ3_16)))
self.LE_16_03.setText(str(Around(Matrix_3)))
self.LE_16_4x.setText(str(Around(Matrix12)))
self.LE_16_4y.setText(str(Around(Matrix13)))
self.LE_16_4z.setText(str(Around(Matrix14)))
self.LE_16_04.setText(str(Around(Matrix15)))
self.LE_17_1x.setText(str(Around(MatrixX1_17)))
self.LE_17_1y.setText(str(Around(MatrixY1_17)))
self.LE_17_1z.setText(str(Around(MatrixZ1_17)))
self.LE_17_2x.setText(str(Around(MatrixX2_17)))
self.LE_17_2y.setText(str(Around(MatrixY2_17)))
self.LE_17_2z.setText(str(Around(MatrixZ2_17)))
self.LE_17_3x.setText(str(Around(MatrixX3_17)))
self.LE_17_3y.setText(str(Around(MatrixY3_17)))
self.LE_17_3z.setText(str(Around(MatrixZ3_17)))
self.LE_18_determinant.setText(str(DeterminantM))
self.LE_18_determinantDecim.setText(str(decimal.Decimal(DeterminantM)))
ui.paletteBase()
def on_PB_05_Help_Forum_clicked(self):# Help Forum
self.PB_05_Help_Forum.setStyleSheet(u"QPushButton {background-color: QPalette.Base}") #red
try:
webbrowser.open(__Forum2__)
except Exception:
self.PB_05_Help_Forum.setStyleSheet(u"QPushButton {border-width: 2px; border-style: solid; border-color: red}") #red
def on_PB_06_Help_Wiki(self): # Help Wiki
self.PB_06_Help_Wiki.setStyleSheet(u"QPushButton {background-color: QPalette.Base}") #red
try:
webbrowser.open(__Wiki__)
except Exception:
self.PB_06_Help_Wiki.setStyleSheet(u"QPushButton {border-width: 2px; border-style: solid; border-color: red}") #red
#### Spreadsheet debut ################################################################################################
def decodeColonne(self, colonne = "A"): # converti la chaine A ... ZZ en numero de colonne ex: A = 1; AA = 27
colonne = re.split('[0-9]+', colonne, flags=re.IGNORECASE)[0] # supp the alphanumeric number ex: A2 = A; A12 = A (1A return 0)
try:
if len(colonne) > 1:
return ((ord(colonne[0].upper()) - 64) * 26 ) + (ord(colonne[1].upper()) - 64) # max 2 car (AAAA return 27)
else:
return (ord(colonne.upper()) - 64 )
except Exception:
return 0
def decodeOccupation(self, dataTableau = ""): # decode the max occupation Colonnes, Lines and give the cell occupation
#
#lineMax, colonneMax, cellsOccupation = decodeOccupation(FreeCAD.ActiveDocument.getObject(str(Sheet.Name)))
#
# try:
tyty = dataTableau.cells.Content
tyty = tyty.split(">")
####
cellsOccupation = []
cellsSorted = [] # search the "A1" definition
for i in tyty[1:-2]:
i = i[i.find('"')+1:] # split les cases dans la chaine XML
i = i[:i.find('"')]
if (i[0] >= "A") and (i[0]<="Z"): # doit etre une lettre A a Z ( >= 0.18)
cellsOccupation.append(i)
cellsSorted = copy.deepcopy(cellsOccupation)
cellsSorted.sort()
####
linesMax = 0
for i in cellsSorted: # recherche le max (ligne et colonne)
colonnesMax = re.split('[0-9]+', i, flags=re.IGNORECASE) # colonne max (AA)
dummy = int(re.split('[A-Z]+', i, flags=re.IGNORECASE)[1]) # line
if dummy > linesMax:
linesMax = dummy # lines max
del cellsSorted[:]
####
return linesMax, self.decodeColonne(colonnesMax[0]), cellsOccupation # return linesMax , colonnesMax, cellsOccupation
# except Exception:
# App_Console_PrintError("Error data, Enter object <Sheet object> ex:")
# App_Console_PrintError("lineMax, colonneMax, cellsOccupation = decodeOccupation(FreeCAD.ActiveDocument.getObject(str(Sheet.Name)))")
# return 0, 0, []
def caseTableau(self, ligne = 1, colonne = 1): # calcule et code la case du tableur ex caseTableau(1, 2) return B1
if ligne < 1: ligne = 1
if ligne > 16384: ligne = 16384
if colonne < 1: colonne = 1
if colonne > 702: colonne = 702
if (colonne > 26):
if abs(colonne % 26) == 0:
return chr(64 + (abs(int(colonne / 26)) -1)) + chr(90) + str(ligne)
else:
return chr(64 + (abs(int(colonne / 26)))) + chr(64 + (abs(colonne % 26))) + str(ligne)
else:
return chr(colonne + 64) + str(ligne)
def on_PB_SpreadSheet_clicked(self):
global newSpreadSheetName #; newSpreadSheetName = "FCSpreadSheet"
self.ComboB_SpreadSheet.clear()
for i in FreeCAD.ActiveDocument.Objects: # reload for search all SpreadSheet
obj = FreeCAD.ActiveDocument.getObject(i.Name).TypeId.split("::")[0]
if obj == "Spreadsheet":
self.ComboB_SpreadSheet.addItem(_fromUtf8(str(i.Name)))
App.activeDocument().recompute(None,True,True)#
def On_ComboB_SpreadSheet(self, text):
global newSpreadSheetName
newSpreadSheetName = text
self.LE_SpreadSheet.setText(newSpreadSheetName)
def on_LE_SpreadSheet_Pressed(self, text):
global newSpreadSheetName
newSpreadSheetName = text
App.activeDocument().recompute(None,True,True)#
def on_PB_03_Create_SpreadSheet_clicked(self): # create spreadSheet project
global document_
global object_Label
global object_Name
global typeObject
global object_Type
global subElemName
global position0
global position1
global position2
global longueurObjet
global rayonObjet
global detected
global perimetre
global diffuseColorRF
global diffuseColorVF
global diffuseColorBF
global diffuseColorTF
global Plan_xy_V
global Plan_yz_V
global Plan_zx_V
global surface
global surfaceFace
global volume_
global seTDensiteValue
global poids
global uniteM
global uniteMs
global uniteS
global uniteSs
global uniteV
global uniteVs
global unitePs
global boundBoxCenterX
global boundBoxCenterY
global boundBoxCenterZ
global CenterOfMassX
global CenterOfMassY
global CenterOfMassZ
global boundBoxLX
global boundBoxLY
global boundBoxLZ
global Vertx
global Edges
global EdgesLong
global Faces
global FacesSurf
global FacesCoor
global compt_E
global compt_F
global compt_VF
global RowCountTest
global path
global SaveName
global directionObj
global direcValueAt
global direcNormalAt
global Matrix_1
global Matrix_2
global Matrix_3
global Matrix12
global Matrix13
global Matrix14
global Matrix15
global DeterminantM
global MatrixX1_16
global MatrixY1_16
global MatrixZ1_16
global MatrixX2_16
global MatrixY2_16
global MatrixZ2_16
global MatrixX3_16
global MatrixY3_16
global MatrixZ3_16
global MatrixX1_17
global MatrixY1_17
global MatrixZ1_17
global MatrixX2_17
global MatrixY2_17
global MatrixZ2_17
global MatrixX3_17
global MatrixY3_17
global MatrixZ3_17
global typeLongueur
global nombreArretesMesh
global nombreFacesMesh
global nombrePointsMesh
global colorShapeFaceDiffuseColor
global BsplineDetect
global BsplineNombreDeNoeuds
global BsplinePointsCoor
global seTMaterialCost
global seTMaterialPrice
global seTMaterialSuffixCost
global materialAssociated
global seTMaterialCurrentIndex
global setPathLatestDirectory
global newSpreadSheetName
global TextColorText_R ; TextColorText_R = 0.627451 # color red 1 = 255
global TextColorText_G ; TextColorText_G = 0.627451 # color green 1 = 255
global TextColorText_B ; TextColorText_B = 0.643137 # color blue 1 = 255
global TextColorText_L ; TextColorText_L = 1.000000 # color blue 1 = 255
ligne = 1
colonne = 1
tableau = ""
try:
tableau = FreeCAD.ActiveDocument.getObjectsByLabel(newSpreadSheetName)[0] # for append in existant SpreadSheet
ligne = self.decodeOccupation(tableau)[0] + 1
except Exception:
tableau = App.activeDocument().addObject('Spreadsheet::Sheet',newSpreadSheetName)# for create SpreadSheet
self.on_PB_SpreadSheet_clicked()
# try:
tableau.set(self.caseTableau(ligne,colonne), (u"Information de l'élement"))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
tableau.setBackground(self.caseTableau(ligne,colonne+1), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
tableau.setBackground(self.caseTableau(ligne,colonne+2), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"________________________"))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (dateEu() + " "+ heure()))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Nom du document")); tableau.set(self.caseTableau(ligne,colonne+1), document_)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Label de l'objet")); tableau.set(self.caseTableau(ligne,colonne+1), object_Label)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Nom interne de l'objet")); tableau.set(self.caseTableau(ligne,colonne+1), object_Name)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Nom de l'élément")); tableau.set(self.caseTableau(ligne,colonne+1), str(subElemName))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Type d'objet (Shape)")); tableau.set(self.caseTableau(ligne,colonne+1), typeObject)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Type d'objet")); tableau.set(self.caseTableau(ligne,colonne+1), object_Type)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Coordonnées de la souris")); tableau.set(self.caseTableau(ligne,colonne+1), u"X"); tableau.set(self.caseTableau(ligne,colonne+2), str(Around(position0 * uniteM))); tableau.set(self.caseTableau(ligne,colonne+3), uniteMs); tableau.set(self.caseTableau(ligne,colonne+4),u"Y"); tableau.set(self.caseTableau(ligne,colonne+5), str(Around(position1 * uniteM))); tableau.set(self.caseTableau(ligne,colonne+6), uniteMs); tableau.set(self.caseTableau(ligne,colonne+7), u"Z"); tableau.set(self.caseTableau(ligne,colonne+8), str(Around(position2 * uniteM))); tableau.set(self.caseTableau(ligne,colonne+9), uniteMs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
#### couleurs
tableau.set(self.caseTableau(ligne,colonne), (u"Couleur sur la sélection"))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Rouge")); tableau.set(self.caseTableau(ligne,colonne+1), str(int(diffuseColorRF*255.0))); tableau.set(self.caseTableau(ligne,colonne+2),u"Vert"); tableau.set(self.caseTableau(ligne,colonne+3), str(int(diffuseColorVF*255.0))); tableau.set(self.caseTableau(ligne,colonne+4),u"Bleu"); tableau.set(self.caseTableau(ligne,colonne+5), str(int(diffuseColorBF*255.0))); tableau.set(self.caseTableau(ligne,colonne+6), u"Transparence"); tableau.set(self.caseTableau(ligne,colonne+7), str(int(diffuseColorTF*255.0)))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
if len(colorShapeFace) != 0:
tableau.set(self.caseTableau(ligne,colonne), (u"Couleur Objet (float) ")); tableau.set(self.caseTableau(ligne,colonne+1), u"Rouge"); tableau.set(self.caseTableau(ligne,colonne+2), str(colorShapeFace[0])); tableau.set(self.caseTableau(ligne,colonne+3), u"Vert" ); tableau.set(self.caseTableau(ligne,colonne+4), str(colorShapeFace[1])); tableau.set(self.caseTableau(ligne,colonne+5), u"Bleu"); tableau.set(self.caseTableau(ligne,colonne+6), str(colorShapeFace[2])); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparence"); tableau.set(self.caseTableau(ligne,colonne+8), str(colorShapeFace[3]))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Couleur Objet (int ) ")); tableau.set(self.caseTableau(ligne,colonne+1), u"Rouge"); tableau.set(self.caseTableau(ligne,colonne+2), str(int(colorShapeFace[0]*255.0))); tableau.set(self.caseTableau(ligne,colonne+3), u"Vert" ); tableau.set(self.caseTableau(ligne,colonne+4), str(int(colorShapeFace[1]*255.0))); tableau.set(self.caseTableau(ligne,colonne+5), u"Bleu"); tableau.set(self.caseTableau(ligne,colonne+6), str(int(colorShapeFace[2]*255.0))); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparence"); tableau.set(self.caseTableau(ligne,colonne+8), str(int(colorShapeFace[3]*255.0)))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
if len(colorShapeLine) != 0:
tableau.set(self.caseTableau(ligne,colonne), (u"Couleur Ligne(s) (float) ")); tableau.set(self.caseTableau(ligne,colonne+1), u"Rouge"); tableau.set(self.caseTableau(ligne,colonne+2), str(colorShapeLine[0])); tableau.set(self.caseTableau(ligne,colonne+3), u"Vert" ); tableau.set(self.caseTableau(ligne,colonne+4), str(colorShapeLine[1])); tableau.set(self.caseTableau(ligne,colonne+5), u"Bleu"); tableau.set(self.caseTableau(ligne,colonne+6), str(colorShapeLine[2])); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparence"); tableau.set(self.caseTableau(ligne,colonne+8), str(colorShapeLine[3]))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Couleur Ligne(s) (int ) ")); tableau.set(self.caseTableau(ligne,colonne+1), u"Rouge"); tableau.set(self.caseTableau(ligne,colonne+2), str(int(colorShapeLine[0]*255.0))); tableau.set(self.caseTableau(ligne,colonne+3), u"Vert" ); tableau.set(self.caseTableau(ligne,colonne+4), str(int(colorShapeLine[1]*255.0))); tableau.set(self.caseTableau(ligne,colonne+5), u"Bleu"); tableau.set(self.caseTableau(ligne,colonne+6), str(int(colorShapeLine[2]*255.0))); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparence"); tableau.set(self.caseTableau(ligne,colonne+8), str(int(colorShapeLine[3]*255.0)))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
if len(colorShapePoint) != 0:
try:
tableau.set(self.caseTableau(ligne,colonne), (u"Couleur Point(s) (float) ")); tableau.set(self.caseTableau(ligne,colonne+1), u"Rouge"); tableau.set(self.caseTableau(ligne,colonne+2), str(colorShapePoint[0])); tableau.set(self.caseTableau(ligne,colonne+3), u"Vert" ); tableau.set(self.caseTableau(ligne,colonne+4), str(colorShapePoint[1])); tableau.set(self.caseTableau(ligne,colonne+5), u"Bleu"); tableau.set(self.caseTableau(ligne,colonne+6), str(colorShapePoint[2])); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparence"); tableau.set(self.caseTableau(ligne,colonne+8), str(colorShapePoint[3]))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Couleur Point(s) (int ) ")); tableau.set(self.caseTableau(ligne,colonne+1), u"Rouge"); tableau.set(self.caseTableau(ligne,colonne+2), str(int(colorShapePoint[0]*255.0))); tableau.set(self.caseTableau(ligne,colonne+3), u"Vert" ); tableau.set(self.caseTableau(ligne,colonne+4), str(int(colorShapePoint[1]*255.0))); tableau.set(self.caseTableau(ligne,colonne+5), u"Bleu"); tableau.set(self.caseTableau(ligne,colonne+6), str(int(colorShapePoint[2]*255.0))); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparence"); tableau.set(self.caseTableau(ligne,colonne+8), str(int(colorShapePoint[3]*255.0)))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
except Exception:
None
tableau.set(self.caseTableau(ligne,colonne), (typeLongueur)); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(longueurObjet * uniteM))); tableau.set(self.caseTableau(ligne,colonne+2), uniteMs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
if detected[0:4] == "Mesh":
tableau.set(self.caseTableau(ligne,colonne), (u"Composants Mesh"))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"_______________"))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Nombre d'Arrêtes")); tableau.set(self.caseTableau(ligne,colonne+1), str(nombreArretesMesh))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Nombre de Faces")); tableau.set(self.caseTableau(ligne,colonne+1), str(nombreFacesMesh))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Nombre de Points")); tableau.set(self.caseTableau(ligne,colonne+1), str(nombrePointsMesh))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
if detected == "<PointKernel object>":
tableau.set(self.caseTableau(ligne,colonne), (u"Composants Points"))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"_________________"))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Nombre de Points")); tableau.set(self.caseTableau(ligne,colonne+1), str(nombrePointsMesh))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
#### detail of Cercle
if rayonObjet != 0.0:
tableau.set(self.caseTableau(ligne,colonne), (u"Rayon de l'objet")); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(rayonObjet * uniteM))); tableau.set(self.caseTableau(ligne,colonne+2), uniteMs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Périmètre de la forme")); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(perimetre * uniteM))); tableau.set(self.caseTableau(ligne,colonne+2), uniteMs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
if self.GBox_012_SpreadSheet.isChecked():
#### detail of Cercle BSpline begin
if (str(BsplineDetect) == "<BSplineCurve object>"):
tableau.set(self.caseTableau(ligne,colonne), (u"Nombre de noeuds")); tableau.set(self.caseTableau(ligne,colonne+1), str(BsplineNombreDeNoeuds))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
for i in enumerate(BsplinePointsCoor): # nombre de points noeuds
tableau.set(self.caseTableau(ligne,colonne), (u"Noeud" + str(i[0]))); tableau.set(self.caseTableau(ligne,colonne+1), u"X" + str(i[0] + 1)); tableau.set(self.caseTableau(ligne,colonne+2), str(Around(i[1][0]))); tableau.set(self.caseTableau(ligne,colonne+3), u"Y" + str(i[0] + 1)); tableau.set(self.caseTableau(ligne,colonne+4), str(Around(i[1][1]))); tableau.set(self.caseTableau(ligne,colonne+5), u"Z" + str(i[0] + 1)); tableau.set(self.caseTableau(ligne,colonne+6), str(Around(i[1][2])))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
ligne += 1
#### detail of Cercle BSpline end
tableau.set(self.caseTableau(ligne,colonne), (u"Vertexes et détails")); tableau.set(self.caseTableau(ligne,colonne+1), u" Nombre de Bords"); tableau.set(self.caseTableau(ligne,colonne+2), str(compt_E)); tableau.set(self.caseTableau(ligne,colonne+3), u" Nombre de Faces"); tableau.set(self.caseTableau(ligne,colonne+4), str(compt_F)); tableau.set(self.caseTableau(ligne,colonne+5), u" Number Vertexes faces"); tableau.set(self.caseTableau(ligne,colonne+6), str(compt_VF)); tableau.set(self.caseTableau(ligne,colonne+7), u" Détail Total"); tableau.set(self.caseTableau(ligne,colonne+8), str(RowCountTest))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
co = 0
aa = 0
for j in enumerate(Edges):
tableau.set(self.caseTableau(ligne,colonne), (str(j[1]))); tableau.set(self.caseTableau(ligne,colonne+1), (str(Around(float(EdgesLong[co]) * float(uniteM))))); tableau.set(self.caseTableau(ligne,colonne+2), uniteMs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
co+=1
for a in range(aa,aa+6):
try:
chaine = str(Vertx[a]).split(":")
tableau.set(self.caseTableau(ligne,colonne), (chaine[0])); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(float(chaine[1]) * float(uniteM)))); tableau.set(self.caseTableau(ligne,colonne+2), uniteMs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
except Exception:
None
aa += 6
ligne += 1
ligne += 1
co = 0
cco = 0
co2 = 0
for j in enumerate(Faces):
tableau.set(self.caseTableau(ligne,colonne), str(j[1])); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(float(FacesSurf[co]) * float(uniteS)))); tableau.set(self.caseTableau(ligne,colonne+2), uniteSs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
co += 1
if len(colorShapeFaceDiffuseColor) != 0:
tableau.set(self.caseTableau(ligne,colonne), (u"Couleur float Face" + str(j[0]+1))); tableau.set(self.caseTableau(ligne,colonne+1), u"Rouge"); tableau.set(self.caseTableau(ligne,colonne+2), str(colorShapeFaceDiffuseColor[j[0]][0])); tableau.set(self.caseTableau(ligne,colonne+3), u"Vert "); tableau.set(self.caseTableau(ligne,colonne+4), str(colorShapeFaceDiffuseColor[j[0]][1])); tableau.set(self.caseTableau(ligne,colonne+5), u"Bleu "); tableau.set(self.caseTableau(ligne,colonne+6), str(colorShapeFaceDiffuseColor[j[0]][2])); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparent"); tableau.set(self.caseTableau(ligne,colonne+8), str(colorShapeFaceDiffuseColor[j[0]][3]))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Couleur integer Face" + str(j[0]+1))); tableau.set(self.caseTableau(ligne,colonne+1), u"Rouge"); tableau.set(self.caseTableau(ligne,colonne+2), str(int(colorShapeFaceDiffuseColor[j[0]][0]*255.0))); tableau.set(self.caseTableau(ligne,colonne+3), u"Vert "); tableau.set(self.caseTableau(ligne,colonne+4), str(int(colorShapeFaceDiffuseColor[j[0]][1]*255.0))); tableau.set(self.caseTableau(ligne,colonne+5), u"Bleu "); tableau.set(self.caseTableau(ligne,colonne+6), str(int(colorShapeFaceDiffuseColor[j[0]][2]*255.0))); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparent"); tableau.set(self.caseTableau(ligne,colonne+8), str(int(colorShapeFaceDiffuseColor[j[0]][3]*255.0)))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
for jj in range(cco,len(FacesCoor)):# Faces coordinates
cco+=1
if FacesCoor[jj] == "T":
ligne += 1
break
else:
chaine = str(FacesCoor[jj]).split(":")
tableau.set(self.caseTableau(ligne,colonne), (chaine[0])); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(float(chaine[1]) * float(uniteM)))); tableau.set(self.caseTableau(ligne,colonne+2), uniteMs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
co2 += 1
if co2 == 3:
ligne += 1
co2 = 0
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Plan")); tableau.set(self.caseTableau(ligne,colonne+1), u" XY:"); tableau.set(self.caseTableau(ligne,colonne+2), self.LE_8xy.text()); tableau.set(self.caseTableau(ligne,colonne+3), u" coordinates:"); tableau.set(self.caseTableau(ligne,colonne+4), str(Plan_xy_V))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Plan")); tableau.set(self.caseTableau(ligne,colonne+1), u" YZ:"); tableau.set(self.caseTableau(ligne,colonne+2), self.LE_8yz.text()); tableau.set(self.caseTableau(ligne,colonne+3), u" coordinates:"); tableau.set(self.caseTableau(ligne,colonne+4), str(Plan_yz_V))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Plan")); tableau.set(self.caseTableau(ligne,colonne+1), u" ZX:"); tableau.set(self.caseTableau(ligne,colonne+2), self.LE_8zx.text()); tableau.set(self.caseTableau(ligne,colonne+3), u" coordinates:"); tableau.set(self.caseTableau(ligne,colonne+4), str(Plan_zx_V))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Surface de la forme")); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(surface * uniteS))); tableau.set(self.caseTableau(ligne,colonne+2), uniteSs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Surface de la face")); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(surfaceFace * uniteS))); tableau.set(self.caseTableau(ligne,colonne+2), uniteSs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Volume de la forme")); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(volume_ * uniteV))); tableau.set(self.caseTableau(ligne,colonne+2), uniteVs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Poids")); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(poids))); tableau.set(self.caseTableau(ligne,colonne+2), unitePs); tableau.set(self.caseTableau(ligne,colonne+3), u" Density:"); tableau.set(self.caseTableau(ligne,colonne+4), str(Around(seTDensiteValue)))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Centre de la forme")); tableau.set(self.caseTableau(ligne,colonne+1), u" X:"); tableau.set(self.caseTableau(ligne,colonne+2), str(Around(boundBoxCenterX * uniteM))); tableau.set(self.caseTableau(ligne,colonne+3), uniteMs); tableau.set(self.caseTableau(ligne,colonne+4), u" Y:"); tableau.set(self.caseTableau(ligne,colonne+5), str(Around(boundBoxCenterY * uniteM))); tableau.set(self.caseTableau(ligne,colonne+6), uniteMs); tableau.set(self.caseTableau(ligne,colonne+7), u" Z:"); tableau.set(self.caseTableau(ligne,colonne+8), str(Around(boundBoxCenterZ * uniteM))); tableau.set(self.caseTableau(ligne,colonne+9), uniteMs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Centre de la masse")); tableau.set(self.caseTableau(ligne,colonne+1), u" X:"); tableau.set(self.caseTableau(ligne,colonne+2), str(Around(CenterOfMassX * uniteM))); tableau.set(self.caseTableau(ligne,colonne+3), uniteMs); tableau.set(self.caseTableau(ligne,colonne+4), u" Y:"); tableau.set(self.caseTableau(ligne,colonne+5), str(Around(CenterOfMassY * uniteM))); tableau.set(self.caseTableau(ligne,colonne+6), uniteMs); tableau.set(self.caseTableau(ligne,colonne+7), u" Z:"); tableau.set(self.caseTableau(ligne,colonne+8), str(Around(CenterOfMassZ * uniteM))); tableau.set(self.caseTableau(ligne,colonne+9), uniteMs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Dimensions hors tout")); tableau.set(self.caseTableau(ligne,colonne+1), u" X:"); tableau.set(self.caseTableau(ligne,colonne+2), str(Around(boundBoxLX * uniteM))); tableau.set(self.caseTableau(ligne,colonne+3), uniteMs); tableau.set(self.caseTableau(ligne,colonne+4), u" Y:"); tableau.set(self.caseTableau(ligne,colonne+5), str(Around(boundBoxLY * uniteM))); tableau.set(self.caseTableau(ligne,colonne+6), uniteMs); tableau.set(self.caseTableau(ligne,colonne+7), u" Z:"); tableau.set(self.caseTableau(ligne,colonne+8), str(Around(boundBoxLZ * uniteM))); tableau.set(self.caseTableau(ligne,colonne+9), uniteMs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Dimensions de la diagonale")); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(boundBoxDiag * uniteM))); tableau.set(self.caseTableau(ligne,colonne+2), uniteMs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
if directionObj != "[]":
tableau.set(self.caseTableau(ligne,colonne), (u"Direction")); tableau.set(self.caseTableau(ligne,colonne+1), u" X:"); tableau.set(self.caseTableau(ligne,colonne+2), str(Around(directionObj[0]))); tableau.set(self.caseTableau(ligne,colonne+3), u" Y:"); tableau.set(self.caseTableau(ligne,colonne+4), str(Around(directionObj[1]))); tableau.set(self.caseTableau(ligne,colonne+5), u" Z:"); tableau.set(self.caseTableau(ligne,colonne+6), str(Around(directionObj[2])))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
if direcValueAt != "[]":
tableau.set(self.caseTableau(ligne,colonne), (u"ValueAt")); tableau.set(self.caseTableau(ligne,colonne+1), u" X:"); tableau.set(self.caseTableau(ligne,colonne+2), str(Around(direcValueAt[0]))); tableau.set(self.caseTableau(ligne,colonne+3), u" Y:"); tableau.set(self.caseTableau(ligne,colonne+4), str(Around(direcValueAt[1]))); tableau.set(self.caseTableau(ligne,colonne+5), u" Z:"); tableau.set(self.caseTableau(ligne,colonne+6), str(Around(direcValueAt[2])))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
if direcNormalAt != "[]":
tableau.set(self.caseTableau(ligne,colonne), (u"NormalAt")); tableau.set(self.caseTableau(ligne,colonne+1), u" X:"); tableau.set(self.caseTableau(ligne,colonne+2), str(Around(direcNormalAt[0]))); tableau.set(self.caseTableau(ligne,colonne+3), u" Y:"); tableau.set(self.caseTableau(ligne,colonne+4), str(Around(direcNormalAt[1]))); tableau.set(self.caseTableau(ligne,colonne+5), u" Z:"); tableau.set(self.caseTableau(ligne,colonne+6), str(Around(direcNormalAt[2])))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
ligne += 1
if detected[0:4] == "Mesh":
None
else:
tableau.set(self.caseTableau(ligne,colonne), (u"Matrix of inertia")); tableau.set(self.caseTableau(ligne,colonne+1), uniteMs+"^5")
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u" X:")); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(MatrixX1_16))); tableau.set(self.caseTableau(ligne,colonne+2), u" Y:"); tableau.set(self.caseTableau(ligne,colonne+3), str(Around(MatrixY1_16))); tableau.set(self.caseTableau(ligne,colonne+4), u" Z:"); tableau.set(self.caseTableau(ligne,colonne+5), str(Around(MatrixZ1_16))); tableau.set(self.caseTableau(ligne,colonne+6), u" :"); tableau.set(self.caseTableau(ligne,colonne+7), str(Around(Matrix_1)))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u" X:")); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(MatrixX2_16))); tableau.set(self.caseTableau(ligne,colonne+2), u" Y:"); tableau.set(self.caseTableau(ligne,colonne+3), str(Around(MatrixY2_16))); tableau.set(self.caseTableau(ligne,colonne+4), u" Z:"); tableau.set(self.caseTableau(ligne,colonne+5), str(Around(MatrixZ2_16))); tableau.set(self.caseTableau(ligne,colonne+6), u" :"); tableau.set(self.caseTableau(ligne,colonne+7), str(Around(Matrix_2)))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u" X:")); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(MatrixX3_16))); tableau.set(self.caseTableau(ligne,colonne+2), u" Y:"); tableau.set(self.caseTableau(ligne,colonne+3), str(Around(MatrixY3_16))); tableau.set(self.caseTableau(ligne,colonne+4), u" Z:"); tableau.set(self.caseTableau(ligne,colonne+5), str(Around(MatrixZ3_16))); tableau.set(self.caseTableau(ligne,colonne+6), u" :"); tableau.set(self.caseTableau(ligne,colonne+7), str(Around(Matrix_3)))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u" X:")); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(Matrix12))); tableau.set(self.caseTableau(ligne,colonne+2), u" Y:"); tableau.set(self.caseTableau(ligne,colonne+3), str(Around(Matrix13))); tableau.set(self.caseTableau(ligne,colonne+4), u" Z:"); tableau.set(self.caseTableau(ligne,colonne+5), str(Around(Matrix14))); tableau.set(self.caseTableau(ligne,colonne+6), u" :"); tableau.set(self.caseTableau(ligne,colonne+7), str(Around(Matrix15)))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Matrix inertia massique")); tableau.set(self.caseTableau(ligne,colonne+1), unitePs + uniteSs)
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u" X:")); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(MatrixX1_17))); tableau.set(self.caseTableau(ligne,colonne+2), u" Y:"); tableau.set(self.caseTableau(ligne,colonne+3), str(Around(MatrixY1_17))); tableau.set(self.caseTableau(ligne,colonne+4), u" Z:"); tableau.set(self.caseTableau(ligne,colonne+5), str(Around(MatrixZ1_17)))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u" X:")); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(MatrixX2_17))); tableau.set(self.caseTableau(ligne,colonne+2), u" Y:"); tableau.set(self.caseTableau(ligne,colonne+3), str(Around(MatrixY2_17))); tableau.set(self.caseTableau(ligne,colonne+4), u" Z:"); tableau.set(self.caseTableau(ligne,colonne+5), str(Around(MatrixZ2_17)))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u" X:")); tableau.set(self.caseTableau(ligne,colonne+1), str(Around(MatrixX3_17))); tableau.set(self.caseTableau(ligne,colonne+2), u" Y:"); tableau.set(self.caseTableau(ligne,colonne+3), str(Around(MatrixY3_17))); tableau.set(self.caseTableau(ligne,colonne+4), u" Z:"); tableau.set(self.caseTableau(ligne,colonne+5), str(Around(MatrixZ3_17)))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Matrix Détérminant")); tableau.set(self.caseTableau(ligne,colonne+1), str(DeterminantM))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Détérminant décimal")); tableau.set(self.caseTableau(ligne,colonne+1), str(decimal.Decimal(DeterminantM)))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
materiel = materialAssociated[seTMaterialCurrentIndex].rstrip().split(",")
nomMateriel = materiel[0]
densitexMateriel= str(Around(float(materiel[1])))
prixMateriel = str(Around(float(materiel[2])))
infoMateriel = materiel[3]
tableau.set(self.caseTableau(ligne,colonne), (u"Material"))
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Name")); tableau.set(self.caseTableau(ligne,colonne+1), u"Densité"); tableau.set(self.caseTableau(ligne,colonne+2), u"Volume"); tableau.set(self.caseTableau(ligne,colonne+3), u"Unit"); tableau.set(self.caseTableau(ligne,colonne+4), u"Price (kg/dm3)"); tableau.set(self.caseTableau(ligne,colonne+5), u"Coût total"); tableau.set(self.caseTableau(ligne,colonne+6), u"Devise"); tableau.set(self.caseTableau(ligne,colonne+7), u"Info")
tableau.setBackground(self.caseTableau(ligne,colonne) , (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
tableau.setBackground(self.caseTableau(ligne,colonne+1), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
tableau.setBackground(self.caseTableau(ligne,colonne+2), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
tableau.setBackground(self.caseTableau(ligne,colonne+3), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
tableau.setBackground(self.caseTableau(ligne,colonne+4), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
tableau.setBackground(self.caseTableau(ligne,colonne+5), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
tableau.setBackground(self.caseTableau(ligne,colonne+6), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
tableau.setBackground(self.caseTableau(ligne,colonne+7), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L))
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (nomMateriel)); tableau.set(self.caseTableau(ligne,colonne+1), densitexMateriel); tableau.set(self.caseTableau(ligne,colonne+2), str(Around(volume_ * uniteV))); tableau.set(self.caseTableau(ligne,colonne+3), uniteVs); tableau.set(self.caseTableau(ligne,colonne+4), prixMateriel); tableau.set(self.caseTableau(ligne,colonne+5), str(Around(seTMaterialCost))); tableau.set(self.caseTableau(ligne,colonne+6), seTMaterialSuffixCost); tableau.set(self.caseTableau(ligne,colonne+7), infoMateriel)
ligne += 1
tableau.set(self.caseTableau(ligne,colonne), (u"Fin ")); tableau.set(self.caseTableau(ligne,colonne+1), document_); tableau.set(self.caseTableau(ligne,colonne+2), object_Label)
tableau.setBackground(self.caseTableau(ligne,colonne), (0.9372549019607843, 0.1607843137254902, 0.1607843137254902, TextColorText_L))
tableau.setBackground(self.caseTableau(ligne,colonne+1), (0.9372549019607843, 0.1607843137254902, 0.1607843137254902, TextColorText_L))
tableau.setBackground(self.caseTableau(ligne,colonne+2), (0.9372549019607843, 0.1607843137254902, 0.1607843137254902, TextColorText_L))
ligne += 1
tableau.recompute()
# except Exception:
# App_Console_PrintMessage(u"Erreur d'enregistrement du fichier " + SaveName)
# errorDialog(u"Erreur d'enregistrement du fichier " + SaveName)
#### Spreadsheet Fin ################################################################################################
def on_PB_04_Quit(self): # Exit button
global ui
global path
global infoFaceMesh
global switchNotInfoOnBeginning
global switchVersionSearch
global switchWarning
global switchCreatePoint
global switchCreateAxis
global switchCreatePlane
global switchDisplayInfoObject
global switchClearDisplayReportView
global seTWidgetPosition
global switchBoundBoxCreateText
global seTBoundBoxTextHeigth
global seTBoundBoxTextArround
global seTMemoClipBoard
global seTTextHeigthValue
global seTDecimalValue
global seTMaterialCurrentIndex
global seTMaterialFileName
global seTMaterialSavePathName
global seTDensiteValue
global seTDensiteDecimalNumber
global seTDensiteSingleStep
global seTDensiteSuffixChain
global seTPositionFlyRightLeft
global materialAssociated
global seTMaterialPrice
global seTMaterialSuffixDevise
global seTMaterialSuffixCost
global seTMaterialCost
global seTIndexUnitWeight
global seTIndexUnitLength
global seTUnitSymbolMicro
global seTUnitSymbolCube
global seTUnitSymbolCarre
global setPathLatestDirectory
global switchQFileDialogMint
global setMeshTopologyValue
global setBSplineToByArcValue
global switchBSplineCreateCircleConstructorAxis
global switchBSplineCreateCircleConstructor
global switchCreateLineDiVatNatOnClick
global FreeCAD_ParamGetSet
#### Write Configuration begin ####
FreeCAD_ParamGetSet.SetBool(u"switchNotInfoOnBeginning", switchNotInfoOnBeginning) # True or False
FreeCAD_ParamGetSet.SetBool(u"switchVersionSearch", switchVersionSearch) # True or False
FreeCAD_ParamGetSet.SetBool(u"switchWarning", switchWarning) # True or False
FreeCAD_ParamGetSet.SetBool(u"switchCreatePoint", switchCreatePoint) # True or False
FreeCAD_ParamGetSet.SetBool(u"switchCreateAxis", switchCreateAxis) # True or False
FreeCAD_ParamGetSet.SetBool(u"switchCreatePlane", switchCreatePlane) # True or False
FreeCAD_ParamGetSet.SetBool(u"switchDisplayInfoObject", switchDisplayInfoObject) # True or False
FreeCAD_ParamGetSet.SetBool(u"switchClearDisplayReportView", switchClearDisplayReportView)#*True or False
FreeCAD_ParamGetSet.SetBool(u"seTWidgetPosition", seTWidgetPosition) # True or False
FreeCAD_ParamGetSet.SetBool(u"switchBoundBoxCreateText", switchBoundBoxCreateText) # True or False
FreeCAD_ParamGetSet.SetFloat(u"seTBoundBoxTextHeigth", seTBoundBoxTextHeigth) # 3.0
FreeCAD_ParamGetSet.SetInt(u"seTBoundBoxTextArround", seTBoundBoxTextArround) # 3
FreeCAD_ParamGetSet.SetInt(u"seTMemoClipBoard", seTMemoClipBoard) # 0, 1, 2
FreeCAD_ParamGetSet.SetInt(u"seTTextHeigthValue", seTTextHeigthValue) # 11
FreeCAD_ParamGetSet.SetInt(u"seTDecimalValue", seTDecimalValue) # 4
FreeCAD_ParamGetSet.SetInt(u"seTMaterialCurrentIndex", seTMaterialCurrentIndex) # 0
FreeCAD_ParamGetSet.SetString(u"seTMaterialFileName", seTMaterialFileName) # "FCInfo_material.txt"
FreeCAD_ParamGetSet.SetString(u"seTMaterialSavePathName", seTMaterialSavePathName) # "C:\...\Macro\FCInfo_material.txt"
FreeCAD_ParamGetSet.SetFloat(u"seTMaterialPrice", seTMaterialPrice) # x
FreeCAD_ParamGetSet.SetString(u"seTMaterialSuffixDevise", seTMaterialSuffixDevise) # " Eu (By Kg)# Suffix device
FreeCAD_ParamGetSet.SetString(u"seTMaterialSuffixCost", seTMaterialSuffixCost) # " Eu # Suffix cost
FreeCAD_ParamGetSet.SetFloat(u"seTMaterialCost", seTMaterialCost) # x
FreeCAD_ParamGetSet.SetFloat(u"seTDensiteValue", seTDensiteValue) # 1.0
FreeCAD_ParamGetSet.SetInt(u"seTDensiteDecimalNumber", seTDensiteDecimalNumber) # 4
FreeCAD_ParamGetSet.SetFloat(u"seTDensiteSingleStep", seTDensiteSingleStep) # 1.0
FreeCAD_ParamGetSet.SetString(u"seTDensiteSuffixChain", seTDensiteSuffixChain) # " kg (by dm3)"
FreeCAD_ParamGetSet.SetInt(u"seTPositionFlyRightLeft", seTPositionFlyRightLeft) # 1, 2, other
#FreeCAD_ParamGetSet.SetInt(u"seTIndexUnitWeight", seTIndexUnitWeight) # x
#FreeCAD_ParamGetSet.SetInt(u"seTIndexUnitLength", seTIndexUnitLength) # x
FreeCAD_ParamGetSet.SetString(u"seTUnitSymbolMicro", seTUnitSymbolMicro) # "U"
FreeCAD_ParamGetSet.SetString(u"seTUnitSymbolCube", seTUnitSymbolCube) # "3"
FreeCAD_ParamGetSet.SetString(u"seTUnitSymbolCarre", seTUnitSymbolCarre) # "2"
FreeCAD_ParamGetSet.SetBool("switchQFileDialogMint", switchQFileDialogMint) # Special Mint
FreeCAD_ParamGetSet.SetString(u"setPathLatestDirectory", setPathLatestDirectory) # "C:\ ???"
FreeCAD_ParamGetSet.SetFloat(u"setBSplineToByArcValue", setBSplineToByArcValue) # 0.00001
FreeCAD_ParamGetSet.SetFloat(u"setMeshTopologyValue", setMeshTopologyValue) # 0.1
FreeCAD_ParamGetSet.SetBool(u"switchBSplineCreateCircleConstructorAxis", switchBSplineCreateCircleConstructorAxis)# True or False
FreeCAD_ParamGetSet.SetBool(u"switchBSplineCreateCircleConstructor", switchBSplineCreateCircleConstructor) # True or False
FreeCAD_ParamGetSet.SetBool(u"switchCreateLineDiVatNatOnClick", switchCreateLineDiVatNatOnClick) # True or False
#### Write Configuration end ####
#### save the material begin ####
ui.on_PB_Save_Material_clicked() # save material
#### save the material end ####
App_Console_PrintMessage(u"Fin FCInfo\r\n")
try:
Gui.ActiveDocument.ActiveView.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(), infoFaceMesh)
except Exception:
None
FreeCADGui.Selection.removeObserver(s) # Uninstalls resident function (desactivated for read after LeftDock RightDock)
try:
self.window.setAttribute(QtCore.Qt.WA_DeleteOnClose, True) # destroy
self.window.deleteLater() # destroy
self.window.destroy() # destroy
except Exception:
self.window.hide()
None
#########################################################################################################################
class SelObserver:
def addSelection(self,document, object, element, position): # Selection
global ui
global sel
global document_
global object_Label
global subElemName
global position0
global position1
global position2
global switchInertia
global infoFaceMesh
global switch_setVisible_GBox_001_Document #
global switch_setVisible_GBox_002_Coordinate_Mouse #
global switch_setVisible_GBox_003_Color
global switch_setVisible_GBox_004_Object_Mesh
global switch_setVisible_GBox_005_Value_Unit
global switch_setVisible_GBox_006_Inclination
global switch_setVisible_GBox_007_Surface_and_Volume
global switch_setVisible_GBox_008_Cost_And_Price
global switch_setVisible_GBox_009_BoundBox
global switch_setVisible_GBox_010_Center_Mass
global switch_setVisible_GBox_011_Inertia
global switch_setVisible_GBox_012_SpreadSheet
global switch_setVisible_GBox_013_SpreadSheet_Creation
global switch_setVisible_GBox_014_Main_Tools #
if switchInertia == 0: # for create plane without refresh
sel = FreeCADGui.Selection.getSelection()
document_ = document
object_Label = object
subElemName = element
position0 = (position[0])
position1 = (position[1])
position2 = (position[2])
if len(sel)==0:
App_Console_PrintMessage(u"Sélectionnez un objet" + "\n")
errorDialog(u"Sélectionnez un objet")
else:
# ui.on_PB_01_Refrech_clicked()
####Special_Sketcher
try:
sketch = Gui.Selection.getSelection()[0]
except Exception: None
#print(sketch.TypeId)
App.ActiveDocument.recompute()
if (Gui.ActiveDocument.getInEdit() and (sketch.TypeId == "Sketcher::SketchObject")): # sketcher open
ui.LE_5.setStyleSheet(u"QLineEdit {color : QPalette.Base}") # origin system
nameSketch = sketch.Name
ui.GBox_004_Object_Mesh.setVisible(False)
ui.GBox_003_Color.setEnabled(False)
ui.GBox_012_SpreadSheet.setEnabled(False)
ui.GBox_007_Surface_and_Volume.setEnabled(False)
ui.GBox_008_Cost_And_Price.setEnabled(False)
ui.GBox_009_BoundBox.setEnabled(False)
ui.GBox_010_Center_Mass.setEnabled(False)
ui.GBox_011_Inertia.setEnabled(False)
ui.GBox_013_SpreadSheet_Creation.setEnabled(False)
if "Constraint" in subElemName:
ui.LE_5.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") # constraint
else:
try:
indexSubObject = int(subElemName[4:]) - 1 # index
if App.ActiveDocument.getObject(nameSketch).getConstruction(indexSubObject):
ui.LE_5.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}") # construction
except Exception:
None
elif sketch.TypeId == "Mesh::Feature": # Mesh
#infoFaceMesh = Gui.ActiveDocument.ActiveView.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(), getNormal)
# ui.on_ZeroInfo()
if switch_setVisible_GBox_004_Object_Mesh == True:
ui.GBox_004_Object_Mesh.setVisible(True)
ui.LA_N_Edges.setEnabled(True)
ui.LA_N_Facets.setEnabled(True)
ui.LE_N_Edges.setEnabled(True)
ui.LE_N_Facets.setEnabled(True)
if switch_setVisible_GBox_005_Value_Unit == True:
ui.GBox_005_Value_Unit.setVisible(True)
if switch_setVisible_GBox_006_Inclination == True:
ui.GBox_006_Inclination.setVisible(True)
if switch_setVisible_GBox_007_Surface_and_Volume == True:
ui.GBox_007_Surface_and_Volume.setVisible(True)
if switch_setVisible_GBox_008_Cost_And_Price == True:
ui.GBox_008_Cost_And_Price.setVisible(True)
if switch_setVisible_GBox_009_BoundBox == True:
ui.GBox_009_BoundBox.setVisible(True)
if switch_setVisible_GBox_010_Center_Mass == True:
ui.GBox_010_Center_Mass.setVisible(True)
ui.LE_14x.setEnabled(True)
ui.LE_14y.setEnabled(True)
ui.LE_14z.setEnabled(True)
if switch_setVisible_GBox_011_Inertia == True:
ui.GBox_011_Inertia.setVisible(False)
if switch_setVisible_GBox_012_SpreadSheet == True:
ui.GBox_012_SpreadSheet.setVisible(False)
#ui.GBox_013_SpreadSheet_Creation.setEnabled(False)
ui.on_ZeroInfo()
elif sketch.TypeId == "Points::FeatureCustom": # Points
if switch_setVisible_GBox_004_Object_Mesh == True:
ui.GBox_004_Object_Mesh.setVisible(True)
ui.LA_N_Edges.setEnabled(False)
ui.LA_N_Facets.setEnabled(False)
ui.LE_N_Edges.setEnabled(False)
ui.LE_N_Facets.setEnabled(False)
ui.GBox_005_Value_Unit.setVisible(False)
ui.GBox_006_Inclination.setVisible(False)
ui.GBox_007_Surface_and_Volume.setVisible(False)
ui.GBox_008_Cost_And_Price.setVisible(False)
ui.GBox_011_Inertia.setVisible(False)
ui.GBox_012_SpreadSheet.setVisible(False)
ui.GBox_013_SpreadSheet_Creation.setVisible(False)
ui.LE_14x.setEnabled(False)
ui.LE_14y.setEnabled(False)
ui.LE_14z.setEnabled(False)
ui.on_ZeroInfo()
else:
if switch_setVisible_GBox_003_Color == True:
ui.GBox_003_Color.setVisible(True)
ui.GBox_003_Color.setEnabled(True)
ui.GBox_004_Object_Mesh.setVisible(False)
if switch_setVisible_GBox_005_Value_Unit == True:
ui.GBox_005_Value_Unit.setVisible(True)
ui.GBox_005_Value_Unit.setEnabled(True)
ui.LE_5.setStyleSheet(u"QLineEdit {color : QPalette.Base}") # origin system
if switch_setVisible_GBox_006_Inclination == True:
ui.GBox_006_Inclination.setVisible(True)
ui.GBox_006_Inclination.setEnabled(True)
if switch_setVisible_GBox_007_Surface_and_Volume == True:
ui.GBox_007_Surface_and_Volume.setVisible(True)
ui.GBox_007_Surface_and_Volume.setEnabled(True)
if switch_setVisible_GBox_008_Cost_And_Price == True:
ui.GBox_008_Cost_And_Price.setVisible(True)
ui.GBox_008_Cost_And_Price.setEnabled(True)
if switch_setVisible_GBox_009_BoundBox == True:
ui.GBox_009_BoundBox.setVisible(True)
ui.GBox_009_BoundBox.setEnabled(True)
if switch_setVisible_GBox_010_Center_Mass == True:
ui.GBox_010_Center_Mass.setVisible(True)
ui.GBox_010_Center_Mass.setEnabled(True)
ui.LE_14x.setEnabled(True)
ui.LE_14x.setEnabled(True)
ui.LE_14y.setEnabled(True)
ui.LE_14y.setEnabled(True)
ui.LE_14z.setEnabled(True)
ui.LE_14z.setEnabled(True)
if switch_setVisible_GBox_011_Inertia == True:
ui.GBox_011_Inertia.setVisible(True)
ui.GBox_011_Inertia.setEnabled(True)
if switch_setVisible_GBox_012_SpreadSheet == True:
ui.GBox_012_SpreadSheet.setVisible(True)
ui.GBox_012_SpreadSheet.setEnabled(True)
if switch_setVisible_GBox_013_SpreadSheet_Creation == True:
ui.GBox_013_SpreadSheet_Creation.setVisible(True)
ui.GBox_013_SpreadSheet_Creation.setEnabled(True)
####SpecialSketcher
ui.on_PB_01_Refrech_clicked()
else:
ui.GBox_012_SpreadSheet
ui.GBox_012_SpreadSheet.setTitle(u"Détails de la forme")
####SpecialSketcher
##########################################################################################################################
if switchNotInfoOnBeginning == 0: # 0 =display the info
App_Console_PrintMessage(u"____________________________________" + "\n")
App_Console_PrintMessage(u"#### FCInfo Configuration begin ####" + "\n")
App_Console_PrintMessage(u"####" + "\n")
App_Console_PrintMessage(u"\t" + "**** Location ****" + "\n")
App_Console_PrintMessage(u"User parameter:BaseApp/Preferences/Macros/FCMmacros/FCInfo/" + "\n")
App_Console_PrintMessage(u"####" + "\n\n")
App_Console_PrintMessage(u"switchNotInfoOnBeginning # SetBool True or [False]" + "\n")
App_Console_PrintMessage(u"\t" + "Display or not this text information on run macro" + "\n")
App_Console_PrintMessage(u"\t\t" + "[False] = display this information" + "\n")
App_Console_PrintMessage(u"\t\t" + " True = this Information is Not displayed On Beginning" + "\n\n")
App_Console_PrintMessage(u"switchVersionSearch # SetBool True or [False]" + "\n")
App_Console_PrintMessage(u"\t" + "Search if one new version exist on run macro" + "\n\n")
App_Console_PrintMessage(u"switchWarning # SetBool True or [False]" + "\n")
App_Console_PrintMessage(u"\t" + "Display or not display the window warning in case not good selection" + "\n\n")
App_Console_PrintMessage(u"switchCreatePoint # SetBool True or [False]" + "\n")
App_Console_PrintMessage(u"\t" + "Check the Create point checkBox" + "\n\n")
App_Console_PrintMessage(u"switchCreateAxis # SetBool True or [False]" + "\n")
App_Console_PrintMessage(u"\t" + "Check the Create axis checkBox" + "\n\n")
App_Console_PrintMessage(u"switchCreatePlane # SetBool True or [False]" + "\n")
App_Console_PrintMessage(u"\t" + "Check the Create plane checkBox" + "\n\n")
App_Console_PrintMessage(u"switchDisplayInfoObject # SetBool True or [False]" + "\n")
App_Console_PrintMessage(u"\t" + "Check the info checkBox" + "\n\n")
App_Console_PrintMessage(u"switchClearDisplayReportView# SetBool True or [False]" + "\n")
App_Console_PrintMessage(u"\t" + "if switchClearDisplayReportView is TRUE the ReportView is cleared" + "\n\n")
App_Console_PrintMessage(u"seTWidgetPosition # SetBool True or [False]" + "\n")
App_Console_PrintMessage(u"\t" + "Check the Widget Position Left/Right checkBox" + "\n")
App_Console_PrintMessage(u"\t" + "if seTWidgetPosition [False] : if seTPositionFlyRightLeft = 2 = docked to Right" + "\n")
App_Console_PrintMessage(u"\t" + "if seTWidgetPosition True : if seTPositionFlyRightLeft = 3 = docked to Left" + "\n")
App_Console_PrintMessage(u"\t" + "if it is 1 the window macro is not docked" + "\n\n")
App_Console_PrintMessage(u"switchBoundBoxCreateText # SetBool True or [False]" + "\n")
App_Console_PrintMessage(u"\t" + "Create the text dimension of the BoundBox" + "\n\n")
App_Console_PrintMessage(u"seTBoundBoxTextHeigth # seTBoundBoxTextHeigth = 3.0" + "\n")
App_Console_PrintMessage(u"\t" + "Give the Heigth of the text dimension (independent of the seTTextHeigthValue)" + "\n\n")
App_Console_PrintMessage(u"seTBoundBoxTextArround # seTBoundBoxTextArround = 3" + "\n")
App_Console_PrintMessage(u"\t" + "Give the arround of the text dimensions (independent of the seTDecimalValue)" + "\n\n")
App_Console_PrintMessage(u"seTMemoClipBoard # SetInt [0], 1, 2, 3" + "\n")
App_Console_PrintMessage(u"\t" + "Give one value [0], 1, 2, 3 clipBoard" + "\n")
App_Console_PrintMessage(u"\t\t" + "[0] = desactivate the clipBoard" + "\n")
App_Console_PrintMessage(u"\t\t" + " 1 = the data string is memorised to : FreeCAD.Vector( X, Y, Z )" + "\n")
App_Console_PrintMessage(u"\t\t" + " 2 = the data string is memorised to : X, Y, Z" + "\n")
App_Console_PrintMessage(u"\t\t" + " 3 = the data string is memorised to : X Y Z" + "\n\n")
App_Console_PrintMessage(u"seTTextHeigthValue # SetInt 11" + "\n")
App_Console_PrintMessage(u"\t" + "Give one text heigth value of the macro" + "\n\n")
App_Console_PrintMessage(u"seTDecimalValue # SetInt 4" + "\n")
App_Console_PrintMessage(u"\t" + "Give the number of decimal displayed" + "\n")
App_Console_PrintMessage(u"\t" + "If the number is -1 the total decimal value is displayed)" + "\n\n")
App_Console_PrintMessage(u"seTMaterialCurrentIndex # SetInt 0" + "\n")
App_Console_PrintMessage(u"\t" + "Set the index of the ComboBox" + "\n\n")
App_Console_PrintMessage(u"seTMaterialFileName # SetString FCInfo_material.txt" + "\n")
App_Console_PrintMessage(u"\t" + "Name of the material file" + "\n\n")
App_Console_PrintMessage(u"seTMaterialSavePathName # SetString C:\...\Macro\FCInfo_material.txt" + "\n")
App_Console_PrintMessage(u"\t" + "Path name of the material file" + "\n\n")
App_Console_PrintMessage(u"seTMaterialPrice # SetFloat" + "\n")
App_Console_PrintMessage(u"\t" + "Material price by Kg " + "\n\n")
App_Console_PrintMessage(u"seTMaterialSuffixDevise # SetString" + "\n")
App_Console_PrintMessage(u"\t" + "Devise money" + "\n\n")
App_Console_PrintMessage(u"seTMaterialSuffixCost # seTMaterialSuffixCost" + "\n")
App_Console_PrintMessage(u"\t" + "Suffix Devise cost" + "\n\n")
App_Console_PrintMessage(u"seTMaterialCost # SetFloat" + "\n")
App_Console_PrintMessage(u"\t" + "Material cost" + "\n\n")
App_Console_PrintMessage(u"seTDensiteValue # SetFloat 1.0" + "\n")
App_Console_PrintMessage(u"\t" + "Give the densite value" + "\n\n")
App_Console_PrintMessage(u"seTDensiteDecimalNumber # SetInt 4" + "\n")
App_Console_PrintMessage(u"\t" + "Give the number of decimal for the densite value" + "\n\n")
App_Console_PrintMessage(u"seTDensiteSingleStep # SetFloat 1.0" + "\n")
App_Console_PrintMessage(u"\t" + "Give the step for one click, by default 1.0 (possible 0.01 or ...)" + "\n\n")
App_Console_PrintMessage(u"seTDensiteSuffixChain # SetString kg (by dm3)" + "\n")
App_Console_PrintMessage(u"\t" + "Choice your suffix string" + "\n\n")
App_Console_PrintMessage(u"seTPositionFlyRightLeft # SetInt 2" + "\n")
App_Console_PrintMessage(u"\t" + "Choice your position, Fly, [Right], Left" + "\n")
App_Console_PrintMessage(u"\t\t" + " 1 = the macro window is fly (not docked)" + "\n")
App_Console_PrintMessage(u"\t\t" + "[2] = the macro window is positionned to Right" + "\n")
App_Console_PrintMessage(u"\t\t" + " 3 or other = the macro window is positionned to Left" + "\n")
App_Console_PrintMessage(u"seTIndexUnitWeight # SetInt" + "\n")
App_Console_PrintMessage(u"\t" + "Set unit Mass index" + "\n\n")
App_Console_PrintMessage(u"seTUnitSymbolMicro # U" + "\n")
App_Console_PrintMessage(u"\t" + "Set Symbol Micro" + "\n\n")
App_Console_PrintMessage(u"seTUnitSymbolCube # 3" + "\n")
App_Console_PrintMessage(u"\t" + "Set Symbol Cube" + "\n\n")
App_Console_PrintMessage(u"seTUnitSymbolCarre # 2" + "\n")
App_Console_PrintMessage(u"\t" + "Set Symbol Square" + "\n\n")
App_Console_PrintMessage(u"seTIndexUnitLength # SetInt" + "\n")
App_Console_PrintMessage(u"\t" + "Set unit Length index" + "\n\n")
App_Console_PrintMessage(u"setBSplineToByArcValue # SetFloat 0.00001" + "\n")
App_Console_PrintMessage(u"\t" + "Set unit for cut the BSpline for seack the radius on point given" + "\n\n")
App_Console_PrintMessage(u"setMeshTopologyValue # SetFloat 0.1" + "\n")
App_Console_PrintMessage(u"\t" + "Set unit for create the Mesh to Shape" + "\n\n")
App_Console_PrintMessage(u"switchBSplineCreateCircleConstructorAxis #SetBool True or [False]" + "\n")
App_Console_PrintMessage(u"\t" + "Display the axis of the circles (arcs) for create the BSpline" + "\n\n")
App_Console_PrintMessage(u"switchBSplineCreateCircleConstructor #SetBool True or [False]" + "\n")
App_Console_PrintMessage(u"\t" + "Display the circles cretors for create the BSpline" + "\n\n")
App_Console_PrintMessage(u"switchCreateLineDiVatNatOnClick #SetBool True or [False]" + "\n")
App_Console_PrintMessage(u"\t" + "Create the Line info on point (0,0,0) or on point mouse clicked (x,y,z) if it is True" + "\n")
App_Console_PrintMessage(u"\t" + "If it is True one '*' is displayed in front of text. EX: '*Direction'" + "\n\n")
####
App_Console_PrintMessage(u"#### section GroupBox begin" + "\n")
App_Console_PrintMessage(u"This switch hidde or display the GroupBox concerned " + "\n\n")
App_Console_PrintMessage(u"All operation of research info and calcul not change only the cosmetic hidden/display is visual" + "\n\n")
App_Console_PrintMessage(u"switch_setVisible_GBox_001_Document # [True] or False " + "\n")
App_Console_PrintMessage(u"switch_setVisible_GBox_002_Coordinate_Mouse # [True] or False " + "\n")
App_Console_PrintMessage(u"switch_setVisible_GBox_003_Color # [True] or False " + "\n")
App_Console_PrintMessage(u"switch_setVisible_GBox_004_Object_Mesh # [True] or False " + "\n")
App_Console_PrintMessage(u"switch_setVisible_GBox_005_Value_Unit # [True] or False " + "\n")
App_Console_PrintMessage(u"switch_setVisible_GBox_006_Inclination # [True] or False " + "\n")
App_Console_PrintMessage(u"switch_setVisible_GBox_007_Surface_and_Volume # [True] or False " + "\n")
App_Console_PrintMessage(u"switch_setVisible_GBox_008_Cost_And_Price # [True] or False " + "\n")
App_Console_PrintMessage(u"switch_setVisible_GBox_009_BoundBox # [True] or False " + "\n")
App_Console_PrintMessage(u"switch_setVisible_GBox_010_Center_Mass # [True] or False " + "\n")
App_Console_PrintMessage(u"switch_setVisible_GBox_011_Inertia # [True] or False " + "\n")
App_Console_PrintMessage(u"switch_setVisible_GBox_012_SpreadSheet # [True] or False " + "\n")
App_Console_PrintMessage(u"switch_setVisible_GBox_013_SpreadSheet_Creation # [True] or False " + "\n")
App_Console_PrintMessage(u"switch_setVisible_GBox_014_Main_Tools # [True] or False " + "\n")
App_Console_PrintMessage(u"#### section GroupBox end" + "\n\n")
####
App_Console_PrintError(u"####FCinfo Warning####################################################" + "\n")
App_Console_PrintError(u"## Matrix of inertia ##" + "\n")
App_Console_PrintError(u"## Verify this section by person knowing the inertia position ##" + "\n")
App_Console_PrintError(u"## ONLY IF THE OBJECT IS PRESENT IN ONE BODY ##" + "\n")
App_Console_PrintError(u"## and post your knowledges in the forum tread if it is not correct ##" + "\n")
App_Console_PrintError(u"## http://forum.freecadweb.org/viewtopic.php?f=10&t=3185 ##" + "\n")
App_Console_PrintError(u"######################################################################" + "\n\n")
App_Console_PrintError(u"###########################################################################" + "\n")
App_Console_PrintError(u"** **" + "\n")
App_Console_PrintError(u"* Use at your own risk. The author assumes no liability for data loss. *" + "\n")
App_Console_PrintError(u"* It is advised to backup your data frequently. *" + "\n")
App_Console_PrintError(u"* If you do not trust the software do not use it. *" + "\n")
App_Console_PrintError(u"** **" + "\n")
App_Console_PrintError(u"###########################################################################" + "\n\n")
App_Console_PrintMessage(u"#### FCInfo Configuration end ####" + "\n")
App_Console_PrintMessage(u"__________________________________" + "\n\n")
####
doc = FreeCAD.activeDocument()
if doc == None:
doc = FreeCAD.newDocument(u"FCInfo")
Gui.Selection.clearSelection()
#sel = FreeCADGui.Selection.getSelection()
try:
infoFaceMesh = Gui.ActiveDocument.ActiveView.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(), getNormal)
except Exception:
None
s=SelObserver()
FreeCADGui.Selection.addObserver(s) # install the function resident mode
mw = FreeCADGui.getMainWindow()
dw=mw.findChildren(QtWidgets.QDockWidget)
for i in dw:
if str(i.objectName()) == __Title__:
if i.isVisible():
i.setVisible(False)
else:
if seTPositionFlyRightLeft == 1: # MainWindow
None
else:
myNewFreeCADWidget = QtWidgets.QDockWidget() # create (restore) a new dockwidget
myNewFreeCADWidget.setObjectName(__Title__)
ui = Ui_MainWindow()
ui.setupUi(myNewFreeCADWidget)
FCmw = FreeCADGui.getMainWindow()
i.setVisible(True)
break
if i.objectName() != __Title__: # macro internal Name
#
#####MainWindow################################################################################
if seTPositionFlyRightLeft == 1: # MainWindow
MainWindow = QtWidgets.QMainWindow() # create a new window volant
MainWindow.setObjectName(__Title__) # macro internal Name
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
#####DockWidget################################################################################
#
else:
myNewFreeCADWidget = QtWidgets.QDockWidget() # create a new dockwidget
myNewFreeCADWidget.setObjectName(__Title__)
ui = Ui_MainWindow()
ui.setupUi(myNewFreeCADWidget)
FCmw = FreeCADGui.getMainWindow()
if seTPositionFlyRightLeft == 2: # RightDock
FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window Right
else: # LeftDock
FCmw.addDockWidget(QtCore.Qt.LeftDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window Left
ui.on_PB_SpreadSheet_clicked() # cherche les SpreadSheet
@mario52a
Copy link
Author

mario52a commented Jan 2, 2016

This macro utility is intended for the use of the program FreeCAD http://www.freecadweb.org/
The icon for your toolbar, it is to place in your macros directory (in the same location of the macro)
button fcinfo rename in FCInfo.png (for button)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment