Last active
January 28, 2025 19:49
-
-
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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
from __future__ import unicode_literals | |
""" | |
*************************************************************************** | |
* Copyright (c) <mario52> 2014 2015 2016 2017 2018 2019 2020 2021 2022 * | |
* 2023 2024 2025 * | |
* 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 | |
# 2024/05/06 ver "1.29" port to PySide6 by sylvainbx https://gist.github.com/sylvainbx/af09a30be3e1427de56305825331fb29 | |
# 2024/05/10 ver "1.29b" PySide2 modify Inertia " MatrixX1*uniteM to (MatrixX1*uniteM) " and adding spinBox inertia | |
#https://forum.freecad.org/viewtopic.php?p=713935#p713935 # Moment of inertias calculation | |
#https://forum.freecad.org/viewtopic.php?t=64653 # Momentof Interia - FCInfo macro | |
# 2025/01/02 ver 1.30 delette all reference to PySide PySide2 and QtWidgets modify the (Qt) Save file, 2025/01/25 1.30b replace slash Windows by slash Python "/" , 2025/01/28 comboBox ArchLinux | |
# | |
#OS: Windows 10 build 19045 | |
#Word size of FreeCAD: 64-bit | |
#Version: 0.22.0dev.37100 (Git) | |
#Build type: Release | |
#Branch: main | |
#Hash: ede6c811fd39d68a44949601f2eb7ecc8a67fdb7 | |
#Python 3.11.9, Qt 5.15.13, Coin 4.0.2, Vtk 9.2.6, OCC 7.7.2 | |
#Locale: French/Mars (fr_MA) | |
# | |
__Title__ = "FCInfo" | |
__Author__ = "Mario52" | |
__Url__ = "https://gist.github.com/mario52a/8d40ab6c018c2bde678f" | |
__Version__ = "1.30c" | |
__Date__ = "2025/01/28" | |
__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.19 and more" | |
__Communication__ = "http://forum.freecadweb.org/viewtopic.php?f=10&t=3185" | |
# | |
import PySide | |
try: | |
from PySide import QtWidgets | |
from PySide.QtWidgets import * | |
except Exception: | |
None | |
from PySide import QtGui , QtCore | |
from PySide.QtGui import * | |
from PySide.QtCore import * | |
#import PySide.QtXml | |
import os | |
import platform | |
import warnings | |
warnings.simplefilter("ignore") | |
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 ) # | |
################################################################################# | |
try: | |
import webbrowser | |
except Exception: | |
None | |
#### Detect version macro ########################################### #22/03/2021 | |
try: | |
import urllib | |
from urllib import request | |
except Exception: | |
None | |
#### 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 = QMessageBox(QMessageBox.Information, 'New Version', msg) | |
diag.setWindowModality(QtCore.Qt.ApplicationModal) | |
diag.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # PySide 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 = QApplication.UnicodeUTF8 | |
def _translate(context, text, disambig): | |
return QApplication.translate(context, text, disambig, _encoding) | |
except AttributeError: | |
def _translate(context, text, disambig): | |
return 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: ° | |
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>µ</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>³</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>²</span> | |
seTUnitSymbolCarre = FreeCAD_ParamGetSet.GetString(u"seTUnitSymbolCarre") | |
if seTUnitSymbolCarre == "": seTUnitSymbolCarre = "2" | |
FreeCAD_ParamGetSet.SetString(u"seTUnitSymbolCarre", seTUnitSymbolCarre) #*"2" | |
## | |
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 | |
## | |
global setMomentOfInertia_16 #; setMomentOfInertia_16 = 1 | |
setMomentOfInertia_16 = FreeCAD_ParamGetSet.GetInt(u"setMomentOfInertia_16") | |
if setMomentOfInertia_16 == 0: setMomentOfInertia_16 = 1 | |
FreeCAD_ParamGetSet.SetInt(u"setMomentOfInertia_16", setMomentOfInertia_16) | |
## | |
global setMomentOfInertiaMassique_17 #; setMomentOfInertiaMassique_17 = 1 | |
setMomentOfInertiaMassique_17 = FreeCAD_ParamGetSet.GetInt(u"setMomentOfInertiaMassique_17") | |
if setMomentOfInertiaMassique_17 == 0: setMomentOfInertiaMassique_17 = 1 | |
FreeCAD_ParamGetSet.SetInt(u"setMomentOfInertiaMassique_17", setMomentOfInertiaMassique_17) | |
#### | |
#### 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 = "" # 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 = QMessageBox(QMessageBox.Critical,"Error Message",msg ) | |
diag.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # PySide #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>µ</span> | |
global uniteS ; uniteS = 1.0 # unit of measurement surface | |
global uniteSs ; uniteSs = u"mm"+seTUnitSymbolCarre # carre hex="\xb2", html=<span>²</span> | |
global uniteV ; uniteV = 1.0 # unit of measurement volume | |
global uniteVs ; uniteVs = u"mm"+seTUnitSymbolCube # cube hex="\xb3", html=<span>³</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 massOrGravity ; massOrGravity = " Mass " | |
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 MatrixOfInertiaRaw; MatrixOfInertiaRaw = "" | |
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 = 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 massOrGravity | |
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 MatrixOfInertiaRaw | |
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 or gravity | |
try: | |
c = FreeCADGui.Selection.getSelection()[0].Shape.CenterOfMass | |
massOrGravity = " Mass " | |
except Exception: | |
try: | |
c = FreeCADGui.Selection.getSelection()[0].Shape.CenterOfGravity | |
massOrGravity = " Gravity " | |
except Exception: | |
try: | |
###https://forum.freecad.org/viewtopic.php?p=664655#p664655 | |
##shp = App.ActiveDocument.Shape059.Shape | |
##cog = (shp.Face1.CenterOfGravity + shp.Face2.CenterOfGravity) / 2 | |
##Part.show(Part.Vertex(cog)) | |
selEx = FreeCADGui.Selection.getSelectionEx() | |
objs = [selobj.Object for selobj in selEx] | |
s = objs[0].Shape | |
c = s.Solids[0].CenterOfMass | |
massOrGravity = " Mass " | |
except Exception: | |
c = "" | |
massOrGravity = " Mass " | |
if adaptWithBody == 0: | |
# centre de la forme (CenterOfMass) mode sans Body (normal) | |
try: | |
CenterOfMassX = c.x | |
CenterOfMassY = c.y | |
CenterOfMassZ = c.z | |
massOrGravity = " Mass " | |
except Exception: | |
try: | |
c = FreeCADGui.Selection.getSelection()[0].Shape.CenterOfGravity | |
CenterOfMassX = c.x | |
CenterOfMassY = c.y | |
CenterOfMassZ = c.z | |
massOrGravity = " Gravity " | |
except: | |
CenterOfMassX = CenterOfMassY = CenterOfMassZ = 0.0 | |
massOrGravity = " Mass " | |
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 | |
matrixOfInertia = FreeCADGui.Selection.getSelection()[0].Shape.MatrixOfInertia | |
except Exception: | |
try: | |
selEx = FreeCADGui.Selection.getSelectionEx() | |
objs = [selobj.Object for selobj in selEx] | |
s = objs[0].Shape | |
matrixOfInertia = s.Solids[0].MatrixOfInertia | |
except Exception: | |
matrixOfInertia = "" | |
MatrixOfInertiaRaw = str(matrixOfInertia) | |
# 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 = (matrixOfInertia.A[0]) | |
MatrixY1_16 = MatrixY1 = (matrixOfInertia.A[1]) | |
MatrixZ1_16 = MatrixZ1 = (matrixOfInertia.A[2]) | |
Matrix_1 = (matrixOfInertia.A[3]) | |
MatrixX2_16 = MatrixX2 = (matrixOfInertia.A[4]) | |
MatrixY2_16 = MatrixY2 = (matrixOfInertia.A[5]) | |
MatrixZ2_16 = MatrixZ2 = (matrixOfInertia.A[6]) | |
Matrix_2 = (matrixOfInertia.A[7]) | |
MatrixX3_16 = MatrixX3 = (matrixOfInertia.A[8]) | |
MatrixY3_16 = MatrixY3 = (matrixOfInertia.A[9]) | |
MatrixZ3_16 = MatrixZ3 = (matrixOfInertia.A[10]) | |
Matrix_3 = (matrixOfInertia.A[11]) | |
Matrix12 = (matrixOfInertia.A[12]) | |
Matrix13 = (matrixOfInertia.A[13]) | |
Matrix14 = (matrixOfInertia.A[14]) | |
Matrix15 = (matrixOfInertia.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 verifier choix objet ou sub objet | |
# edgeObject = Gui.Selection.getSelection()[0].Shape.Edges[0] # first edge of Shape | |
edgeObject = Gui.Selection.getSelectionEx()[0].SubObjects[0].Edges[0] # sub object selcted | |
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(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 : Raw: "+str(MatrixOfInertiaRaw)+"\n") | |
App_Console_PrintMessage(u" : " + uniteMs + "^" + str(setMomentOfInertia_16) + "\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 avec masse: " +unitePs + uniteSs + "^" + str(setMomentOfInertiaMassique_17) + "\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 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 setMomentOfInertia_16 | |
global setMomentOfInertiaMassique_17 | |
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, 515) | |
MainWindow.setMinimumSize(QtCore.QSize(500, 515)) | |
#MainWindow.setMaximumSize(QtCore.QSize(380, 515)) | |
#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 = QWidget(MainWindow) | |
#self.centralWidget.setMinimumSize(QtCore.QSize(500, 500)) | |
#### | |
grid = QGridLayout() | |
self.centralWidget.setLayout(grid) | |
#### | |
self.scrollArea = 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 = QVBoxLayout() | |
self.scrollArea.setLayout(vbox) | |
self.scrollAreaWidgetContents_2 = 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 = QVBoxLayout() | |
self.scrollAreaWidgetContents_2.setLayout(vbox) | |
#### Document | |
grid = QGridLayout() | |
self.GBox_001_Document = 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 = QLabel() | |
self.LE_1 = QLineEdit() | |
grid.addWidget(self.LA_1, 0, 0) | |
grid.addWidget(self.LE_1, 0, 1, 1, 2) | |
self.LA_2 = QLabel() | |
self.LE_2 = QLineEdit() | |
self.LE_2a = 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 = QLabel() | |
self.LA_4 = QLabel() | |
self.LE_3 = QLineEdit() | |
self.LE_3a = QLineEdit() | |
self.LE_4 = 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 = QGridLayout() | |
self.GBox_002_Coordinate_Mouse = 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 = QLabel() | |
self.LA_4x.setStyleSheet(u"QLabel {color : #ff0000; font: bold}") # couleur du texte et gras | |
self.LE_4x = QLineEdit() | |
grid.addWidget(self.LA_4x, 0, 0) | |
grid.addWidget(self.LE_4x, 1, 0) | |
self.LA_4y = QLabel() | |
self.LA_4y.setStyleSheet(u"QLabel {color : #008500; font: bold}") # couleur du texte et gras | |
self.LE_4y = QLineEdit() | |
grid.addWidget(self.LA_4y, 0, 1) | |
grid.addWidget(self.LE_4y, 1, 1) | |
self.LA_4z = QLabel() | |
self.LA_4z.setStyleSheet(u"QLabel {color : #0000ff; font: bold}") # couleur du texte et gras | |
self.LE_4z = QLineEdit() | |
grid.addWidget(self.LA_4z, 0, 2) | |
grid.addWidget(self.LE_4z, 1, 2) | |
self.PB_Axis_01 = 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 = QGridLayout() | |
self.GBox_003_Color = 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 = 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 = 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 = 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 = 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 = QLineEdit() | |
grid.addWidget(self.LE_CRed, 1, 0) | |
self.LE_CGreen = QLineEdit() | |
grid.addWidget(self.LE_CGreen, 1, 1) | |
self.LE_CBlue = QLineEdit() | |
grid.addWidget(self.LE_CBlue, 1, 2) | |
self.LE_Transparent = QLineEdit() | |
grid.addWidget(self.LE_Transparent, 1, 3) | |
self.LE_ConversionUnsigned = QLineEdit() | |
grid.addWidget(self.LE_ConversionUnsigned, 2, 0, 1, 4) | |
self.CBox_Color_FaceObject = 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 = 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 = 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 = 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 = QGridLayout() | |
self.GBox_004_Object_Mesh = 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 = QLabel() | |
self.LE_N_Edges = QLineEdit() | |
grid.addWidget(self.LA_N_Edges, 0, 0) | |
grid.addWidget(self.LE_N_Edges, 1, 0) | |
self.LA_N_Facets = QLabel() | |
self.LE_N_Facets = QLineEdit() | |
grid.addWidget(self.LA_N_Facets, 0, 1) | |
grid.addWidget(self.LE_N_Facets, 1, 1) | |
self.LA_N_Points = QLabel() | |
self.LE_N_Points = QLineEdit() | |
grid.addWidget(self.LA_N_Points, 0, 2) | |
grid.addWidget(self.LE_N_Points, 1, 2) | |
#### Unit | |
grid = QGridLayout() | |
self.GBox_005_Value_Unit = 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 = QLabel() | |
grid.addWidget(self.LA_5a, 0, 0) | |
self.comboBox = 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) | |
self.comboBox.currentTextChanged.connect(self.SIGNAL_comboBox_Changed) | |
grid.addWidget(self.comboBox, 0, 1)#, 1, 2 | |
#### Line Cercle et BSpline | |
self.LA_5 = QLabel() | |
grid.addWidget(self.LA_5, 1, 0)#, 1, 2 | |
self.LE_5 = QLineEdit() | |
grid.addWidget(self.LE_5, 1, 1)#, 1, 2 | |
self.LA_5b = QLabel() | |
grid.addWidget(self.LA_5b, 2, 0)#, 1, 2 | |
self.LE_5b = QLineEdit() | |
grid.addWidget(self.LE_5b, 2, 1)#, 1, 2 | |
self.SB_Arc_ToByArcs = 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 = QLabel() | |
grid.addWidget(self.LA_6, 3, 0)#, 1, 1 | |
self.LE_6 = QLineEdit() | |
grid.addWidget(self.LE_6, 3, 1) | |
self.PB_BSplineCreateNodes = 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 = QGridLayout() | |
self.GBox_006_Inclination = 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 = QLabel(self.GBox_006_Inclination) | |
grid.addWidget(self.LA_8a, 0, 0) | |
self.PB_Ra = 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 = QLabel() | |
grid.addWidget(self.LA_8a_2, 0, 2, 1, 3) | |
self.LA_8xy = 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 = QLineEdit() | |
grid.addWidget(self.LE_8xy, 1, 1) | |
self.LE_8xya = QLineEdit() | |
grid.addWidget(self.LE_8xya, 1, 2) | |
self.LA_8yz = 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 = QLineEdit() | |
grid.addWidget(self.LE_8yz, 2, 1) | |
self.LE_8yza = QLineEdit() | |
grid.addWidget(self.LE_8yza, 2, 2) | |
self.LA_8zx = 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 = QLineEdit() | |
grid.addWidget(self.LE_8zx, 3, 1) | |
self.LE_8zxa = QLineEdit() | |
grid.addWidget(self.LE_8zxa, 3, 2) | |
self.PB_Line_Direction = 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 = QLineEdit() | |
grid.addWidget(self.LE_9_Direction, 4, 1, 1, 2) | |
self.PB_Line_ValueAT = 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 = QLineEdit() | |
grid.addWidget(self.LE_10_ValueAt, 5, 1, 1, 2) | |
self.PB_Line_NormalAT = 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 = QLineEdit() | |
grid.addWidget(self.LE_10b_NormalAt, 6, 1, 1, 2) | |
##### Surface and Volume | |
grid = QGridLayout() | |
self.GBox_007_Surface_and_Volume = 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 = QLabel() | |
grid.addWidget(self.LA_9, 0, 0) | |
self.LE_9a = QLineEdit() | |
grid.addWidget(self.LE_9a, 0, 1) | |
self.LA_10 = QLabel() | |
grid.addWidget(self.LA_10, 1, 0) | |
self.LE_10a = QLineEdit() | |
grid.addWidget(self.LE_10a, 1, 1) | |
self.LA_11 = QLabel() | |
grid.addWidget(self.LA_11, 2, 0) | |
self.LE_11a = QLineEdit() | |
grid.addWidget(self.LE_11a, 2, 1) | |
self.LA_Unit = QLabel() | |
grid.addWidget(self.LA_Unit, 3, 0) | |
self.comboBox_Unit = 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) | |
self.comboBox_Unit.currentTextChanged.connect(self.SIGNAL_comboPoids_Changed) | |
grid.addWidget(self.comboBox_Unit, 3, 1) | |
self.LA_Weight = QLabel() | |
grid.addWidget(self.LA_Weight, 4, 0) | |
self.LA_Density = QLabel() | |
grid.addWidget(self.LA_Density, 4, 1) | |
self.LE_12a = QLineEdit() | |
self.LE_12a.setText(str(Around(poids))+" "+unitePs) | |
grid.addWidget(self.LE_12a, 5, 0) | |
self.DS_Density = 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 = QLabel() | |
grid.addWidget(self.LA_Material, 6, 0) | |
self.CBox_Materiel = QComboBox() | |
for ligneMat in materialAssociated: | |
self.CBox_Materiel.addItem(_fromUtf8(ligneMat)) | |
self.CBox_Materiel.setCurrentIndex(seTMaterialCurrentIndex) | |
self.CBox_Materiel.currentTextChanged.connect(self.SIGNAL_CBox_Materiel_Changed) | |
grid.addWidget(self.CBox_Materiel,7, 0, 1, 2) | |
self.LA_NewMaterial = QLabel() | |
grid.addWidget(self.LA_NewMaterial, 8, 0) | |
self.LE_Materiel = 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 = 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 = 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 = QGridLayout() | |
self.GBox_008_Cost_And_Price = 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 = QLabel() | |
grid.addWidget(self.LA_Cost, 0, 0) | |
self.LA_Price = QLabel() | |
grid.addWidget(self.LA_Price, 0, 1) | |
self.LE_Cost = 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 = 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 = QGridLayout() | |
self.GBox_009_BoundBox = 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 = 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 = 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 = 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 = QLabel() | |
grid.addWidget(self.LA_007_04_Diagonallength, 0, 3) | |
self.LE_007_BB_01_XLength = QLineEdit() | |
grid.addWidget(self.LE_007_BB_01_XLength, 1, 0) | |
self.LE_007_BB_02_YLength = QLineEdit() | |
grid.addWidget(self.LE_007_BB_02_YLength, 1, 1) | |
self.LE_007_BB_03_ZLength = QLineEdit() | |
grid.addWidget(self.LE_007_BB_03_ZLength, 1, 2) | |
self.LE_007_BB_04_Diagonal = QLineEdit() | |
grid.addWidget(self.LE_007_BB_04_Diagonal, 1, 3) | |
self.PB_BoundBox_Tracing = 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 = 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 = 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 = 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 = QGridLayout() | |
self.GBox_010_Center_Mass = 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 = 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 = 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 = 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 = QLineEdit() | |
grid.addWidget(self.LE_13x, 2, 0) | |
self.LE_13y = QLineEdit() | |
grid.addWidget(self.LE_13y, 2, 1) | |
self.LE_13z = QLineEdit() | |
grid.addWidget(self.LE_13z, 2, 2) | |
self.PB_Axis_02 = 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 = 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 = 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 = 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 = QLineEdit() | |
grid.addWidget(self.LE_14x, 5, 0) | |
self.LE_14y = QLineEdit() | |
grid.addWidget(self.LE_14y, 5, 1) | |
self.LE_14z = QLineEdit() | |
grid.addWidget(self.LE_14z, 5, 2) | |
self.PB_Axis_03 = 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 = QGridLayout() | |
self.GBox_011_Inertia = 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 = QLabel() | |
grid.addWidget(self.LA_16, 0, 0, 1, 3) | |
self.LE_16_Raw = QLineEdit() # mode RAW | |
grid.addWidget(self.LE_16_Raw, 1, 0, 1, 5) | |
##oriself.LE_16_M = QLineEdit() # change en spinBox | |
self.SB_16_M = QSpinBox() | |
#self.SB_16_M.setEnabled(False) | |
self.SB_16_M.setMinimum(0) | |
self.SB_16_M.setMaximum(999999) | |
self.SB_16_M.setPrefix(u"mm^") | |
self.SB_16_M.setAlignment(QtCore.Qt.AlignCenter) | |
self.SB_16_M.setValue(setMomentOfInertia_16) | |
self.SB_16_M.valueChanged.connect(self.on_SB_16_M_valueChanged) | |
self.SB_16_M.setStyleSheet(u"QLineEdit {color: #000000; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.SB_16_M, 2, 3, 1, 2) | |
self.LA_16x = QLabel() | |
self.LA_16x.setStyleSheet(u"QLabel {color: #ff0000; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_16x, 2, 0) | |
self.LA_16y = QLabel() | |
self.LA_16y.setStyleSheet(u"QLabel {color: #008500; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_16y, 2, 1) | |
self.LA_16z = QLabel() | |
self.LA_16z.setStyleSheet(u"QLabel {color: #0000ff; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_16z, 2, 2) | |
self.LE_16_1x = QLineEdit() | |
self.LE_16_1x.setAlignment(QtCore.Qt.AlignLeft) | |
self.LE_16_1x.cursorPosition() | |
self.LE_16_1x.setCursorPosition(1) | |
grid.addWidget(self.LE_16_1x, 3, 0) | |
self.LE_16_1y = QLineEdit() | |
self.LE_16_1y.setAlignment(QtCore.Qt.AlignLeft) | |
self.LE_16_1y.cursorPosition() | |
self.LE_16_1y.setCursorPosition(1) | |
grid.addWidget(self.LE_16_1y, 3, 1) | |
self.LE_16_1z = QLineEdit() | |
self.LE_16_1z.setAlignment(QtCore.Qt.AlignLeft) | |
self.LE_16_1z.cursorPosition() | |
self.LE_16_1z.setCursorPosition(1) | |
grid.addWidget(self.LE_16_1z, 3, 2) | |
self.LE_16_01 = QLineEdit() | |
self.LE_16_01.setEnabled(False) | |
grid.addWidget(self.LE_16_01, 3, 3) | |
self.PB_Axis_04_16_1 = 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, 3, 4) | |
self.LE_16_2x = QLineEdit() | |
grid.addWidget(self.LE_16_2x, 4, 0) | |
self.LE_16_2y = QLineEdit() | |
grid.addWidget(self.LE_16_2y, 4, 1) | |
self.LE_16_2z = QLineEdit() | |
grid.addWidget(self.LE_16_2z, 4, 2) | |
self.LE_16_02 = QLineEdit() | |
self.LE_16_02.setEnabled(False) | |
grid.addWidget(self.LE_16_02, 4, 3) | |
self.PB_Axis_05_16_2 = 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, 4, 4) | |
self.LE_16_3x = QLineEdit() | |
grid.addWidget(self.LE_16_3x, 5, 0) | |
self.LE_16_3y = QLineEdit() | |
grid.addWidget(self.LE_16_3y, 5, 1) | |
self.LE_16_3z = QLineEdit() | |
grid.addWidget(self.LE_16_3z, 5, 2) | |
self.LE_16_03 = QLineEdit() | |
self.LE_16_03.setEnabled(False) | |
grid.addWidget(self.LE_16_03, 5, 3) | |
self.PB_Axis_06_16_3 = 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, 5, 4) | |
self.LE_16_4x = QLineEdit() | |
self.LE_16_4x.setEnabled(False) | |
grid.addWidget(self.LE_16_4x, 6, 0) | |
self.LE_16_4y = QLineEdit() | |
self.LE_16_4y.setEnabled(False) | |
grid.addWidget(self.LE_16_4y, 6, 1) | |
self.LE_16_4z = QLineEdit() | |
self.LE_16_4z.setEnabled(False) | |
grid.addWidget(self.LE_16_4z, 6, 2) | |
self.LE_16_04 = QLineEdit() | |
self.LE_16_04.setEnabled(False) | |
grid.addWidget(self.LE_16_04, 6, 3) | |
self.PB_Axis_07_16_4 = 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, 6, 4) | |
self.LA_17 = QLabel() | |
grid.addWidget(self.LA_17, 7, 0, 1, 3) | |
##self.LE_17_M = QLineEdit() # change en spinBox | |
self.SB_17_M = QSpinBox() | |
#self.SB_17_M.setEnabled(False) | |
self.SB_17_M.setMinimum(0) | |
self.SB_17_M.setMaximum(999999) | |
self.SB_17_M.setPrefix(u"mm2^") | |
self.SB_17_M.setAlignment(QtCore.Qt.AlignCenter) | |
self.SB_17_M.setValue(setMomentOfInertiaMassique_17) | |
self.SB_17_M.valueChanged.connect(self.on_SB_17_M_valueChanged) | |
self.SB_17_M.setAlignment(QtCore.Qt.AlignCenter) | |
self.SB_17_M.setStyleSheet(u"QLineEdit {color: #000000; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.SB_17_M, 8, 3, 1, 2) | |
self.LA_17x = QLabel() | |
self.LA_17x.setStyleSheet(u"QLabel {color: #ff0000; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_17x, 8, 0) | |
self.LA_17y = QLabel() | |
self.LA_17y.setStyleSheet(u"QLabel {color: #008500; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_17y, 8, 1) | |
self.LA_17z = QLabel() | |
self.LA_17z.setStyleSheet(u"QLabel {color: #0000ff; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_17z, 8, 2) | |
self.LE_17_1x = QLineEdit() | |
grid.addWidget(self.LE_17_1x, 9, 0) | |
self.LE_17_1y = QLineEdit() | |
grid.addWidget(self.LE_17_1y, 9, 1) | |
self.LE_17_1z = QLineEdit() | |
grid.addWidget(self.LE_17_1z, 9, 2) | |
self.PB_Axis_08_17_1 = 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, 9, 4) | |
self.LE_17_2x = QLineEdit() | |
grid.addWidget(self.LE_17_2x, 10, 0) | |
self.LE_17_2y = QLineEdit() | |
grid.addWidget(self.LE_17_2y, 10, 1) | |
self.LE_17_2z = QLineEdit() | |
grid.addWidget(self.LE_17_2z, 10, 2) | |
self.PB_Axis_09_17_2 = 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, 10, 4) | |
self.LE_17_3x = QLineEdit() | |
grid.addWidget(self.LE_17_3x, 11, 0) | |
self.LE_17_3y = QLineEdit() | |
grid.addWidget(self.LE_17_3y, 11, 1) | |
self.LE_17_3z = QLineEdit() | |
grid.addWidget(self.LE_17_3z, 11, 2) | |
self.PB_Axis_10_17_3 = 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, 11, 4) | |
self.PB_Axis_11_17_4 = 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, 12, 4) | |
self.LA_determinant = QLabel() | |
grid.addWidget(self.LA_determinant, 13, 0, 1, 1) | |
self.LE_18_determinant = QLineEdit() | |
grid.addWidget(self.LE_18_determinant, 13, 1, 1, 4) | |
self.LA_determinantDecimal = QLabel() | |
grid.addWidget(self.LA_determinantDecimal, 14, 0, 1, 1) | |
self.LE_18_determinantDecim = QLineEdit() | |
grid.addWidget(self.LE_18_determinantDecim, 14, 1, 1, 4) | |
#### Disabled Module (SpreadSheet) | |
grid = QGridLayout() | |
self.GBox_012_SpreadSheet = 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 = 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 = QGridLayout() | |
self.GBox_013_SpreadSheet_Creation = 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 = 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 = 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 = 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 = QComboBox() | |
self.ComboB_SpreadSheet.currentTextChanged.connect(self.On_ComboB_SpreadSheet) | |
grid.addWidget(self.ComboB_SpreadSheet, 1, 2, 1, 2) | |
#### SpreadSheet sur disque | |
self.PB_01_Read_SpreadSheet = 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 = 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 = 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 = QRadioButton() | |
self.RB_02_Virgule.clicked.connect(self.on_RB_Separation) | |
grid.addWidget(self.RB_02_Virgule, 3, 1) | |
self.RB_03_Point_Virgule = 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 = QRadioButton() | |
self.RB_04_Espace.clicked.connect(self.on_RB_Separation) | |
grid.addWidget(self.RB_04_Espace, 3, 3) | |
#options CSV fin | |
#### Main | |
grid = QGridLayout() | |
self.GBox_014_Main_Tools = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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 = 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) | |
platform_node = "" #platform.node() | |
platform_system = platform.system() | |
MainWindow.setWindowTitle(__Title__ + u" rmu (" + __Version__ + ") (" + __Date__ + ") (" + platform_system + ") (" + platform_node + ")") | |
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 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 | |
#self.LA_determinantDecimal = QLabel() | |
#grid.addWidget(self.LA_determinantDecimal, 14, 0, 1, 1) | |
self.on_SP_012_01_Text_valueChanged(seTTextHeigthValue) # actualise text | |
MainWindow.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint) # PySide cette fonction met la fenetre en avant | |
##https://doc.qt.io/qt-5/qtwidgets-widgets-windowflags-example.html | |
#MainWindow.setWindowFlags(QtCore.Qt.WindowTitleHint) # 2 absents X grise (fonctionne pas dans ComboView et desactive WindowStaysOnTopHint) | |
#MainWindow.setWindowFlags(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>µ</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>µ</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"newNameMaterial : le nom du material" + "\n" | |
u"Density \t : densité du matériel en Kg par dm3" + "\n" | |
u"Price \t : prix due matériel" + "\n" | |
u"Info \t : info sur le matériel ou autre info" + "\n\n" | |
u"Chaque champ est separé par une virgule" + "\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"<html> <body>" | |
u"############################################################################################################" + "<br/>" | |
u" INFORMATION" + "<br/>" | |
u" VERIFY THIS SECTION BY PERSON KNOWING THE INERTIA" + "<br/>" | |
u" and thanks post your knowledges in the forum tread if it is not correct" + "<br/>" | |
u" http://forum.freecadweb.org/viewtopic.php?f=10&t=3185 " + "<br/>" | |
u" ###########" | |
u"<p style=color:Yellow >" | |
u" * Use at your own risk. The author assumes no liability for data loss. *" | |
u"</p>" | |
u" ###########" + "<br/>" | |
u"The exposant value 1 (Raw) correspond mode base of FreeCAD" + "<br/>" | |
u"Code used :" | |
u"<p style=color:DarkBlue >" | |
u"####" + "<br/>" | |
u"Matrix = Gui.Selection.getSelection()[0].Shape.MatrixOfInertia # (complete data .A[0] to .A[11])" + "<br/>" | |
u"MatrixX1 = Gui.Selection.getSelection()[0].Shape.MatrixOfInertia.A[0] # (first field, first data)" + "<br/>" | |
u"#volume = Gui.Selection.getSelection()[0].Shape.Volume" + "<br/>" | |
u"uniteV = 1.0 # mm3 base FreeCAD ## (kilo = 0.000000000000000001)" + "<br/>" | |
u"uniteS = 1.0 # mm2 base FreeCAD ## (kilo = 0.000000000001)" + "<br/>" | |
u"uniteM = 1.0 # mm base FreeCAD ## (kilo = 0.000001)" + "<br/>" | |
u"uniteP = 1.0 # gram base FreeCAD## (kilo = 0.001)" + "<br/>" | |
u"setMomentOfInertia_16 = 2 # exposant Moment of inertia value " + "<br/>" | |
u"setMomentOfInertiaMassique_17 = 2 # exposant Moment of inertia massique value" + "<br/>" | |
u"seTDensiteValue = 7.8700 # kg by dm3 (iron)" + "<br/>" | |
u"MatrixX1_16 = (MatrixX1*uniteS)**setMomentOfInertia_16" + "<br/>" | |
u"MatrixX1_17 = (MatrixX1*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0))" + "<br/>" | |
u"####" | |
u"</p>" | |
u" ###########" + "<br/>" | |
u"The moment of inertia, otherwise known as the angular mass or" + "<br/>" | |
u"rotational inertia, of a rigid body is a tensor that determines" + "<br/>" | |
u"the torque needed for a desired angular acceleration about a rotational axis." + "<br/>" | |
u"It depends on the body's mass distribution and the axis chosen," + "<br/>" | |
u"with larger moments requiring more torque to change the body's rotation." + "<br/>" | |
u"see https://en.wikipedia.org/wiki/Moment_of_inertia " + "<br/>" | |
u"############################################################################################################" | |
u"</html> </body>") | |
self.LA_16.setText(u"Moment of inertia") | |
self.LE_16_Raw.setText("Raw : " + MatrixOfInertiaRaw) | |
self.LE_16_Raw.setCursorPosition(0) | |
self.LA_16x.setText(u"X") | |
self.LA_16y.setText(u"Y") | |
self.LA_16z.setText(u"Z") | |
#self.SB_16_M.setText(uniteMs + "^5") | |
self.SB_16_M.setPrefix(uniteMs + "^") | |
self.SB_16_M.setValue(setMomentOfInertia_16) | |
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.SB_17_M.setPrefix(unitePs + uniteSs + "^") | |
self.SB_17_M.setValue(setMomentOfInertiaMassique_17) | |
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"voir 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 displayMatrixMomentOfInertia(self): | |
global setMomentOfInertia_16 | |
global setMomentOfInertiaMassique_17 | |
global MatrixOfInertiaRaw | |
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 | |
self.LE_16_Raw.setText("Raw : " + MatrixOfInertiaRaw) | |
self.LE_16_Raw.setCursorPosition(0) | |
self.SB_16_M.setValue(setMomentOfInertia_16) | |
self.SB_16_M.setPrefix(uniteMs + "^") | |
## | |
self.LE_16_1x.setText(str(Around(MatrixX1_16))) | |
self.LE_16_1x.setCursorPosition(0) | |
self.LE_16_1y.setText(str(Around(MatrixY1_16))) | |
self.LE_16_1y.setCursorPosition(0) | |
self.LE_16_1z.setText(str(Around(MatrixZ1_16))) | |
self.LE_16_1z.setCursorPosition(0) | |
self.LE_16_01.setText(str(Around(Matrix_1))) | |
self.LE_16_01.setCursorPosition(0) | |
## | |
self.LE_16_2x.setText(str(Around(MatrixX2_16))) | |
self.LE_16_2x.setCursorPosition(0) | |
self.LE_16_2y.setText(str(Around(MatrixY2_16))) | |
self.LE_16_2y.setCursorPosition(0) | |
self.LE_16_2z.setText(str(Around(MatrixZ2_16))) | |
self.LE_16_2z.setCursorPosition(0) | |
self.LE_16_02.setText(str(Around(Matrix_2))) | |
self.LE_16_02.setCursorPosition(0) | |
## | |
self.LE_16_3x.setText(str(Around(MatrixX3_16))) | |
self.LE_16_3x.setCursorPosition(0) | |
self.LE_16_3y.setText(str(Around(MatrixY3_16))) | |
self.LE_16_3y.setCursorPosition(0) | |
self.LE_16_3z.setText(str(Around(MatrixZ3_16))) | |
self.LE_16_3z.setCursorPosition(0) | |
self.LE_16_03.setText(str(Around(Matrix_3))) | |
self.LE_16_03.setCursorPosition(0) | |
## | |
self.LE_16_4x.setText(str(Around(Matrix12))) | |
self.LE_16_4x.setCursorPosition(0) | |
self.LE_16_4y.setText(str(Around(Matrix13))) | |
self.LE_16_4y.setCursorPosition(0) | |
self.LE_16_4z.setText(str(Around(Matrix14))) | |
self.LE_16_4z.setCursorPosition(0) | |
self.LE_16_04.setText(str(Around(Matrix15))) | |
self.LE_16_04.setCursorPosition(0) | |
## | |
#### | |
self.SB_17_M.setValue(setMomentOfInertiaMassique_17) | |
self.SB_17_M.setPrefix(unitePs + uniteSs + "^") | |
self.LE_17_1x.setText(str(Around(MatrixX1_17))) | |
self.LE_17_1x.setCursorPosition(0) | |
self.LE_17_1y.setText(str(Around(MatrixY1_17))) | |
self.LE_17_1y.setCursorPosition(0) | |
self.LE_17_1z.setText(str(Around(MatrixZ1_17))) | |
self.LE_17_1z.setCursorPosition(0) | |
self.LE_17_2x.setText(str(Around(MatrixX2_17))) | |
self.LE_17_2x.setCursorPosition(0) | |
self.LE_17_2y.setText(str(Around(MatrixY2_17))) | |
self.LE_17_2y.setCursorPosition(0) | |
self.LE_17_2z.setText(str(Around(MatrixZ2_17))) | |
self.LE_17_2z.setCursorPosition(0) | |
self.LE_17_3x.setText(str(Around(MatrixX3_17))) | |
self.LE_17_3x.setCursorPosition(0) | |
self.LE_17_3y.setText(str(Around(MatrixY3_17))) | |
self.LE_17_3y.setCursorPosition(0) | |
self.LE_17_3z.setText(str(Around(MatrixZ3_17))) | |
self.LE_17_3z.setCursorPosition(0) | |
self.LE_18_determinant.setText(str(DeterminantM)) | |
self.LE_18_determinantDecim.setText(str(decimal.Decimal(DeterminantM))) | |
def on_SP_012_01_Text_valueChanged(self, value): | |
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.LE_16_Raw.setFont(self.fontGlobal_08) | |
self.LA_16.setFont(self.fontGlobal_08) | |
self.SB_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.SB_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 seTDecimalValue | |
global FreeCAD_ParamGetSet | |
seTDecimalValue = value | |
FreeCAD_ParamGetSet.SetInt(u"seTDecimalValue", seTDecimalValue) # *4 | |
self.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): | |
if self.GBox_012_SpreadSheet.isChecked(): | |
self.GBox_012_SpreadSheet.setStyleSheet(u"QGroupBox {color : QPalette.Base;}") # origin system | |
self.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 | |
self.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 | |
if len(FreeCADGui.Selection.getSelection()) != 0: | |
if seTPositionFlyRightLeft == 1: self.window.hide() # 1=MainWindow separate | |
couleur = 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)) + '"' | |
# | |
self.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_SB_16_M_valueChanged(self, value): | |
global FreeCAD_ParamGetSet | |
global setMomentOfInertia_16 | |
setMomentOfInertia_16 = value | |
FreeCAD_ParamGetSet.SetInt(u"setMomentOfInertia_16", setMomentOfInertia_16) | |
self.on_PB_01_Refrech_clicked() | |
def on_SB_17_M_valueChanged(self, value): | |
global FreeCAD_ParamGetSet | |
global setMomentOfInertiaMassique_17 | |
setMomentOfInertiaMassique_17 = value | |
FreeCAD_ParamGetSet.SetInt(u"setMomentOfInertiaMassique_17", setMomentOfInertiaMassique_17) | |
self.on_PB_01_Refrech_clicked() | |
def on_PB_Axis_Center_Shape(self): | |
global boundBoxCenterX | |
global boundBoxCenterY | |
global boundBoxCenterZ | |
self.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 | |
self.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 | |
self.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 | |
self.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 | |
self.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 | |
self.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 | |
self.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 | |
self.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 | |
self.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 | |
self.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 massOrGravity | |
global setMomentOfInertia_16 | |
global setMomentOfInertiaMassique_17 | |
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>µ</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() | |
self.LA_14x.setText(massOrGravity + u" X") | |
self.LA_14y.setText(massOrGravity + u" Y") | |
self.LA_14z.setText(massOrGravity + u" Z") | |
try: | |
poids = ((volume_ * seTDensiteValue) * uniteP) / 1000.0 | |
self.LE_12a.setText(str(Around(poids))+ " " +unitePs) | |
seTMaterialCost = ((volume_ * seTDensiteValue * seTMaterialPrice) / 1000000.0) | |
self.LE_Cost.setText(str(Around(seTMaterialCost)) + seTMaterialSuffixCost) #CostMaterial | |
except Exception: | |
self.LE_12a.setText(u"") | |
self.LE_Cost.setText(u"-" + seTMaterialSuffixCost) #CostMaterial | |
self.SB_17_M.setPrefix(unitePs + uniteSs + "^") | |
self.SB_17_M.setValue(setMomentOfInertiaMassique_17) | |
try: | |
## MatrixX1_17 = MatrixX1*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) ## original without parenthesis and modified 17/03/2024 | |
MatrixX1_17 = (MatrixX1*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixY1_17 = (MatrixY1*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixZ1_17 = (MatrixZ1*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixX2_17 = (MatrixX2*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixY2_17 = (MatrixY2*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixZ2_17 = (MatrixZ2*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixX3_17 = (MatrixX3*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixY3_17 = (MatrixY3*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixZ3_17 = (MatrixZ3*uniteM)**setMomentOfInertiaMassique_17*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.displayMatrixMomentOfInertia() | |
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 massOrGravity | |
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 setMomentOfInertia_16 | |
global setMomentOfInertiaMassique_17 | |
global MatrixOfInertiaRaw | |
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() | |
self.LA_14x.setText(massOrGravity + u" X") | |
self.LA_14y.setText(massOrGravity + u" Y") | |
self.LA_14z.setText(massOrGravity + u" Z") | |
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) | |
self.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"") | |
self.SB_16_M.setPrefix(uniteMs + "^") | |
self.SB_16_M.setValue(setMomentOfInertia_16) | |
self.LE_16_Raw.setText("Raw : " + MatrixOfInertiaRaw) | |
self.LE_16_Raw.setCursorPosition(0) | |
try: | |
## MatrixX1_16 = MatrixX1*uniteM**setMomentOfInertia_16 ## original without parenthesis and modified 17/03/2024 | |
MatrixX1_16 = (MatrixX1*uniteM)**setMomentOfInertia_16 | |
MatrixY1_16 = (MatrixY1*uniteM)**setMomentOfInertia_16 | |
MatrixZ1_16 = (MatrixZ1*uniteM)**setMomentOfInertia_16 | |
MatrixX2_16 = (MatrixX2*uniteM)**setMomentOfInertia_16 | |
MatrixY2_16 = (MatrixY2*uniteM)**setMomentOfInertia_16 | |
MatrixZ2_16 = (MatrixZ2*uniteM)**setMomentOfInertia_16 | |
MatrixX3_16 = (MatrixX3*uniteM)**setMomentOfInertia_16 | |
MatrixY3_16 = (MatrixY3*uniteM)**setMomentOfInertia_16 | |
MatrixZ3_16 = (MatrixZ3*uniteM)**setMomentOfInertia_16 | |
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.SB_16_M.setText(u"") | |
try: | |
## MatrixX1_17 = MatrixX1*uniteM**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) ## original without parenthesis and modified 17/03/2024 | |
MatrixX1_17 = (MatrixX1*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixY1_17 = (MatrixY1*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixZ1_17 = (MatrixZ1*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixX2_17 = (MatrixX2*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixY2_17 = (MatrixY2*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixZ2_17 = (MatrixZ2*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixX3_17 = (MatrixX3*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixY3_17 = (MatrixY3*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixZ3_17 = (MatrixZ3*uniteM)**setMomentOfInertiaMassique_17*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.displayMatrixMomentOfInertia() | |
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 = QTableWidgetItem(u"") | |
self.tableWidget.setItem( li,co, newitem) | |
co = 0 | |
li = 0 | |
aa = 0 | |
for j in enumerate(Edges): # Edges | |
newitem = QTableWidgetItem(str(j[1])) | |
self.tableWidget.setItem( li,0, newitem) | |
newitem = 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 = QTableWidgetItem(str(Vertx[a])) | |
chaine = str(Vertx[a]).split(u":") | |
newitem = 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 = QTableWidgetItem(str(j[1])) | |
self.tableWidget.setItem( li,0, newitem) | |
newitem = 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 = QTableWidgetItem(FacesCoor[jj]) | |
chaine = str(FacesCoor[jj]).split(":") | |
newitem = 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]) | |
self.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 | |
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() | |
self.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 volume_ | |
global uniteM | |
global uniteP | |
global unitePs | |
global uniteV # uniteV not in Global ?, add it 05/12/21 | |
global seTDensiteValue | |
global poids | |
global setMomentOfInertia_16 | |
global setMomentOfInertiaMassique_17 | |
global MatrixX1 | |
global MatrixY1 | |
global MatrixZ1 | |
global MatrixX2 | |
global MatrixY2 | |
global MatrixZ2 | |
global MatrixX3 | |
global MatrixY3 | |
global MatrixZ3 | |
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 | |
self.SB_17_M.setPrefix(unitePs + uniteSs + "^") | |
self.SB_17_M.setValue(setMomentOfInertiaMassique_17) | |
try: | |
## MatrixX1_17 = MatrixX1*uniteM**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) ## original without parenthesis and modified 17/03/2024 | |
MatrixX1_17 = (MatrixX1*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixY1_17 = (MatrixY1*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixZ1_17 = (MatrixZ1*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixX2_17 = (MatrixX2*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixY2_17 = (MatrixY2*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixZ2_17 = (MatrixZ2*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixX3_17 = (MatrixX3*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixY3_17 = (MatrixY3*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixZ3_17 = (MatrixZ3*uniteM)**setMomentOfInertiaMassique_17*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.displayMatrixMomentOfInertia() | |
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 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 massOrGravity | |
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 setMomentOfInertia_16 | |
global setMomentOfInertiaMassique_17 | |
global MatrixOfInertiaRaw | |
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.LA_14x.setText(massOrGravity + u" X") | |
self.LA_14y.setText(massOrGravity + u" Y") | |
self.LA_14z.setText(massOrGravity + u" Z") | |
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 = [] | |
self.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 = QTableWidgetItem(u"Nombre de noeuds") | |
self.tableWidget.setItem( li,0, newitem) | |
newitem = QTableWidgetItem(str(len(BsplinePointsCoor))) | |
self.tableWidget.setItem( li,1, newitem) | |
li += 1 | |
for i in enumerate(BsplinePointsCoor): # Edges | |
newitem = 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 = 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 = QTableWidgetItem(str(j[1])) | |
self.tableWidget.setItem( li,0, newitem) | |
newitem = 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 = QTableWidgetItem(str(Vertx[a])) | |
chaine = str(Vertx[a]).split(":") | |
newitem = 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 = QTableWidgetItem(str(j[1])) | |
self.tableWidget.setItem( li,0, newitem) | |
newitem = 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 = QTableWidgetItem(FacesCoor[jj]) | |
chaine = str(FacesCoor[jj]).split(":") | |
newitem = 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) | |
self.SB_16_M.setPrefix(uniteMs + "^") | |
self.SB_16_M.setValue(setMomentOfInertia_16) | |
self.LE_16_Raw.setText("Raw : " + MatrixOfInertiaRaw) | |
self.LE_16_Raw.setCursorPosition(0) | |
try: | |
## MatrixX1_16 = MatrixX1*uniteM**setMomentOfInertia_16 ## original without parenthesis and modified 17/03/2024 | |
MatrixX1_16 = (MatrixX1*uniteS)**setMomentOfInertia_16 | |
MatrixY1_16 = (MatrixY1*uniteS)**setMomentOfInertia_16 | |
MatrixZ1_16 = (MatrixZ1*uniteS)**setMomentOfInertia_16 | |
MatrixX2_16 = (MatrixX2*uniteS)**setMomentOfInertia_16 | |
MatrixY2_16 = (MatrixY2*uniteS)**setMomentOfInertia_16 | |
MatrixZ2_16 = (MatrixZ2*uniteS)**setMomentOfInertia_16 | |
MatrixX3_16 = (MatrixX3*uniteS)**setMomentOfInertia_16 | |
MatrixY3_16 = (MatrixY3*uniteS)**setMomentOfInertia_16 | |
MatrixZ3_16 = (MatrixZ3*uniteS)**setMomentOfInertia_16 | |
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.SB_16_M.setText(u"") | |
try: | |
## MatrixX1_17 = MatrixX1*uniteM**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) ## original without parenthesis and modified 17/03/2024 | |
MatrixX1_17 = (MatrixX1*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixY1_17 = (MatrixY1*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixZ1_17 = (MatrixZ1*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixX2_17 = (MatrixX2*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixY2_17 = (MatrixY2*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixZ2_17 = (MatrixZ2*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixX3_17 = (MatrixX3*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixY3_17 = (MatrixY3*uniteM)**setMomentOfInertiaMassique_17*seTDensiteValue*uniteP*(1.0/(uniteV*1000.0)) | |
MatrixZ3_17 = (MatrixZ3*uniteM)**setMomentOfInertiaMassique_17*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.displayMatrixMomentOfInertia() | |
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" | |
self.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 platform.node() == "mint": # Mint | |
OpenName, Filter = QFileDialog.getOpenFileName(None, u"Read a txt file", setPathLatestDirectory, "(FCInfo *.FCInfo);;(Cvs *.csv);;(Ascii *.asc);;(TXT *.txt);;(*.*);;(*)")#PySide Mint | |
#### mint | |
else: | |
OpenName, Filter = QFileDialog.getOpenFileName(None, u"Read a txt file", setPathLatestDirectory, "*.FCInfo *.csv *.asc *.txt;;FCInfo (*.FCInfo);;Cvs (*.csv);;Ascii (*.asc);;TXT (*.txt);;(*.*);;(*)")#PySide | |
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 = 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(QtCore.Qt.WindowStaysOnTopHint) # PySide | |
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 = 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 massOrGravity | |
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 setMomentOfInertia_16 | |
global setMomentOfInertiaMassique_17 | |
global MatrixOfInertiaRaw | |
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 platform.node() == "mint": # Mint | |
SaveName, Filter = QFileDialog.getSaveFileName(None, "Save a txt file", setPathLatestDirectory, " (FCInfo *.FCInfo);; (Cvs *.csv);; (Ascii *.asc);; (TXT *.txt);;(*.*);;(*)")#PySide Mint | |
Filter = Filter[Filter.find("."):Filter.find(")")] | |
if Filter[-2:] == ".*": | |
Filter = Filter[:-2] | |
if SaveName.count(".") == 1: # supposed extension free | |
None | |
else: | |
SaveName = SaveName + Filter | |
#### Windows | |
elif platform.system() == "Windows": | |
SaveName, Filter = QFileDialog.getSaveFileName(None, "Save a txt file", setPathLatestDirectory, "*.FCInfo *.csv *.asc *.txt;;FCInfo (*.FCInfo);;Cvs (*.csv);;Ascii (*.asc);;TXT (*.txt);;(*.*);;(*)")#PySide | |
#### other Kubuntu | |
else: | |
SaveName, Filter = QFileDialog.getSaveFileName(None, "Save a txt file", setPathLatestDirectory, " (FCInfo *.FCInfo);; (Cvs *.csv);; (Ascii *.asc);; (TXT *.txt);;(*.*);;(*)")#PySide ubuntu | |
Filter = Filter[Filter.find("."):Filter.find(")")] | |
if (Filter == "*.*") or (Filter == ".*") or (Filter == "*") or (Filter == ".") or (Filter == ""): | |
Filter = ".FCInfo" | |
if SaveName.count(".") == 1: # supposed extension free | |
None | |
else: | |
SaveName = SaveName + Filter | |
#### | |
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(u"Matrix of inertia" + ESCAPE + uniteMs + "^" + str(setMomentOfInertia_16)) + "\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 self.CB_01_Info.isChecked(): | |
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, massOrGravity | |
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 setMomentOfInertia_16 | |
global setMomentOfInertiaMassique_17 | |
global MatrixOfInertiaRaw | |
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 = "[]" | |
setMomentOfInertia_16 = 1 | |
setMomentOfInertiaMassique_17 = 1 | |
MatrixOfInertiaRaw = "Raw : " | |
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.LA_14x.setText(massOrGravity + u" X") | |
self.LA_14y.setText(massOrGravity + u" Y") | |
self.LA_14z.setText(massOrGravity + u" Z") | |
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.displayMatrixMomentOfInertia() | |
self.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 | |
self.PB_05_Help_Forum.setText(u"Not access") | |
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 | |
self.PB_06_Help_Wiki.setText(u"Not access") | |
#### 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 setMomentOfInertia_16 | |
global setMomentOfInertiaMassique_17 | |
global MatrixOfInertiaRaw | |
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" Raw:")); tableau.set(self.caseTableau(ligne,colonne+1), str(MatrixOfInertiaRaw)) | |
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 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 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.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 #### | |
self.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: | |
try: | |
ui.GBox_012_SpreadSheet.setVisible(True) | |
ui.GBox_012_SpreadSheet.setEnabled(True) | |
except Exception: | |
None | |
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(QDockWidget) | |
for i in dw: | |
if str(i.objectName()) == __Title__: | |
if i.isVisible(): | |
i.setVisible(False) | |
else: | |
if seTPositionFlyRightLeft == 1: # MainWindow | |
None | |
else: | |
myNewFreeCADWidget = 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 = QMainWindow() # create a new window volant | |
MainWindow.setObjectName(__Title__) # macro internal Name | |
ui = Ui_MainWindow() | |
ui.setupUi(MainWindow) | |
MainWindow.show() | |
#####DockWidget################################################################################ | |
# | |
else: | |
myNewFreeCADWidget = 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This macro utility is intended for the use of the program FreeCAD http://www.freecadweb.org/
rename in FCInfo.png (for button)
The icon for your toolbar, it is to place in your macros directory (in the same location of the macro)
button