-
-
Save mario52a/8d40ab6c018c2bde678f to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*- | |
from __future__ import unicode_literals | |
""" | |
*************************************************************************** | |
* Copyright (c) <mario52> 2014 2015 2016 2017 2018 2019 2020 2021 2022 * | |
* 2023 2024 * | |
* This file is a supplement to the FreeCAD CAx development system. * | |
* * | |
* This program is free software; you can redistribute it and/or modify * | |
* it under the terms of the GNU Lesser General Public License (LGPL) * | |
* as published by the Free Software Foundation; either version 2 of * | |
* the License, or (at your option) any later version. * | |
* for detail see the LICENCE text file. * | |
** ** | |
* Use at your own risk. The author assumes no liability for data loss. * | |
* It is advised to backup your data frequently. * | |
* If you do not trust the software do not use it. * | |
** ** | |
* This software is distributed in the hope that it will be useful, * | |
* but WITHOUT ANY WARRANTY; without even the implied warranty of * | |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |
* GNU Library General Public License for more details. * | |
* * | |
* You should have received a copy of the GNU Library General Public * | |
* License along with this macro; if not, write to the Free Software * | |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * | |
* USA * | |
*************************************************************************** | |
* WARNING! All changes in this file will be lost and * | |
* may cause malfunction of the program * | |
*************************************************************************** | |
""" | |
# FCInfo.FCMacro en | |
# 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 | |
# | |
#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.29b" | |
__Date__ = "2024/05/10" | |
__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 PySide2 | |
from PySide2 import QtGui , QtCore, QtWidgets | |
from PySide2.QtWidgets import QComboBox | |
from PySide2.QtWidgets import QMessageBox | |
from PySide2.QtWidgets import QTableWidget, QApplication | |
from PySide2.QtGui import * | |
from PySide2.QtCore import * | |
from PySide2.QtWidgets import * | |
#import PySide2.QtXml | |
import os | |
import platform | |
import Draft, Part, FreeCAD, PartGui, FreeCADGui | |
import FreeCAD as App | |
import FreeCADGui as Gui | |
from FreeCAD import Base | |
import Sketcher | |
import Points | |
import Mesh | |
import pivy | |
from pivy import coin | |
import Spreadsheet | |
import math | |
import decimal | |
from math import sqrt, pi, sin, cos, asin, acos, atan, atan2, degrees, radians, tan | |
import csv | |
import codecs | |
import sys | |
import copy # pour copier 2 tableaux | |
import re | |
####path######################################################################### | |
global path ; path = "" # | |
#path = FreeCAD.ConfigGet(u"AppHomePath") # path FreeCAD installation | |
#path = FreeCAD.ConfigGet(u"UserAppData") # path FreeCAD User data | |
#path = "your path" # your directory path | |
param = FreeCAD.ParamGet(u"User parameter:BaseApp/Preferences/Macro")# macro path | |
path = param.GetString(u"MacroPath","") + "/" # macro path | |
path = path.replace(u"\\","/") # convert the "\" to "/" | |
#print( u"Path for the icons : " , path ) # | |
################################################################################# | |
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 = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Information, 'New Version', msg) | |
diag.setWindowModality(QtCore.Qt.ApplicationModal) | |
diag.setWindowFlags(PySide2.QtCore.Qt.WindowStaysOnTopHint) # PySide2 cette fonction met la fenetre en avant | |
diag.exec_() | |
except Exception: | |
None | |
return versionDetect, dateDetect | |
except Exception: | |
App_Console_PrintError(u"Not search version not connected for testing or internal error" + "\n") | |
global FreeCAD_ParamGetSet ; FreeCAD_ParamGetSet = FreeCAD.ParamGet(u"User parameter:BaseApp/Preferences/Macros/FCMmacros/" + __Title__) # FreeCAD_ParamGetSet | |
global switchVersionSearch; switchVersionSearch = 0 # Search version switchable in | |
# Tools/Edit parameter/BaseApp/Preferences/Macros/FCMmacros/FCCircularText | |
switchVersionSearch = FreeCAD_ParamGetSet.GetBool(u"switchVersionSearch") | |
FreeCAD_ParamGetSet.SetBool(u"switchVersionSearch", switchVersionSearch) #*True or False | |
if switchVersionSearch == 1: | |
versionSearch() | |
#### Detect version macro ########################################### | |
try: | |
_fromUtf8 = QtCore.QString.fromUtf8 | |
except AttributeError: | |
def _fromUtf8(s): | |
return s | |
try: | |
_encoding = QtWidgets.QApplication.UnicodeUTF8 | |
def _translate(context, text, disambig): | |
return QtWidgets.QApplication.translate(context, text, disambig, _encoding) | |
except AttributeError: | |
def _translate(context, text, disambig): | |
return QtWidgets.QApplication.translate(context, text, disambig) | |
#################################################################################### | |
def iso8859(encoder): | |
# ori 0.18 Py 27 return unicode(encoder).encode('iso-8859-1') | |
verPython = sys.version_info | |
if int(verPython.major) < 3: | |
return unicode(encoder).encode('iso-8859-1') | |
else: | |
encoder = str(encoder) | |
return encoder | |
def utf8(unio): | |
return unicode(unio).encode('UTF8') | |
def heure(): | |
return QtCore.QTime().currentTime().toString('hh:mm:ss') | |
def dateEu(): | |
return QtCore.QDate().currentDate().toString('dd/MM/yyyy') # forme euro | |
def dateUs(): | |
return QtCore.QDate().currentDate().toString('MM/dd/yyyy') # forme us | |
def dateUk(): | |
return QtCore.QDate().currentDate().toString('yyyy/MM/dd') # forme Uk | |
def dateComp(): | |
return QtCore.QDate().currentDate().toString('dddd d MMMM yyyy') # Return "dimanche 20 Juillet 2013" | |
def Around(a) : | |
global seTDecimalValue | |
if seTDecimalValue == -1: | |
seTDecimalValue = 1000 | |
ard = round(a, seTDecimalValue) | |
return ard | |
global uniteAs ; uniteAs = " deg" # HTML: ° | |
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 switchQFileDialogMint # special LinuxMint | |
switchQFileDialogMint = FreeCAD_ParamGetSet.GetBool("switchQFileDialogMint") | |
if switchQFileDialogMint == 0: | |
FreeCAD_ParamGetSet.SetBool("switchQFileDialogMint", switchQFileDialogMint) | |
try: | |
if platform.node() == "mint": | |
switchQFileDialogMint = 1 | |
FreeCAD_ParamGetSet.SetBool("switchQFileDialogMint", switchQFileDialogMint) #*Special Mint | |
except Exception: | |
None | |
## | |
global setPathLatestDirectory #; setPathLatestDirectory = "C:\ ???" | |
setPathLatestDirectory = FreeCAD_ParamGetSet.GetString(u"setPathLatestDirectory") | |
if setPathLatestDirectory == "": setPathLatestDirectory = path | |
FreeCAD_ParamGetSet.SetString(u"setPathLatestDirectory", setPathLatestDirectory) #*"C:\ ???" | |
## | |
global setBSplineToByArcValue #; setBSplineToByArcValue = 0.00001 | |
setBSplineToByArcValue = FreeCAD_ParamGetSet.GetFloat(u"setBSplineToByArcValue") | |
if setBSplineToByArcValue == 0.0: setBSplineToByArcValue = 0.00001 | |
FreeCAD_ParamGetSet.SetFloat(u"setBSplineToByArcValue", setBSplineToByArcValue) #*0.00001 | |
global BSplinetoByArcValeurS # string pour afficher en "0.00001" pas en 1.e5 | |
BSplinetoByArcValeurS = str("%.12f" % setBSplineToByArcValue) | |
BSplinetoByArcValeurS = str(BSplinetoByArcValeurS.rstrip('0')) | |
## | |
global setMeshTopologyValue #; setMeshTopologyValue = 0.1 | |
setMeshTopologyValue = FreeCAD_ParamGetSet.GetFloat(u"setMeshTopologyValue") | |
if setMeshTopologyValue == 0.0: setMeshTopologyValue = 0.1 | |
FreeCAD_ParamGetSet.SetFloat(u"setMeshTopologyValue", setMeshTopologyValue) #*0.1 | |
## | |
global switchBSplineCreateCircleConstructorAxis#; switchBSplineCreateCircleConstructorAxis = 0 # for create points with toByArcs() | |
switchBSplineCreateCircleConstructorAxis = FreeCAD_ParamGetSet.GetBool(u"switchBSplineCreateCircleConstructorAxis") | |
FreeCAD_ParamGetSet.SetBool(u"switchBSplineCreateCircleConstructorAxis", switchBSplineCreateCircleConstructorAxis)#*True or False | |
## | |
global switchBSplineCreateCircleConstructor #; switchBSplineCreateCircleConstructor = 0 # for create circles with toByArcs() | |
switchBSplineCreateCircleConstructor = FreeCAD_ParamGetSet.GetBool(u"switchBSplineCreateCircleConstructor") | |
FreeCAD_ParamGetSet.SetBool(u"switchBSplineCreateCircleConstructor", switchBSplineCreateCircleConstructor) #*True or False | |
## | |
global switchCreateLineDiVatNatOnClick #; switchCreateLineDiVatNatOnClick = 0 # for position line on click mouse | |
switchCreateLineDiVatNatOnClick = FreeCAD_ParamGetSet.GetBool(u"switchCreateLineDiVatNatOnClick") | |
FreeCAD_ParamGetSet.SetBool(u"switchCreateLineDiVatNatOnClick", switchCreateLineDiVatNatOnClick) #*True or False | |
## | |
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 = "" # QtWidgets.QMainWindow() | |
global FCmw ; FCmw = "" # Docked RightDock LeftDock | |
global myNewFreeCADWidget; myNewFreeCADWidget = "" | |
## | |
####tools after in FreeCAD.ParamGet########################################################### | |
# | |
def App_Console_PrintMessage(textInfo): | |
global switchDisplayInfoObject | |
if switchDisplayInfoObject == 1 : | |
App.Console.PrintMessage(textInfo) | |
def App_Console_PrintError(textInfo): | |
global switchDisplayErrorInfo | |
if switchDisplayErrorInfo == 1 : | |
App.Console.PrintMessage(textInfo) | |
def errorDialog(msg): | |
global switchWarning | |
if switchWarning == 0: | |
None | |
else: | |
diag = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Critical,"Error Message",msg ) | |
diag.setWindowFlags(PySide2.QtCore.Qt.WindowStaysOnTopHint) # PySide2 #cette fonction met la fenetre en avant | |
#diag.setWindowModality(QtCore.Qt.ApplicationModal) # la fonction a ete desactivee pour favoriser "WindowStaysOnTopHint" | |
diag.exec_() | |
global sel ; sel = u"" | |
global document_ ; document_ = u"FCInfo" | |
global object_Label ; object_Label = u"" | |
global object_Name ; object_Name = u"" | |
global typeObject ; typeObject = u"" # ShapeType : Compound | |
global object_Type ; object_Type = u"" # Part::Feature | |
global subElemName ; subElemName = u"" | |
global RotationToEuler; RotationToEuler = u"" | |
global position0 ; position0 = 0.0 | |
global position1 ; position1 = 0.0 | |
global position2 ; position2 = 0.0 | |
global diffuseColorRF ; diffuseColorRF = 0.0 # color face Red Float 0.0 a 1.0 | |
global diffuseColorVF ; diffuseColorVF = 0.0 # color face Vert/Green Float 0.0 a 1.0 | |
global diffuseColorBF ; diffuseColorBF = 0.0 # color face Blue Float 0.0 a 1.0 | |
global diffuseColorTF ; diffuseColorTF = 0.0 # color face Transparent Float 0.0 a 1.0 | |
global transparenceFace ; transparenceFace = 0 # taux de transparence de fa face 0 a 100 Int | |
global unsignedEncodeColor; unsignedEncodeColor = "" # resultat format 25144423565 unsigned FC | |
global cols ; cols = [] | |
global colorShapeFace ; colorShapeFace = [] | |
global colorShapeLine ; colorShapeLine = [] | |
global colorShapePoint ; colorShapePoint = [] | |
global colorShapeFaceDiffuseColor; colorShapeFaceDiffuseColor = [] | |
global longueurObjet ; longueurObjet = 0.0 | |
global rayonObjet ; rayonObjet = 0.0 | |
global perimetre ; perimetre = 0.0 | |
global numberEdges ; numberEdges = 0 | |
global typeLongueur ; typeLongueur = u"Length of object " | |
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"Save " + str(seTMaterialSavePathName) + str(seTMaterialFileName) + "\n") | |
materialAssociated.sort() | |
App_Console_PrintMessage(u"Number material : " + 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"Create/Save file : " + seTMaterialFileName + "\n") | |
except Exception: | |
App_Console_PrintError(u"Not file " + seTMaterialFileName + "\n") | |
seTMaterialCurrentIndex = 0 | |
seTDensiteValue = float(materialAssociated[0].split(",")[1]) | |
else: | |
try: | |
App_Console_PrintMessage(u"Read the file " + 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"Load the file : " + seTMaterialFileName + "\n") | |
except Exception: | |
App_Console_PrintError(u"Not read file " + seTMaterialFileName + " saved" + "\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"Bad selection"+"\n") | |
else: | |
App_Console_PrintMessage(u"Select an object !"+"\n") | |
############################################################################################################## | |
def axisPlane( posX = 0.0, posY = 0.0, posZ = 0.0, namePlane = "FCPlane"): # plane creation | |
global sel | |
global document_ | |
global object_Name | |
global boundBoxDiag | |
global switchInertia | |
global seTMemoClipBoard | |
global switchCreatePoint | |
global switchCreateAxis | |
global switchCreatePlane | |
global directionObj | |
FreeCAD.ActiveDocument.openTransaction(u"FCInfo Plane") # memorise les actions (avec annuler restore) | |
#FreeCAD.ActiveDocument.commitTransaction() # restore les actions (avec annuler restore) | |
#FreeCAD.ActiveDocument.abortTransaction() # abandonne les actions(avec annuler restore) | |
sel = FreeCADGui.Selection.getSelection() | |
retour = Macro_FCInfo_05 # icone dans une variable (ok / ko) | |
switchInertia = 1 | |
if seTMemoClipBoard >= 1: # memo clipBoard | |
memo = QtWidgets.QApplication.clipboard() | |
memo.clear(mode=memo.Clipboard ) | |
if seTMemoClipBoard == 1: | |
memo.setText(u"FreeCAD.Vector("+str(Around(posX))+", "+str(Around(posY))+", "+str(Around(posZ))+")", mode = memo.Clipboard) # format : FreeCAD.Vector(x, y, z) | |
elif seTMemoClipBoard == 2: | |
memo.setText(str(Around(posX))+", "+str(Around(posY))+", "+str(Around(posZ)), mode = memo.Clipboard) # format : x, y, z | |
elif seTMemoClipBoard == 3: | |
memo.setText(str(Around(posX))+" "+str(Around(posY))+" "+str(Around(posZ)), mode = memo.Clipboard) # format : x y z | |
if switchCreatePoint == 1: | |
try: # create point | |
point = Draft.makePoint( posX, posY, posZ) | |
point.ViewObject.PointColor = (1.0,0.0,0.0) | |
point.Label = u"FCPoint" + namePlane | |
retour = Macro_FCInfo_06 | |
FreeCADGui.updateGui() # updateGui | |
App.ActiveDocument.recompute() | |
except Exception: | |
retour = Macro_FCInfo_07 | |
if switchCreatePlane == 1: | |
try: # create plane | |
doc = App.activeDocument() | |
if boundBoxDiag == 0.0: | |
boundBoxDiag = 10.0 | |
boundBoxLX = boundBoxLY = boundBoxLZ = boundBoxDiag | |
FCSpring = doc.addObject(u"App::DocumentObjectGroup", "FCPlane" + namePlane) | |
plr = FreeCAD.Placement() | |
plr.Base = FreeCAD.Vector( posX, posY, posZ) | |
### PlaneX-R | |
plan = App.ActiveDocument.addObject("Part::Plane","PlaneX-R") | |
plan.Length=boundBoxLZ | |
plan.Width=boundBoxLX | |
plan.Placement = plr | |
plan.Placement.Rotation = plan.Placement.Rotation.multiply(App.Rotation(0.0,-90.0,0.0)) | |
plan.Placement = plan.Placement.multiply(App.Placement(App.Vector(-float(plan.Length)/2.0,-float(plan.Width)/2.0,0.0), App.Rotation(App.Vector(0.0,0.0,0.0),0.0), App.Vector(0.0,0.0,0.0))) | |
plan.ViewObject.LineColor = (1.0,0.66667,0.0) | |
plan.ViewObject.ShapeColor = (0.6, 0.0, 0.0) | |
plan.ViewObject.Transparency = 90 | |
plan.ViewObject.LineWidth = 1.0 | |
FCSpring.addObject(plan) | |
### PlaneY-V | |
plan = App.ActiveDocument.addObject("Part::Plane","PlaneY-V") | |
plan.Length=boundBoxLY | |
plan.Width=boundBoxLZ | |
plan.Placement = plr | |
plan.Placement.Rotation = plan.Placement.Rotation.multiply(App.Rotation(0.0,0.0,90.0)) | |
plan.Placement = plan.Placement.multiply(App.Placement(App.Vector(-float(plan.Length)/2.0,-float(plan.Width)/2.0,0.0), App.Rotation(App.Vector(0.0,0.0,0.0),0.0), App.Vector(0.0,0.0,0.0))) | |
plan.ViewObject.LineColor = (1.0, 0.66667, 0.0) | |
plan.ViewObject.ShapeColor = (0.0, 0.6, 0.0) | |
plan.ViewObject.Transparency = 90 | |
plan.ViewObject.LineWidth = 1.0 | |
FCSpring.addObject(plan) | |
### PlaneZ-B | |
plan = App.ActiveDocument.addObject("Part::Plane","PlaneZ-B") | |
plan.Length=boundBoxLX | |
plan.Width=boundBoxLY | |
plan.Placement = plr | |
plan.Placement = plan.Placement.multiply(App.Placement(App.Vector(-float(plan.Length)/2.0,-float(plan.Width)/2.0,0.0), App.Rotation(App.Vector(0.0,0.0,0.0),0.0), App.Vector(0.0,0.0,0.0))) | |
plan.ViewObject.LineColor = (1.0,1.0,1.0) | |
plan.ViewObject.ShapeColor = (0.0,0.0,0.6) | |
plan.ViewObject.Transparency = 90 | |
plan.ViewObject.LineWidth = 1.0 | |
FCSpring.addObject(plan) | |
FreeCADGui.updateGui() # updateGui | |
App.ActiveDocument.recompute() | |
retour = Macro_FCInfo_06 | |
except Exception: | |
retour = Macro_FCInfo_07 | |
if switchCreateAxis == 1: # create axis | |
try: | |
doc = App.activeDocument() | |
if boundBoxDiag == 0.0: | |
boundBoxDiag = 10.0 | |
boundBoxLX = boundBoxLY = boundBoxLZ = boundBoxDiag | |
FCSpring = doc.addObject("App::DocumentObjectGroup", "FCAxis" + namePlane) | |
plr = FreeCAD.Placement() | |
plr.Base = FreeCAD.Vector( posX, posY, posZ) | |
#create axis | |
points=[FreeCAD.Vector(0.0,0.0,0.0),FreeCAD.Vector(0.0,0.0,boundBoxLX)] | |
centerX = Draft.makeWire(points,closed=False,face=False,support=None) | |
centerX.Placement = plr | |
centerX.Placement.Rotation = centerX.Placement.Rotation.multiply(App.Rotation(0.0,90.0,0.0)) | |
centerX.Placement = centerX.Placement.multiply(App.Placement(App.Vector(0.0,0.0,-float(boundBoxLX)/2.0), App.Rotation(App.Vector(0.0,0.0,0.0),0.0), App.Vector(0.0,0.0,0.0))) | |
centerX.ViewObject.LineColor = (1.0,1.0,1.0) | |
centerX.ViewObject.LineWidth = 1.0 | |
centerX.ViewObject.DrawStyle = str(u"Dashdot") | |
centerX.Label = str(u"Axis White 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"Axis White 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"Axis White 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"Perimeter of 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"Invalid selection " + "\n") | |
errorDialog(u"Invalid selection " + "\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"Length (Sk) " | |
directionObj = points2.sub(points1) | |
elif isinstance(sObject,(Part.BSplineCurve)): | |
#print("Part.BSplineCurve") | |
points1 = sObject.StartPoint | |
points2 = sObject.EndPoint | |
longueurObjet = sObject.length() | |
typeLongueur = u"Length (Sk) " | |
directionObj = points2.sub(points1) | |
elif isinstance(sObject,(Part.Circle)): | |
#print("Part.Circle") | |
longueurObjet = sObject.length() | |
typeLongueur = u"Length (Sk) " | |
rayonObjet = sObject.Radius | |
elif isinstance(sObject,(Part.ArcOfCircle)): | |
#print("Part.ArcOfCircle") | |
points1 = sObject.StartPoint | |
points2 = sObject.EndPoint | |
longueurObjet = sObject.length() | |
typeLongueur = u"Length (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"Perimeter of the face" | |
else: | |
typeLongueur = u"Length of the object" | |
except Exception: | |
longueurObjet = 0.0 | |
typeLongueur = u"Length of the object" | |
######################## | |
# | |
# 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(QtWidgets.QTextEdit, "Report view") #### | |
r.clear() #### | |
except Exception: #### | |
None #### | |
######################################################################### | |
App_Console_PrintMessage(u"\n") | |
App_Console_PrintMessage(u"FCInfo_Beginning_"+str(subElemName) +"______________________________________________________"+"\n") | |
App_Console_PrintMessage(u"Document name : "+document_+"\n") | |
App_Console_PrintMessage(u"Label of the object : "+object_Label+"\n") | |
App_Console_PrintMessage(u"Internal name : "+object_Name+"\n") | |
App_Console_PrintMessage(u"Element name : "+str(subElemName)+"\n") | |
App_Console_PrintMessage(u"Object type : "+typeObject+"\n") | |
App_Console_PrintMessage(u"Object type : "+object_Type+"\n") | |
App_Console_PrintMessage(u"Mouse coordinates : X: "+str(Around(position0 * uniteM)) + " " + uniteMs + " Y:" + str(Around(position1 * uniteM)) + " " + uniteMs + " Z:" + str(Around(position2 * uniteM)) + " " + uniteMs + "\n") | |
App_Console_PrintMessage(typeLongueur + " : "+str(Around(longueurObjet * uniteM))+", "+uniteMs+"\n\n") | |
App_Console_PrintMessage(u"Color on selection" + "\n") | |
App_Console_PrintMessage(u"Red" + ", " + str(int(diffuseColorRF*255.0)) + ", " + | |
u"Green" + ", " + str(int(diffuseColorVF*255.0)) + ", " + | |
u"Blue" + ", " + str(int(diffuseColorBF*255.0)) + ", " + | |
u"Transparency" + ", " + str(int(diffuseColorTF*255.0)) + "\n\n") | |
#### couleurs | |
if len(colorShapeFace) != 0: | |
App_Console_PrintMessage(u"Color Object (float) " + str(colorShapeFace[0])+", "+str(colorShapeFace[1])+", "+str(colorShapeFace[2])+", "+str(colorShapeFace[3])+")" + "\n") | |
App_Console_PrintMessage(u"Color Object (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"Color Line(s) (float) " + str(colorShapeLine[0])+", "+str(colorShapeLine[1])+", "+str(colorShapeLine[2])+", "+str(colorShapeLine[3])+")" + "\n") | |
App_Console_PrintMessage(u"Color Line(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"Color Point(s) (float) " + str(colorShapePoint[0])+", "+str(colorShapePoint[1])+", "+str(colorShapePoint[2])+", "+str(colorShapePoint[3])+")" + "\n") | |
App_Console_PrintMessage(u"Color 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"Number of Edges : "+str(nombreArretesMesh)+"\n") | |
App_Console_PrintMessage(u"Number of Faces : "+str(nombreFacesMesh)+"\n") | |
App_Console_PrintMessage(u"Number of Points : "+str(nombrePointsMesh)+"\n\n") | |
if detected == "<PointKernel object>": | |
App_Console_PrintMessage(u"Number of 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"Number of nodes : "+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"Radius of the object : "+str(Around(rayonObjet * uniteM))+", "+uniteMs +"\n") | |
App_Console_PrintMessage(u"Diameter of the object : "+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"Area "+str(j[1])+" = "+str(Around(float(FacesSurf[co]) * float(uniteS)))+" "+uniteSs+"\n") | |
if len(colorShapeFaceDiffuseColor) != 0: | |
App_Console_PrintMessage(u"Color float Face" + str(j[0]+1) + " " + | |
u"R: " + str(colorShapeFaceDiffuseColor[j[0]][0]) + ", "+ | |
u"G: " + str(colorShapeFaceDiffuseColor[j[0]][1]) + ", "+ | |
u"B: " + str(colorShapeFaceDiffuseColor[j[0]][2]) + ", "+ | |
u"T: " + str(colorShapeFaceDiffuseColor[j[0]][3]) + "\n") | |
App_Console_PrintMessage(u"Color integer Face" + str(j[0]+1) + " " + | |
u"R: " + str(int(colorShapeFaceDiffuseColor[j[0]][0]*255.0))+", "+ | |
u"G: " + 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 with mass : " +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 ui | |
global sel | |
global document_ | |
global object_Label | |
global object_Name | |
global typeObject | |
global object_Type | |
global subElemName | |
global position0 | |
global position1 | |
global position2 | |
global diffuseColorRF | |
global diffuseColorVF | |
global diffuseColorBF | |
global diffuseColorTF | |
global transparenceFace | |
global unsignedEncodeColor | |
global longueurObjet | |
global rayonObjet | |
global perimetre | |
global Plan_xy | |
global Plan_xy_V | |
global Plan_yz | |
global Plan_yz_V | |
global Plan_zx | |
global Plan_zx_V | |
global surface | |
global surfaceFace | |
global volume_ | |
global poids | |
global materialAssociated | |
global seTMaterialCurrentIndex | |
global uniteM | |
global uniteMs | |
global uniteS | |
global uniteSs | |
global uniteV | |
global uniteVs | |
global uniteP | |
global unitePs | |
global directionObj | |
global direcValueAt | |
global direcNormalAt | |
global uniteAs | |
global boundBoxCenterX | |
global boundBoxCenterY | |
global boundBoxCenterZ | |
global CenterOfMassX | |
global CenterOfMassY | |
global CenterOfMassZ | |
global boundBoxLX | |
global boundBoxLY | |
global boundBoxLZ | |
global boundBoxDiag | |
global MatrixX1 | |
global MatrixY1 | |
global MatrixZ1 | |
global Matrix_1 | |
global MatrixX2 | |
global MatrixY2 | |
global MatrixZ2 | |
global Matrix_2 | |
global MatrixX3 | |
global MatrixY3 | |
global MatrixZ3 | |
global Matrix_3 | |
global Matrix12 | |
global Matrix13 | |
global Matrix14 | |
global Matrix15 | |
global DeterminantM | |
global compt_E | |
global compt_F | |
global compt_VF | |
global placement_ | |
global RowCount | |
global RowCountTest | |
global seTMemoClipBoard | |
global switchCreatePoint | |
global switchCreateAxis | |
global switchCreatePlane | |
global switchDisplayInfoObject | |
global seTWidgetPosition | |
global switchBoundBoxCreateText | |
global seTBoundBoxTextHeigth | |
global seTDecimalValue | |
global seTTextHeigthValue | |
global seTDensiteDecimalNumber | |
global seTDensiteValue | |
global seTDensiteSingleStep | |
global seTDensiteSuffixChain | |
global seTPositionFlyRightLeft | |
global seTMaterialPrice | |
global seTMaterialSuffixDevise | |
global seTMaterialSuffixCost | |
global seTIndexUnitLength | |
global seTIndexUnitWeight | |
global 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, 590) | |
MainWindow.setMinimumSize(QtCore.QSize(500, 590)) | |
#MainWindow.setMaximumSize(QtCore.QSize(380, 590)) | |
#MainWindow.move(1300, 120) # deplace la fenetre | |
#### | |
self.fontGlobal_08 = QtGui.QFont() | |
self.fontGlobal_08.setFamily(u"Arial") | |
# self.fontGlobal_08.setPointSize(seTTextHeigthValue) | |
self.fontGlobal_08.setPixelSize(seTTextHeigthValue) | |
#self.xxxx.setFont(self.fontGlobal_08) | |
#self.xxxx.setStyleSheet(u"color : #ff0000; font: bold") # couleur du texte et gras# | |
#### | |
self.centralWidget = QtWidgets.QWidget(MainWindow) | |
#self.centralWidget.setMinimumSize(QtCore.QSize(500, 500)) | |
#### | |
grid = QtWidgets.QGridLayout() | |
self.centralWidget.setLayout(grid) | |
#### | |
self.scrollArea = QtWidgets.QScrollArea(self.centralWidget) # cadre scrollarea contenant le widget GUI | |
self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded) | |
self.scrollArea.setWidgetResizable(True) | |
grid.addWidget(self.scrollArea, 0, 0) | |
vbox = QtWidgets.QVBoxLayout() | |
self.scrollArea.setLayout(vbox) | |
self.scrollAreaWidgetContents_2 = QtWidgets.QWidget() #widget contenant le GUI | |
vbox.addWidget(self.scrollAreaWidgetContents_2) | |
sel = FreeCADGui.Selection.getSelection() | |
if len(sel)==0: | |
App_Console_PrintMessage(u"Select an object"+"\n") | |
errorDialog(u"Select an object") | |
else: | |
affect(0) | |
vbox = QtWidgets.QVBoxLayout() | |
self.scrollAreaWidgetContents_2.setLayout(vbox) | |
#### Document | |
grid = QtWidgets.QGridLayout() | |
self.GBox_001_Document = QtWidgets.QGroupBox() | |
if switch_setVisible_GBox_001_Document == False: | |
self.GBox_001_Document.setVisible(switch_setVisible_GBox_001_Document) # visibility | |
self.GBox_001_Document.setLayout(grid) | |
vbox.addWidget(self.GBox_001_Document) | |
self.LA_1 = QtWidgets.QLabel() | |
self.LE_1 = QtWidgets.QLineEdit() | |
grid.addWidget(self.LA_1, 0, 0) | |
grid.addWidget(self.LE_1, 0, 1, 1, 2) | |
self.LA_2 = QtWidgets.QLabel() | |
self.LE_2 = QtWidgets.QLineEdit() | |
self.LE_2a = QtWidgets.QLineEdit() | |
grid.addWidget(self.LA_2, 1, 0) | |
grid.addWidget(self.LE_2, 1, 1) | |
grid.addWidget(self.LE_2a, 1, 2) | |
self.LA_3 = QtWidgets.QLabel() | |
self.LA_4 = QtWidgets.QLabel() | |
self.LE_3 = QtWidgets.QLineEdit() | |
self.LE_3a = QtWidgets.QLineEdit() | |
self.LE_4 = QtWidgets.QLineEdit() | |
grid.addWidget(self.LA_3, 2, 0) | |
grid.addWidget(self.LE_3, 2, 1) | |
grid.addWidget(self.LE_3a, 2, 2) | |
grid.addWidget(self.LA_4, 3, 0) | |
grid.addWidget(self.LE_4, 3, 1, 1, 2) | |
#### Coordinate click mouse | |
grid = QtWidgets.QGridLayout() | |
self.GBox_002_Coordinate_Mouse = QtWidgets.QGroupBox() | |
if switch_setVisible_GBox_002_Coordinate_Mouse == False: | |
self.GBox_002_Coordinate_Mouse.setVisible(switch_setVisible_GBox_002_Coordinate_Mouse) # visibility | |
self.GBox_002_Coordinate_Mouse.setLayout(grid) | |
vbox.addWidget(self.GBox_002_Coordinate_Mouse) | |
self.LA_4x = QtWidgets.QLabel() | |
self.LA_4x.setStyleSheet(u"QLabel {color : #ff0000; font: bold}") # couleur du texte et gras | |
self.LE_4x = QtWidgets.QLineEdit() | |
grid.addWidget(self.LA_4x, 0, 0) | |
grid.addWidget(self.LE_4x, 1, 0) | |
self.LA_4y = QtWidgets.QLabel() | |
self.LA_4y.setStyleSheet(u"QLabel {color : #008500; font: bold}") # couleur du texte et gras | |
self.LE_4y = QtWidgets.QLineEdit() | |
grid.addWidget(self.LA_4y, 0, 1) | |
grid.addWidget(self.LE_4y, 1, 1) | |
self.LA_4z = QtWidgets.QLabel() | |
self.LA_4z.setStyleSheet(u"QLabel {color : #0000ff; font: bold}") # couleur du texte et gras | |
self.LE_4z = QtWidgets.QLineEdit() | |
grid.addWidget(self.LA_4z, 0, 2) | |
grid.addWidget(self.LE_4z, 1, 2) | |
self.PB_Axis_01 = QtWidgets.QPushButton() | |
self.PB_Axis_01.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable | |
self.PB_Axis_01.clicked.connect(self.on_PB_Axis_Mouse) | |
grid.addWidget(self.PB_Axis_01, 1, 3) | |
#### couleur point clique | |
grid = QtWidgets.QGridLayout() | |
self.GBox_003_Color = QtWidgets.QGroupBox() | |
if switch_setVisible_GBox_003_Color == False: | |
self.GBox_003_Color.setVisible(switch_setVisible_GBox_003_Color) # visibility | |
self.GBox_003_Color.setLayout(grid) | |
vbox.addWidget(self.GBox_003_Color) | |
self.LA_1_Red = QtWidgets.QLabel() | |
self.LA_1_Red.setStyleSheet(u"QLabel {color : #ff0000; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_1_Red, 0, 0) | |
self.LA_2_Green = QtWidgets.QLabel() | |
self.LA_2_Green.setStyleSheet(u"QLabel {color : #008500; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_2_Green, 0, 1) | |
self.LA_3_Blue = QtWidgets.QLabel() | |
self.LA_3_Blue.setStyleSheet(u"QLabel {color : #0000ff; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_3_Blue, 0, 2) | |
self.LA_4_Transparent = QtWidgets.QLabel() | |
self.LA_4_Transparent.setStyleSheet(u"QLabel {color : #000000; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_4_Transparent, 0, 3) | |
self.LE_CRed = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_CRed, 1, 0) | |
self.LE_CGreen = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_CGreen, 1, 1) | |
self.LE_CBlue = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_CBlue, 1, 2) | |
self.LE_Transparent = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_Transparent, 1, 3) | |
self.LE_ConversionUnsigned = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_ConversionUnsigned, 2, 0, 1, 4) | |
self.CBox_Color_FaceObject = QtWidgets.QCheckBox() | |
#self.CBox_Color_FaceObject.setChecked(False) | |
self.CBox_Color_FaceObject.clicked.connect(self.SIGNAL_CBox_Color_FaceObject) | |
grid.addWidget(self.CBox_Color_FaceObject, 3, 0) | |
self.PB_ChangeColor = QtWidgets.QPushButton() | |
self.PB_ChangeColor.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Color))) # icone dans une variable | |
self.PB_ChangeColor.clicked.connect(self.on_PB_ChangeColor) | |
grid.addWidget(self.PB_ChangeColor, 3, 1) | |
self.PB_CreateFace = QtWidgets.QPushButton() | |
self.PB_CreateFace.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Face))) # icone dans une variable | |
self.PB_CreateFace.clicked.connect(self.on_PB_CreateFace) | |
grid.addWidget(self.PB_CreateFace, 3, 2) | |
self.SBox_Transparence = QtWidgets.QSpinBox() | |
#self.SBox_Transparence.setEnabled(False) | |
self.SBox_Transparence.setMinimum(0) | |
self.SBox_Transparence.setMaximum(100) | |
self.SBox_Transparence.setValue(transparenceFace) | |
self.SBox_Transparence.valueChanged.connect(self.on_SBox_Transparence_valueChanged) | |
grid.addWidget(self.SBox_Transparence, 3, 3) | |
#### Composantes Object Mesh | |
grid = QtWidgets.QGridLayout() | |
self.GBox_004_Object_Mesh = QtWidgets.QGroupBox() | |
if switch_setVisible_GBox_004_Object_Mesh == False: | |
self.GBox_004_Object_Mesh.setVisible(switch_setVisible_GBox_004_Object_Mesh) # visibility | |
self.GBox_004_Object_Mesh.setVisible(False) | |
self.GBox_004_Object_Mesh.setLayout(grid) | |
vbox.addWidget(self.GBox_004_Object_Mesh) | |
self.LA_N_Edges = QtWidgets.QLabel() | |
self.LE_N_Edges = QtWidgets.QLineEdit() | |
grid.addWidget(self.LA_N_Edges, 0, 0) | |
grid.addWidget(self.LE_N_Edges, 1, 0) | |
self.LA_N_Facets = QtWidgets.QLabel() | |
self.LE_N_Facets = QtWidgets.QLineEdit() | |
grid.addWidget(self.LA_N_Facets, 0, 1) | |
grid.addWidget(self.LE_N_Facets, 1, 1) | |
self.LA_N_Points = QtWidgets.QLabel() | |
self.LE_N_Points = QtWidgets.QLineEdit() | |
grid.addWidget(self.LA_N_Points, 0, 2) | |
grid.addWidget(self.LE_N_Points, 1, 2) | |
#### Unit | |
grid = QtWidgets.QGridLayout() | |
self.GBox_005_Value_Unit = QtWidgets.QGroupBox() | |
if switch_setVisible_GBox_005_Value_Unit == False: | |
self.GBox_005_Value_Unit.setVisible(switch_setVisible_GBox_005_Value_Unit) # visibility | |
self.GBox_005_Value_Unit.setLayout(grid) | |
vbox.addWidget(self.GBox_005_Value_Unit) | |
self.LA_5a = QtWidgets.QLabel() | |
grid.addWidget(self.LA_5a, 0, 0) | |
self.comboBox = QtWidgets.QComboBox() | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
self.comboBox.addItem(_fromUtf8(u"")) | |
#self.comboBox.setCurrentIndex(seTIndexUnitLength) | |
QtCore.QObject.connect(self.comboBox, QtCore.SIGNAL(u"currentIndexChanged(QString)"), self.SIGNAL_comboBox_Changed) | |
grid.addWidget(self.comboBox, 0, 1)#, 1, 2 | |
#### Line Cercle et BSpline | |
self.LA_5 = QtWidgets.QLabel() | |
grid.addWidget(self.LA_5, 1, 0)#, 1, 2 | |
self.LE_5 = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_5, 1, 1)#, 1, 2 | |
self.LA_5b = QtWidgets.QLabel() | |
grid.addWidget(self.LA_5b, 2, 0)#, 1, 2 | |
self.LE_5b = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_5b, 2, 1)#, 1, 2 | |
self.SB_Arc_ToByArcs = QtWidgets.QSpinBox() | |
self.SB_Arc_ToByArcs.setMinimum(1) | |
self.SB_Arc_ToByArcs.setMaximum(99999999) | |
self.SB_Arc_ToByArcs.setPrefix(u"arc ") | |
# try: | |
# self.SB_Arc_ToByArcs.setSuffix(u" / " + str(len(BsplineArcsRadius))) | |
# BsplineRayonApproximatif = str(Around(BsplineArcsRadius[0] * float(uniteM))) + " " + uniteMs | |
# except Exception: | |
# BsplineRayonApproximatif = u"" | |
self.SB_Arc_ToByArcs.valueChanged.connect(self.on_SB_Arc_ToByArcs_valueChanged) | |
grid.addWidget(self.SB_Arc_ToByArcs, 2, 2) | |
self.LA_6 = QtWidgets.QLabel() | |
grid.addWidget(self.LA_6, 3, 0)#, 1, 1 | |
self.LE_6 = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_6, 3, 1) | |
self.PB_BSplineCreateNodes = QtWidgets.QPushButton() | |
self.PB_BSplineCreateNodes.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Point))) # icone dans une variable | |
self.PB_BSplineCreateNodes.clicked.connect(self.on_PB_BSplineCreateNodes) | |
grid.addWidget(self.PB_BSplineCreateNodes, 3, 2) | |
# if (rayonObjet != 0) or (str(BsplineDetect) == "<BSplineCurve object>"):: | |
# if (str(BsplineDetect) == "<BSplineCurve object>"): | |
# self.SB_Arc_ToByArcs.setVisible(True) | |
# self.PB_BSplineCreateNodes.setVisible(True) | |
# self.LA_5b.setVisible(True) | |
# self.LE_5b.setVisible(True) | |
# else: | |
# self.SB_Arc_ToByArcs.setVisible(False) | |
# self.PB_BSplineCreateNodes.setVisible(False) | |
# self.LA_5b.setVisible(False) | |
# self.LE_5b.setVisible(False) | |
# rayonObjet = 0.0 | |
#### Inclination | |
grid = QtWidgets.QGridLayout() | |
self.GBox_006_Inclination = QtWidgets.QGroupBox() | |
if switch_setVisible_GBox_006_Inclination == False: | |
self.GBox_006_Inclination.setVisible(switch_setVisible_GBox_006_Inclination) # visibility | |
self.GBox_006_Inclination.setLayout(grid) | |
vbox.addWidget(self.GBox_006_Inclination) | |
self.LA_8a = QtWidgets.QLabel(self.GBox_006_Inclination) | |
grid.addWidget(self.LA_8a, 0, 0) | |
self.PB_Ra = QtWidgets.QPushButton() | |
self.PB_Ra.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Degrees))) # icone dans une variable | |
self.PB_Ra.clicked.connect(self.on_PB_Ra_clicked) # "Radian" | |
grid.addWidget(self.PB_Ra, 0, 1) | |
self.LA_8a_2 = QtWidgets.QLabel() | |
grid.addWidget(self.LA_8a_2, 0, 2, 1, 3) | |
self.LA_8xy = QtWidgets.QLabel() | |
self.LA_8xy.setStyleSheet(u"QLabel {color : #ff0000; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_8xy, 1, 0) | |
self.LE_8xy = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_8xy, 1, 1) | |
self.LE_8xya = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_8xya, 1, 2) | |
self.LA_8yz = QtWidgets.QLabel() | |
self.LA_8yz.setStyleSheet(u"QLabel {color : #008500; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_8yz, 2, 0) | |
self.LE_8yz = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_8yz, 2, 1) | |
self.LE_8yza = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_8yza, 2, 2) | |
self.LA_8zx = QtWidgets.QLabel() | |
self.LA_8zx.setStyleSheet(u"QLabel {color : #0000ff; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_8zx, 3, 0) | |
self.LE_8zx = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_8zx, 3, 1) | |
self.LE_8zxa = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_8zxa, 3, 2) | |
self.PB_Line_Direction = QtWidgets.QPushButton() | |
self.PB_Line_Direction.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_13J))) # icone dans une variable | |
self.PB_Line_Direction.clicked.connect(self.on_PB_Line_Direction) | |
grid.addWidget(self.PB_Line_Direction, 4, 0) | |
self.LE_9_Direction = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_9_Direction, 4, 1, 1, 2) | |
self.PB_Line_ValueAT = QtWidgets.QPushButton() | |
self.PB_Line_ValueAT.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_13M))) # icone dans une variable | |
self.PB_Line_ValueAT.clicked.connect(self.on_PB_Line_ValueAT) | |
grid.addWidget(self.PB_Line_ValueAT, 5, 0) | |
self.LE_10_ValueAt = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_10_ValueAt, 5, 1, 1, 2) | |
self.PB_Line_NormalAT = QtWidgets.QPushButton() | |
self.PB_Line_NormalAT.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_13C))) # icone dans une variable | |
self.PB_Line_NormalAT.clicked.connect(self.on_PB_Line_NormalAT) | |
grid.addWidget(self.PB_Line_NormalAT, 6, 0) | |
self.LE_10b_NormalAt = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_10b_NormalAt, 6, 1, 1, 2) | |
##### Surface and Volume | |
grid = QtWidgets.QGridLayout() | |
self.GBox_007_Surface_and_Volume = QtWidgets.QGroupBox() | |
if switch_setVisible_GBox_007_Surface_and_Volume == False: | |
self.GBox_007_Surface_and_Volume.setVisible(switch_setVisible_GBox_007_Surface_and_Volume) # visibility | |
self.GBox_007_Surface_and_Volume.setLayout(grid) | |
vbox.addWidget(self.GBox_007_Surface_and_Volume) | |
self.LA_9 = QtWidgets.QLabel() | |
grid.addWidget(self.LA_9, 0, 0) | |
self.LE_9a = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_9a, 0, 1) | |
self.LA_10 = QtWidgets.QLabel() | |
grid.addWidget(self.LA_10, 1, 0) | |
self.LE_10a = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_10a, 1, 1) | |
self.LA_11 = QtWidgets.QLabel() | |
grid.addWidget(self.LA_11, 2, 0) | |
self.LE_11a = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_11a, 2, 1) | |
self.LA_Unit = QtWidgets.QLabel() | |
grid.addWidget(self.LA_Unit, 3, 0) | |
self.comboBox_Unit = QtWidgets.QComboBox() | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
self.comboBox_Unit.addItem(_fromUtf8(u"")) | |
#self.comboBox_Unit.setCurrentIndex(seTIndexUnitWeight) | |
QtCore.QObject.connect(self.comboBox_Unit, QtCore.SIGNAL(u"currentIndexChanged(QString)"), self.SIGNAL_comboPoids_Changed) | |
grid.addWidget(self.comboBox_Unit, 3, 1) | |
self.LA_Weight = QtWidgets.QLabel() | |
grid.addWidget(self.LA_Weight, 4, 0) | |
self.LA_Density = QtWidgets.QLabel() | |
grid.addWidget(self.LA_Density, 4, 1) | |
self.LE_12a = QtWidgets.QLineEdit() | |
self.LE_12a.setText(str(Around(poids))+" "+unitePs) | |
grid.addWidget(self.LE_12a, 5, 0) | |
self.DS_Density = QtWidgets.QDoubleSpinBox() | |
seTDensiteValue = float(materialAssociated[seTMaterialCurrentIndex].split(",")[1]) | |
self.DS_Density.setDecimals(seTDensiteDecimalNumber) | |
self.DS_Density.setMinimum(-0.00000001) | |
self.DS_Density.setMaximum(99999999.0) | |
#self.DS_Density.setProperty(u"value", seTDensiteValue) | |
self.DS_Density.setValue(seTDensiteValue) | |
self.DS_Density.setSuffix(seTDensiteSuffixChain) | |
self.DS_Density.setSingleStep(seTDensiteSingleStep) | |
self.DS_Density.valueChanged.connect(self.on_DS_Density_valueChanged) | |
grid.addWidget(self.DS_Density, 5, 1) | |
self.LA_Material = QtWidgets.QLabel() | |
grid.addWidget(self.LA_Material, 6, 0) | |
self.CBox_Materiel = QtWidgets.QComboBox() | |
for ligneMat in materialAssociated: | |
self.CBox_Materiel.addItem(_fromUtf8(ligneMat)) | |
self.CBox_Materiel.setCurrentIndex(seTMaterialCurrentIndex) | |
QtCore.QObject.connect(self.CBox_Materiel, QtCore.SIGNAL(u"currentIndexChanged(QString)"), self.SIGNAL_CBox_Materiel_Changed) | |
grid.addWidget(self.CBox_Materiel,7, 0, 1, 2) | |
self.LA_NewMaterial = QtWidgets.QLabel() | |
grid.addWidget(self.LA_NewMaterial, 8, 0) | |
self.LE_Materiel = QtWidgets.QLineEdit() | |
self.LE_Materiel.setText(materialAssociated[seTMaterialCurrentIndex]) | |
self.LE_Materiel.returnPressed.connect(self.on_LE_Materiel_Pressed) # connect "on_LE_Materiel_Pressed" # for validate the data with press on return touch | |
#self.LE_Materiel.textChanged.connect(self.on_LE_Materiel_Pressed) # connect "on_LE_Materiel_Pressed" # with tips key char by char | |
grid.addWidget(self.LE_Materiel, 9, 0, 1, 2) | |
self.PB_Del_Material = QtWidgets.QPushButton() | |
self.PB_Del_Material.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_DeleteLineMaterial))) # icone dans une variable | |
self.PB_Del_Material.clicked.connect(self.on_PB_Del_Material_clicked) | |
grid.addWidget(self.PB_Del_Material, 10, 0) | |
self.PB_Save_Material = QtWidgets.QPushButton() | |
self.PB_Save_Material.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Save_Material))) # icone dans une variable | |
self.PB_Save_Material.clicked.connect(self.on_PB_Save_Material_clicked) | |
grid.addWidget(self.PB_Save_Material, 10, 1) | |
#### Cost | |
grid = QtWidgets.QGridLayout() | |
self.GBox_008_Cost_And_Price = QtWidgets.QGroupBox() | |
if switch_setVisible_GBox_008_Cost_And_Price == False: | |
self.GBox_008_Cost_And_Price.setVisible(switch_setVisible_GBox_008_Cost_And_Price) # visibility | |
self.GBox_008_Cost_And_Price.setLayout(grid) | |
vbox.addWidget(self.GBox_008_Cost_And_Price) | |
self.LA_Cost = QtWidgets.QLabel() | |
grid.addWidget(self.LA_Cost, 0, 0) | |
self.LA_Price = QtWidgets.QLabel() | |
grid.addWidget(self.LA_Price, 0, 1) | |
self.LE_Cost = QtWidgets.QLineEdit() | |
seTMaterialCost = ((volume_ * seTDensiteValue * seTMaterialPrice) / 1000000.0) | |
self.LE_Cost.setText(str(Around(seTMaterialCost)) + seTMaterialSuffixCost) #CostMaterial | |
grid.addWidget(self.LE_Cost, 1, 0) | |
self.DS_Price = QtWidgets.QDoubleSpinBox() | |
self.DS_Price.setDecimals(seTDensiteDecimalNumber) | |
self.DS_Price.setMinimum(-0.00000001) | |
self.DS_Price.setMaximum(99999999.0) | |
#self.DS_Price.setProperty(u"value", seTMaterialPrice) | |
self.DS_Price.setValue(seTMaterialPrice) | |
self.DS_Price.setSuffix(seTMaterialSuffixDevise) | |
self.DS_Price.setSingleStep(1) | |
self.DS_Price.valueChanged.connect(self.on_DS_Price_valueChanged) | |
grid.addWidget(self.DS_Price, 1, 1) | |
##### BoundBox | |
grid = QtWidgets.QGridLayout() | |
self.GBox_009_BoundBox = QtWidgets.QGroupBox() | |
if switch_setVisible_GBox_009_BoundBox == False: | |
self.GBox_009_BoundBox.setVisible(switch_setVisible_GBox_009_BoundBox) # visibility | |
self.GBox_009_BoundBox.setLayout(grid) | |
vbox.addWidget(self.GBox_009_BoundBox) | |
self.LA_007_01_Xlength = QtWidgets.QLabel() | |
self.LA_007_01_Xlength.setStyleSheet(u"QLabel {color : #ff0000; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_007_01_Xlength, 0, 0) | |
self.LA_007_02_Ylength = QtWidgets.QLabel() | |
self.LA_007_02_Ylength.setStyleSheet(u"QLabel {color : #008500; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_007_02_Ylength, 0, 1) | |
self.LA_007_03_Zlength = QtWidgets.QLabel() | |
self.LA_007_03_Zlength.setStyleSheet(u"QLabel {color : #0000ff; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_007_03_Zlength, 0, 2) | |
self.LA_007_04_Diagonallength = QtWidgets.QLabel() | |
grid.addWidget(self.LA_007_04_Diagonallength, 0, 3) | |
self.LE_007_BB_01_XLength = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_007_BB_01_XLength, 1, 0) | |
self.LE_007_BB_02_YLength = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_007_BB_02_YLength, 1, 1) | |
self.LE_007_BB_03_ZLength = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_007_BB_03_ZLength, 1, 2) | |
self.LE_007_BB_04_Diagonal = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_007_BB_04_Diagonal, 1, 3) | |
self.PB_BoundBox_Tracing = QtWidgets.QPushButton() | |
self.PB_BoundBox_Tracing.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_BoundBoxTracing))) # icone dans une variable | |
self.PB_BoundBox_Tracing.clicked.connect(self.on_PB_BoundBox_Tracing) | |
grid.addWidget(self.PB_BoundBox_Tracing, 2, 0) | |
self.PB_00_BoundBox_Volume = QtWidgets.QPushButton() | |
self.PB_00_BoundBox_Volume.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_BoundBoxVolume))) # icone dans une variable | |
self.PB_00_BoundBox_Volume.clicked.connect(self.On_PB_00_BoundBox_Volume) | |
grid.addWidget(self.PB_00_BoundBox_Volume, 2, 1) | |
self.CB_01_BoundBox_Text = QtWidgets.QCheckBox() | |
self.CB_01_BoundBox_Text.setChecked(switchBoundBoxCreateText) | |
self.CB_01_BoundBox_Text.clicked.connect(self.On_CB_01_BoundBox_Text) | |
grid.addWidget(self.CB_01_BoundBox_Text, 2, 2) | |
self.DS_BoundBoxTextHeigth = QtWidgets.QDoubleSpinBox() | |
self.DS_BoundBoxTextHeigth.setMinimum(-0.00000001) | |
self.DS_BoundBoxTextHeigth.setMaximum(99999999.0) | |
#self.DS_BoundBoxTextHeigth.setProperty(u"value", seTBoundBoxTextHeigth) | |
self.DS_BoundBoxTextHeigth.setValue(seTBoundBoxTextHeigth) | |
self.DS_BoundBoxTextHeigth.setDecimals(seTDensiteDecimalNumber) | |
self.DS_BoundBoxTextHeigth.setSingleStep(1) | |
self.DS_BoundBoxTextHeigth.setEnabled(switchBoundBoxCreateText) | |
self.DS_BoundBoxTextHeigth.valueChanged.connect(self.on_DS_BoundBoxTextHeigth_valueChanged) | |
grid.addWidget(self.DS_BoundBoxTextHeigth, 2, 3) | |
##### Center of: | |
grid = QtWidgets.QGridLayout() | |
self.GBox_010_Center_Mass = QtWidgets.QGroupBox() | |
if switch_setVisible_GBox_010_Center_Mass == False: | |
self.GBox_010_Center_Mass.setVisible(switch_setVisible_GBox_010_Center_Mass) # visibility | |
self.GBox_010_Center_Mass.setLayout(grid) | |
vbox.addWidget(self.GBox_010_Center_Mass) | |
self.LA_13x = QtWidgets.QLabel() | |
self.LA_13x.setStyleSheet(u"QLabel {color : #ff0000; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_13x, 1, 0) | |
self.LA_13y = QtWidgets.QLabel() | |
self.LA_13y.setStyleSheet(u"QLabel {color : #008500; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_13y, 1, 1) | |
self.LA_13z = QtWidgets.QLabel() | |
self.LA_13z.setStyleSheet(u"QLabel {color : #0000ff; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_13z, 1, 2) | |
self.LE_13x = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_13x, 2, 0) | |
self.LE_13y = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_13y, 2, 1) | |
self.LE_13z = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_13z, 2, 2) | |
self.PB_Axis_02 = QtWidgets.QPushButton() | |
self.PB_Axis_02.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable | |
self.PB_Axis_02.clicked.connect(self.on_PB_Axis_Center_Shape) | |
grid.addWidget(self.PB_Axis_02, 2, 3) | |
self.LA_14x = QtWidgets.QLabel() | |
self.LA_14x.setStyleSheet(u"QLabel {color : #ff0000; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_14x, 4, 0) | |
self.LA_14y = QtWidgets.QLabel() | |
self.LA_14y.setStyleSheet(u"QLabel {color : #008500; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_14y, 4, 1) | |
self.LA_14z = QtWidgets.QLabel() | |
self.LA_14z.setStyleSheet(u"QLabel {color : #0000ff; font: bold}") # couleur du texte et gras | |
grid.addWidget(self.LA_14z, 4, 2) | |
self.LE_14x = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_14x, 5, 0) | |
self.LE_14y = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_14y, 5, 1) | |
self.LE_14z = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_14z, 5, 2) | |
self.PB_Axis_03 = QtWidgets.QPushButton() | |
self.PB_Axis_03.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable | |
self.PB_Axis_03.clicked.connect(self.on_PB_Axis_Center_Mass) | |
grid.addWidget(self.PB_Axis_03, 5, 3) | |
##### Inertia | |
grid = QtWidgets.QGridLayout() | |
self.GBox_011_Inertia = QtWidgets.QGroupBox() | |
if switch_setVisible_GBox_011_Inertia == False: | |
self.GBox_011_Inertia.setVisible(switch_setVisible_GBox_011_Inertia) # visibility | |
self.GBox_011_Inertia.setLayout(grid) | |
vbox.addWidget(self.GBox_011_Inertia) | |
self.LA_16 = QtWidgets.QLabel() | |
grid.addWidget(self.LA_16, 0, 0, 1, 3) | |
self.LE_16_Raw = QtWidgets.QLineEdit() # mode RAW | |
grid.addWidget(self.LE_16_Raw, 1, 0, 1, 5) | |
##oriself.LE_16_M = QtWidgets.QLineEdit() # change en spinBox | |
self.SB_16_M = QtWidgets.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 = QtWidgets.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 = QtWidgets.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 = QtWidgets.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 = QtWidgets.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 = QtWidgets.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 = QtWidgets.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 = QtWidgets.QLineEdit() | |
self.LE_16_01.setEnabled(False) | |
grid.addWidget(self.LE_16_01, 3, 3) | |
self.PB_Axis_04_16_1 = QtWidgets.QPushButton() | |
self.PB_Axis_04_16_1.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable | |
self.PB_Axis_04_16_1.clicked.connect(self.on_PB_Axis_04_16_1) | |
grid.addWidget(self.PB_Axis_04_16_1, 3, 4) | |
self.LE_16_2x = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_16_2x, 4, 0) | |
self.LE_16_2y = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_16_2y, 4, 1) | |
self.LE_16_2z = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_16_2z, 4, 2) | |
self.LE_16_02 = QtWidgets.QLineEdit() | |
self.LE_16_02.setEnabled(False) | |
grid.addWidget(self.LE_16_02, 4, 3) | |
self.PB_Axis_05_16_2 = QtWidgets.QPushButton() | |
self.PB_Axis_05_16_2.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable | |
self.PB_Axis_05_16_2.clicked.connect(self.on_PB_Axis_05_16_2) | |
grid.addWidget(self.PB_Axis_05_16_2, 4, 4) | |
self.LE_16_3x = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_16_3x, 5, 0) | |
self.LE_16_3y = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_16_3y, 5, 1) | |
self.LE_16_3z = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_16_3z, 5, 2) | |
self.LE_16_03 = QtWidgets.QLineEdit() | |
self.LE_16_03.setEnabled(False) | |
grid.addWidget(self.LE_16_03, 5, 3) | |
self.PB_Axis_06_16_3 = QtWidgets.QPushButton() | |
self.PB_Axis_06_16_3.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable | |
self.PB_Axis_06_16_3.clicked.connect(self.on_PB_Axis_06_16_3) | |
grid.addWidget(self.PB_Axis_06_16_3, 5, 4) | |
self.LE_16_4x = QtWidgets.QLineEdit() | |
self.LE_16_4x.setEnabled(False) | |
grid.addWidget(self.LE_16_4x, 6, 0) | |
self.LE_16_4y = QtWidgets.QLineEdit() | |
self.LE_16_4y.setEnabled(False) | |
grid.addWidget(self.LE_16_4y, 6, 1) | |
self.LE_16_4z = QtWidgets.QLineEdit() | |
self.LE_16_4z.setEnabled(False) | |
grid.addWidget(self.LE_16_4z, 6, 2) | |
self.LE_16_04 = QtWidgets.QLineEdit() | |
self.LE_16_04.setEnabled(False) | |
grid.addWidget(self.LE_16_04, 6, 3) | |
self.PB_Axis_07_16_4 = QtWidgets.QPushButton() | |
self.PB_Axis_07_16_4.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable | |
self.PB_Axis_07_16_4.clicked.connect(self.on_PB_Axis_07_16_4) | |
grid.addWidget(self.PB_Axis_07_16_4, 6, 4) | |
self.LA_17 = QtWidgets.QLabel() | |
grid.addWidget(self.LA_17, 7, 0, 1, 3) | |
##self.LE_17_M = QtWidgets.QLineEdit() # change en spinBox | |
self.SB_17_M = QtWidgets.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 = QtWidgets.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 = QtWidgets.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 = QtWidgets.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 = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_17_1x, 9, 0) | |
self.LE_17_1y = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_17_1y, 9, 1) | |
self.LE_17_1z = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_17_1z, 9, 2) | |
self.PB_Axis_08_17_1 = QtWidgets.QPushButton() | |
self.PB_Axis_08_17_1.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable | |
self.PB_Axis_08_17_1.clicked.connect(self.on_PB_Axis_08_17_1) | |
grid.addWidget(self.PB_Axis_08_17_1, 9, 4) | |
self.LE_17_2x = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_17_2x, 10, 0) | |
self.LE_17_2y = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_17_2y, 10, 1) | |
self.LE_17_2z = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_17_2z, 10, 2) | |
self.PB_Axis_09_17_2 = QtWidgets.QPushButton() | |
self.PB_Axis_09_17_2.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable | |
self.PB_Axis_09_17_2.clicked.connect(self.on_PB_Axis_09_17_2) | |
grid.addWidget(self.PB_Axis_09_17_2, 10, 4) | |
self.LE_17_3x = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_17_3x, 11, 0) | |
self.LE_17_3y = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_17_3y, 11, 1) | |
self.LE_17_3z = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_17_3z, 11, 2) | |
self.PB_Axis_10_17_3 = QtWidgets.QPushButton() | |
self.PB_Axis_10_17_3.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable | |
self.PB_Axis_10_17_3.clicked.connect(self.on_PB_Axis_10_17_3) | |
grid.addWidget(self.PB_Axis_10_17_3, 11, 4) | |
self.PB_Axis_11_17_4 = QtWidgets.QPushButton() | |
self.PB_Axis_11_17_4.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05))) # icone dans une variable | |
self.PB_Axis_11_17_4.clicked.connect(self.on_PB_Axis_11_17_4) | |
grid.addWidget(self.PB_Axis_11_17_4, 12, 4) | |
self.LA_determinant = QtWidgets.QLabel() | |
grid.addWidget(self.LA_determinant, 13, 0, 1, 1) | |
self.LE_18_determinant = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_18_determinant, 13, 1, 1, 4) | |
self.LA_determinantDecimal = QtWidgets.QLabel() | |
grid.addWidget(self.LA_determinantDecimal, 14, 0, 1, 1) | |
self.LE_18_determinantDecim = QtWidgets.QLineEdit() | |
grid.addWidget(self.LE_18_determinantDecim, 14, 1, 1, 4) | |
#### Disabled Module (SpreadSheet) | |
grid = QtWidgets.QGridLayout() | |
self.GBox_012_SpreadSheet = QtWidgets.QGroupBox() | |
if switch_setVisible_GBox_012_SpreadSheet == False: | |
self.GBox_012_SpreadSheet.setVisible(switch_setVisible_GBox_012_SpreadSheet) # visibility | |
self.GBox_012_SpreadSheet.setCheckable(True) | |
self.GBox_012_SpreadSheet.setChecked(False) | |
self.GBox_012_SpreadSheet.setStyleSheet(u"QGroupBox {color : #ff0000}") | |
self.GBox_012_SpreadSheet.clicked.connect(self.on_GBox_012_SpreadSheet) | |
self.GBox_012_SpreadSheet.setLayout(grid) | |
vbox.addWidget(self.GBox_012_SpreadSheet) | |
self.tableWidget = QtWidgets.QTableWidget() # self.GBox_012_SpreadSheet | |
self.tableWidget.setIconSize(QtCore.QSize(15, 15)) | |
self.tableWidget.setRowCount(RowCount) | |
self.tableWidget.setColumnCount(8) # number of columns | |
self.tableWidget.horizontalHeader().setVisible(False) | |
self.tableWidget.horizontalHeader().setDefaultSectionSize(100) | |
self.tableWidget.horizontalHeader().setMinimumSectionSize(15) | |
self.tableWidget.verticalHeader().setVisible(True) | |
self.tableWidget.verticalHeader().setCascadingSectionResizes(False) | |
self.tableWidget.verticalHeader().setDefaultSectionSize(20) | |
self.tableWidget.verticalHeader().setMinimumSectionSize(20) | |
grid.addWidget(self.tableWidget, 0, 0, 4, 4) | |
#### SpreadSheet (options CSV debut) | |
grid = QtWidgets.QGridLayout() | |
self.GBox_013_SpreadSheet_Creation = QtWidgets.QGroupBox() | |
if switch_setVisible_GBox_013_SpreadSheet_Creation == False: | |
self.GBox_013_SpreadSheet_Creation.setVisible(switch_setVisible_GBox_013_SpreadSheet_Creation) # visibility | |
self.GBox_013_SpreadSheet_Creation.setLayout(grid) | |
vbox.addWidget(self.GBox_013_SpreadSheet_Creation) | |
#### SpreadSheet dans le document | |
self.PB_03_Create_SpreadSheet = QtWidgets.QPushButton() | |
self.PB_03_Create_SpreadSheet.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_SpreadSheet))) # icone dans une variable | |
self.PB_03_Create_SpreadSheet.clicked.connect(self.on_PB_03_Create_SpreadSheet_clicked) | |
grid.addWidget(self.PB_03_Create_SpreadSheet, 0, 0, 1, 2) | |
self.LE_SpreadSheet = QtWidgets.QLineEdit() | |
self.LE_SpreadSheet.setText(newSpreadSheetName) | |
self.LE_SpreadSheet.textChanged.connect(self.on_LE_SpreadSheet_Pressed) | |
grid.addWidget(self.LE_SpreadSheet, 0, 2, 1, 2) | |
self.PB_SpreadSheet_Refresh = QtWidgets.QPushButton() | |
self.PB_SpreadSheet_Refresh.clicked.connect(self.on_PB_SpreadSheet_clicked) | |
grid.addWidget(self.PB_SpreadSheet_Refresh, 1, 0, 1, 2) | |
self.ComboB_SpreadSheet = QtWidgets.QComboBox() | |
self.ComboB_SpreadSheet.currentIndexChanged[str].connect(self.On_ComboB_SpreadSheet)# [str] or [int] | |
grid.addWidget(self.ComboB_SpreadSheet, 1, 2, 1, 2) | |
#### SpreadSheet sur disque | |
self.PB_01_Read_SpreadSheet = QtWidgets.QPushButton() | |
self.PB_01_Read_SpreadSheet.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_04))) # icone dans une variable | |
self.PB_01_Read_SpreadSheet.clicked.connect(self.on_PB_01_Read_SpreadSheet_clicked) | |
grid.addWidget(self.PB_01_Read_SpreadSheet, 2, 0, 1, 1) | |
self.PB_02_Save_SreadSheet = QtWidgets.QPushButton() | |
self.PB_02_Save_SreadSheet.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_03))) # icone dans une variable | |
self.PB_02_Save_SreadSheet.clicked.connect(self.on_PB_02_Save_SreadSheet_clicked) | |
grid.addWidget(self.PB_02_Save_SreadSheet, 2, 1, 1, 1) | |
self.RB_01_Tabulation = QtWidgets.QRadioButton() | |
self.RB_01_Tabulation.setChecked(True) | |
self.RB_01_Tabulation.clicked.connect(self.on_RB_Separation) | |
grid.addWidget(self.RB_01_Tabulation, 3, 0) | |
self.RB_02_Virgule = QtWidgets.QRadioButton() | |
self.RB_02_Virgule.clicked.connect(self.on_RB_Separation) | |
grid.addWidget(self.RB_02_Virgule, 3, 1) | |
self.RB_03_Point_Virgule = QtWidgets.QRadioButton() | |
self.RB_03_Point_Virgule.clicked.connect(self.on_RB_Separation) | |
grid.addWidget(self.RB_03_Point_Virgule, 3, 2) | |
self.RB_04_Espace = QtWidgets.QRadioButton() | |
self.RB_04_Espace.clicked.connect(self.on_RB_Separation) | |
grid.addWidget(self.RB_04_Espace, 3, 3) | |
#options CSV fin | |
#### Main | |
grid = QtWidgets.QGridLayout() | |
self.GBox_014_Main_Tools = QtWidgets.QGroupBox() | |
if switch_setVisible_GBox_014_Main_Tools == False: | |
self.GBox_014_Main_Tools.setVisible(switch_setVisible_GBox_014_Main_Tools) # visibility | |
self.GBox_014_Main_Tools.setLayout(grid) | |
vbox.addWidget(self.GBox_014_Main_Tools) | |
self.CB_01_Info = QtWidgets.QCheckBox() | |
self.CB_01_Info.setChecked(switchDisplayInfoObject) | |
self.CB_01_Info.clicked.connect(self.on_CB_01_Info) | |
grid.addWidget(self.CB_01_Info, 0, 0, 1, 2) | |
self.CB_02_Point = QtWidgets.QCheckBox() | |
self.CB_02_Point.setChecked(switchCreatePoint) | |
self.CB_02_Point.clicked.connect(self.on_CB_02_Point) | |
grid.addWidget(self.CB_02_Point, 0, 1) | |
self.CB_03_Axis = QtWidgets.QCheckBox() | |
self.CB_03_Axis.setChecked(switchCreateAxis) #False | |
self.CB_03_Axis.clicked.connect(self.on_CB_03_Axis) | |
grid.addWidget(self.CB_03_Axis, 0, 2) | |
self.CB_04_Plane = QtWidgets.QCheckBox() | |
self.CB_04_Plane.setChecked(switchCreatePlane) #False | |
self.CB_04_Plane.clicked.connect(self.on_CB_04_Plane) | |
grid.addWidget(self.CB_04_Plane, 0, 3) | |
self.RB_00_ClipBoard = QtWidgets.QRadioButton() | |
if seTMemoClipBoard == 0: | |
self.RB_00_ClipBoard.setChecked(True) | |
self.RB_00_ClipBoard.clicked.connect(self.on_RB_00_ClipBoard) | |
grid.addWidget(self.RB_00_ClipBoard, 1, 0) | |
self.RB_01_ClipBoard = QtWidgets.QRadioButton() | |
if seTMemoClipBoard == 1: | |
self.RB_01_ClipBoard.setChecked(True) | |
self.RB_01_ClipBoard.clicked.connect(self.on_RB_01_ClipBoard) | |
grid.addWidget(self.RB_01_ClipBoard, 1, 1) | |
self.RB_02_ClipBoard = QtWidgets.QRadioButton() | |
if seTMemoClipBoard == 2: | |
self.RB_02_ClipBoard.setChecked(True) | |
self.RB_02_ClipBoard.clicked.connect(self.on_RB_02_ClipBoard) | |
grid.addWidget(self.RB_02_ClipBoard, 1, 2) | |
self.RB_03_ClipBoard = QtWidgets.QRadioButton() | |
if seTMemoClipBoard == 3: | |
self.RB_03_ClipBoard.setChecked(True) | |
self.RB_03_ClipBoard.clicked.connect(self.on_RB_03_ClipBoard) | |
grid.addWidget(self.RB_03_ClipBoard, 1, 3) | |
self.CB_05_Position = QtWidgets.QCheckBox() | |
self.CB_05_Position.setChecked(False) | |
if seTPositionFlyRightLeft == 1: | |
self.CB_05_Position.setVisible(False) | |
elif seTPositionFlyRightLeft == 2: | |
self.CB_05_Position.setChecked(False) | |
else: | |
self.CB_05_Position.setChecked(True) | |
self.CB_05_Position.clicked.connect(self.on_CB_05_Position) | |
grid.addWidget(self.CB_05_Position, 2, 0) | |
self.SPBox_arrondi = QtWidgets.QSpinBox() | |
self.SPBox_arrondi.setMinimum(-1) | |
self.SPBox_arrondi.setMaximum(1000) | |
#self.SPBox_arrondi.setProperty(u"value", seTDecimalValue) | |
self.SPBox_arrondi.setValue(seTDecimalValue) | |
self.SPBox_arrondi.setSuffix(u" (Decimals)") | |
self.SPBox_arrondi.valueChanged.connect(self.on_SPBox_arrondi_valueChanged) | |
grid.addWidget(self.SPBox_arrondi, 3, 0, 1, 2) | |
self.SP_012_01_Text = QtWidgets.QSpinBox() | |
self.SP_012_01_Text.setMinimum(0) | |
self.SP_012_01_Text.setMaximum(99999999) | |
self.SP_012_01_Text.setValue(seTTextHeigthValue) | |
self.SP_012_01_Text.setSuffix(u" (Text Height)") | |
self.SP_012_01_Text.valueChanged.connect(self.on_SP_012_01_Text_valueChanged) | |
grid.addWidget(self.SP_012_01_Text, 3, 2, 1, 2) | |
self.PB_05_Help_Forum = QtWidgets.QPushButton() | |
self.PB_05_Help_Forum.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_WebForum))) # icone dans une variable | |
self.PB_05_Help_Forum.clicked.connect(self.on_PB_05_Help_Forum_clicked) | |
grid.addWidget(self.PB_05_Help_Forum, 4, 0, 1, 2) | |
self.PB_06_Help_Wiki = QtWidgets.QPushButton() | |
self.PB_06_Help_Wiki.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_WebWiki))) # icone dans une variable | |
self.PB_06_Help_Wiki.clicked.connect(self.on_PB_06_Help_Wiki) | |
grid.addWidget(self.PB_06_Help_Wiki, 4, 2, 1, 2) | |
self.PB_01_Refrech = QtWidgets.QPushButton() | |
self.PB_01_Refrech.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_02))) # icone dans une variable | |
self.PB_01_Refrech.clicked.connect(self.on_PB_01_Refrech_clicked) | |
grid.addWidget(self.PB_01_Refrech, 5, 0, 1, 2) | |
self.PB_04_Quit = QtWidgets.QPushButton() | |
self.PB_04_Quit.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_01))) # icone dans une variable | |
self.PB_04_Quit.clicked.connect(self.on_PB_04_Quit) | |
grid.addWidget(self.PB_04_Quit, 5, 2, 1, 2) | |
###########################################################scrollArea | |
self.scrollArea.setWidget(self.scrollAreaWidgetContents_2) | |
###########################################################scrollArea | |
self.retranslateUi(MainWindow) | |
QtCore.QMetaObject.connectSlotsByName(MainWindow) | |
if seTPositionFlyRightLeft == 1: # 1=MainWindow separate | |
MainWindow.setWindowTitle(__Title__ + u" rmu (" + __Version__ + ") (" + __Date__ + ")") | |
MainWindow.setCentralWidget(self.centralWidget) | |
MainWindow.move(1000, 120) # deplace la fenetre | |
else: | |
MainWindow.setWindowTitle(__Title__ + u" rmu (" + __Version__ + ") (" + __Date__ + ")") | |
MainWindow.setWidget(self.centralWidget) | |
self.retranslateUi(MainWindow) | |
QtCore.QMetaObject.connectSlotsByName(MainWindow) | |
def retranslateUi(self, MainWindow): | |
global diffuseColorRF | |
global diffuseColorVF | |
global diffuseColorBF | |
global diffuseColorTF | |
global unsignedEncodeColor | |
global typeLongueur | |
global path | |
global volume_ | |
global longueurObjet | |
global rayonObjet | |
global perimetre | |
global seTDensiteValue | |
global seTIndexUnitWeight | |
global seTIndexUnitLength | |
global ui | |
global materialAssociated | |
global seTMaterialFileName | |
global seTMaterialSavePathName | |
global seTMaterialSuffixCost | |
global seTMaterialPrice | |
global seTMaterialCost | |
global seTTextHeigthValue | |
global directionObj | |
global direcValueAt | |
global direcNormalAt | |
global poids | |
global unitePs | |
global numberEdges | |
global nombreArretesMesh | |
global nombreFacesMesh | |
global nombrePointsMesh | |
global seTUnitSymbolMicro | |
global BsplineDetect | |
global BsplineNombreDeNoeuds | |
global BsplineRayonApproximatif | |
global BsplineCercleToolTip | |
global BsplineNumberElement | |
global BsplineCutLength | |
global BsplinePointsCoor | |
global setBSplineToByArcValue | |
global BSplinetoByArcValeurS | |
global switchCreateLineDiVatNatOnClick | |
global switchSetPlaceholderText | |
global typeNormalAt | |
#self.LA_determinantDecimal = QtWidgets.QLabel() | |
#grid.addWidget(self.LA_determinantDecimal, 14, 0, 1, 1) | |
ui.on_SP_012_01_Text_valueChanged(seTTextHeigthValue) # actualise text | |
MainWindow.setWindowFlags(PySide2.QtCore.Qt.WindowStaysOnTopHint) # PySide2 cette fonction met la fenetre en avant | |
##https://doc.qt.io/qt-5/qtwidgets-widgets-windowflags-example.html | |
#MainWindow.setWindowFlags(PySide2.QtCore.Qt.WindowTitleHint) # 2 absents X grise (fonctionne pas dans ComboView et desactive WindowStaysOnTopHint) | |
#MainWindow.setWindowFlags(PySide2.QtCore.Qt.WindowContextHelpButtonHint)# WindowCloseButtonHint , setCancelButton(None) | |
MainWindow.setWindowIcon(QtGui.QIcon(path+'FCInfo.png')) # icone dans fichier | |
pointPlanAxesTexte = ( | |
u"Create Point or Axis or Plane or Clipboard" + "\n" + | |
u"Mouse coordinates" + "\n\n" + | |
u"The coordinates are cliped to this form" + "\n" + | |
u"FreeCAD.Vector(-24.0, 240.0, 7.0)" + "\n" + | |
u"X, Y, Z (separated by comma)" + "\n" + | |
u"X Y Z (separated by space)" + "\n" + | |
u"depend option on choice" + "\n" | |
) | |
#### | |
self.GBox_001_Document.setTitle(u"Document") | |
self.LE_1.setText(document_) | |
self.LE_1.setToolTip(u"Name of the active document.") | |
self.LE_2.setText(object_Label) | |
self.LE_2.setToolTip(u"Label of the selected object.") | |
self.LE_2a.setText(object_Name) | |
self.LE_2a.setToolTip(u"Internal name of the element.") | |
self.LE_3.setText(str(subElemName)) | |
self.LE_3.setToolTip(u"Name of the selected SubObject.") | |
self.LE_3a.setText(str(typeObject)) | |
self.LE_3a.setToolTip(u"Type of the selected (Shape) object.") | |
self.LE_4.setText(str(object_Type)) | |
self.LE_4.setToolTip(u"TypeID of the selected Object.") | |
# self.LE_Curve.setText(str(curveObject)) | |
# self.LE_Curve.setToolTip(u"Curve.") | |
self.LA_1.setText(u"Document name") | |
self.LA_2.setText(u"Label / Internal-Name") | |
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"Coordinate click mouse") | |
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"X coordinate of the click of the mouse.") | |
self.LE_4y.setText(str(Around(position1))) | |
self.LE_4y.setToolTip(u"Y coordinate of the click of the mouse.") | |
self.LE_4z.setText(str(Around(position2))) | |
self.LE_4z.setToolTip(u"Z coordinate of the click of the mouse.") | |
self.PB_Axis_01.setToolTip(pointPlanAxesTexte) | |
#### | |
self.GBox_003_Color.setTitle(u"Color on point") | |
self.LA_1_Red.setText(u"Red") | |
self.LA_2_Green.setText(u"Green") | |
self.LA_3_Blue.setText(u"Blue") | |
self.LA_4_Transparent.setText(u"Transparency") | |
self.LE_CRed.setText(str(Around(diffuseColorRF))) | |
self.LE_CRed.setToolTip(u"Color Red on clicked point (format FreeCAD)" + "\n" + | |
u"The frame is colored with the percent of red displayed") | |
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"Color Green on clicked point (format FreeCAD)" + "\n" + | |
u"The frame is colored with the percent of green displayed") | |
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"Color Blue on clicked point (format FreeCAD)" + "\n" + | |
u"The frame is colored with the percent of blue displayed") | |
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"Transparency on clicked point (format FreeCAD)") | |
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'Give different mode codification of colors' + '\n' | |
u'The frame is colored with the same color on point clicked' + '\n\n' + | |
u'Example displayed :' + '\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("color : #052123")' + '\n' | |
u'3: 0x052123\t: Mode RVB Hexadecimal (Python: hex(336163)' + '\n' | |
u'4: RVB decim\t: Mode RVB (Qt setStyleSheet("background-color: rgb(5, 33, 36)"))' + '\n' | |
u'5: RVB float\t: Mode RVB format float de 0.0 to 1.0' + '\n' | |
u'\t\t(The number of decimals depend of the option "x (Decimals)") (seTDecimalValue)' + '\n\n') | |
self.CBox_Color_FaceObject.setText(u"Sub.Objet") | |
self.CBox_Color_FaceObject.setToolTip(u"Change the color of the selected object or subobject" + "\n" + | |
u"If this box is activated the face or sub Object selected is modified or duplicated" + "\n" + | |
u"If it is not activated (default) the object is modified (color) or duplicated") | |
self.PB_ChangeColor.setText(u"Coul. Obj") | |
self.PB_ChangeColor.setToolTip(u"Change the color of the shape or the face depend of the choice" + "\n" | |
u"In case object Mesh or Points the complete object is colored" + "\n\n") | |
#u"If a point or an edge is selected, the complete object is colored") | |
self.PB_CreateFace.setText(u"Dupl. Obj") | |
self.PB_CreateFace.setToolTip(u"Duplicates the face or the object depend to the chosen option" + "\n" + | |
u"In the case of a Mesh object or Points the complete object is colored" + "\n" + | |
u"Duplicate a Mesh object keeps the original and creates a solid shape" + "\n" + | |
u"Duplicate a Points object keeps the original and creates a copy") | |
self.SBox_Transparence.setToolTip(u"Degree of transparency of the selected face or object" + "\n" + | |
u"depend on the option chosen" + "\n" + | |
u"0 = opaque / 100 = transparent") | |
#### | |
self.GBox_004_Object_Mesh.setTitle(u"Components") # Mesh or Points | |
self.LA_N_Edges.setText(u"Edges") | |
self.LE_N_Edges.setText(str(nombreArretesMesh)) | |
self.LE_N_Edges.setToolTip(u"Number of Edges in object 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"Number of Faces in object objet Mesh") | |
self.LA_N_Points.setText(u"Points") | |
self.LE_N_Points.setText(str(nombrePointsMesh)) | |
self.LE_N_Points.setToolTip(u"Number of Points in object") # mesh and Points | |
#### | |
self.GBox_005_Value_Unit.setTitle(u"Units") | |
self.LA_5a.setText(u"Units") | |
#http://fr.wikipedia.org/wiki/Unit%C3%A9s_de_mesure_anglo-saxonnes | |
self.comboBox.setToolTip(u"Selects a unit of length.") | |
# 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"Perim. 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"Length of the object." + "\n" | |
u"If the face is selected, the perimeter of the face is displayed.") | |
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 detected " + "\n" | |
u"Number of element = " + str(BsplineNumberElement) + "\n" + | |
u"Calcul with distance between points " + str(Around(BsplineCutLength * uniteM)) + " " + uniteMs + "\n\n" + | |
u"toBiArcs(" + BSplinetoByArcValeurS + ")" + "\n" | |
u"This value can be modified in the preferences 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"Radius BSpline.") | |
self.LE_5b.setText(BsplineRayonApproximatif) | |
self.LE_5b.setToolTip(u"BSpline Radius on point : " + self.SB_Arc_ToByArcs.text()) | |
self.LA_6.setText(u"BSpline Nodes") | |
self.LE_6.setText(str(BsplineNombreDeNoeuds)) | |
self.LE_6.setToolTip(u"Number of nodes of the BSpline.") | |
else: | |
self.SB_Arc_ToByArcs.setVisible(False) | |
self.PB_BSplineCreateNodes.setVisible(False) | |
self.LA_5b.setText(u"Radius") | |
self.LE_5b.setText(str(Around(rayonObjet * float(uniteM))) + " " + uniteMs + (" (dia. " + str(Around(rayonObjet * float(uniteM) * 2.0)) + " " + uniteMs + ")")) | |
self.LE_5b.setToolTip(u"Radius detected and displayed in radius and diameter." | |
u"If one radius of face is detected, it is also displayed") | |
if numberEdges == 1: | |
self.LA_6.setText(u"Circumference (" + str(numberEdges) + ")") | |
else: | |
self.LA_6.setText(u"Perimetre of shape (" + str(numberEdges) + ")") | |
self.LE_6.setText(str(Around(float(perimetre) * float(uniteM))) + " " +uniteMs) | |
else: | |
self.LA_6.setText(u"Perimetre of 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"Perimeter total of the form." + "\n" | |
u"Display the total result of the edges") | |
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"Hidden feature : " + "\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.GBox_006_Inclination.setTitle(u"Inclination") | |
self.GBox_006_Inclination.setToolTip(u"Inclination compared XY, YZ, XZ") | |
self.LA_8a.setText(u"Plane") | |
self.PB_Ra.setText(u"Degrees") | |
self.PB_Ra.setToolTip(u"Toggles between decimal degrees, degrees minutes second" + "\n" | |
u"Radian, Grade, Percent.") | |
self.LA_8a_2.setText(u"Coordinates") | |
self.LA_8xy.setText(u"XY") | |
self.LE_8xy.setText(str(Plan_xy) + " " + uniteAs) | |
self.LE_8xy.setToolTip(u"Angle in the XY plane.") | |
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 in the YZ plane.") | |
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 in the ZX plane.") | |
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"Create a line (Yellow) in the displayed direction" + "\n" | |
u"Line is created at point 0,0,0 to Direction (switchCreateLineDiVatNatOnClick = FALSE)" + "\n" | |
u"If switchCreateLineDiVatNatOnClick = True, the line starts at the point clicked by the mouse" + "\n" | |
u"The button is displayed with an asterisk *Direction" + "\n") | |
self.LE_9_Direction.setText(str(directionObj)) | |
self.LE_9_Direction.setToolTip(u"Direction of object" + "\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"Create a line (Magenta) in the direction ValueAt(0)" + "\n" | |
u"The line is created at point 0,0,0 in the direction ValueAt(0) (switchCreateLineDiVatNatOnClick = FALSE)" + "\n" | |
u"If switchCreateLineDiVatNatOnClick = True, the line starts at the point clicked by the mouse" + "\n" | |
u"The button is displayed with an asterisk *ValueAt(0)" + "\n") | |
self.LE_10_ValueAt.setText(str(direcValueAt)) | |
self.LE_10_ValueAt.setToolTip(u"Returns the value of the vector corresponding to the 3D parameter. " + "\n" | |
u"Command :" + "\n\n" | |
u"Gui.Selection.getSelectionEx()[0].SubObjects[0].Edges[0].valueAt(0)" + "\n\n") | |
self.PB_Line_NormalAT.setToolTip(u"Create a line (Cyan) in the direction NormalAt(0,0)" + "\n" | |
u"The line is created at point 0,0,0 in the NormalAt(0,0) direction (switchCreateLineDiVatNatOnClick = FALSE)" + "\n" | |
u"If switchCreateLineDiVatNatOnClick = True, the line starts at the point clicked by the mouse" + "\n" | |
u"The button is displayed with an asterisk *NormalAt(0,0)" + "\n") | |
self.LE_10b_NormalAt.setText(str(direcNormalAt)) | |
self.LE_10b_NormalAt.setToolTip(u"Returns the value of the parameters of the normal of the selected face" + "\n" | |
u"Command :" + "\n\n" | |
u"Gui.Selection.getSelectionEx()[0].SubObjects[0].Faces[0].normalAt(0,0)" + "\n\n") | |
## | |
#### | |
self.GBox_012_SpreadSheet.setTitle(u"Details of the form") | |
self.tableWidget.setToolTip(u"Details of the form :" + "\n" | |
u"If the checkBox is checked, a complete scan of the selected form is done" + "\n" | |
u"(Using this option may take a long time for a large object" + "\n" | |
u"a full scan is done with each mouse click (Unchecked by default coloured re))" + "\n\n" | |
u"If not checked the principal data are displayed" + "\n" + "\n" | |
u"Vertexes and details : (Edges) (Faces) (Vertex Faces) ...(Total)" + "\n" | |
u"Scoreboard only the first 200 details of the form are displayed." + "\n" | |
u"All the elements will be visible in the file after saving it.") | |
#### | |
self.GBox_007_Surface_and_Volume.setTitle(u"Area and Volume") | |
self.LA_9.setText(u"Area of the form") | |
self.LE_9a.setText(str(Around(surface)) + " " + uniteSs) | |
self.LE_9a.setToolTip(u"Total area of the form.") | |
self.LA_10.setText(u"Area of the face") | |
self.LE_10a.setText(str(Around(surfaceFace)) + " " + uniteSs) | |
self.LE_10a.setToolTip(u"Area of the face.") | |
self.LA_11.setText(u"Volume of the form") | |
self.LE_11a.setText(str(Around(volume_)) + " " + uniteVs) | |
self.LE_11a.setToolTip(u"Total volume of the form.") | |
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"Select a unit of mass.") | |
self.LA_Weight.setText(u"Mass") | |
self.LA_Density.setText(u"Density") | |
self.LE_12a.setText(str(Around(poids)) + " " + unitePs) | |
self.LE_12a.setToolTip(u"Mass of the form in the selected unit.") | |
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"Cost") | |
self.LA_Cost.setText(u"Cost total") | |
self.LA_Price.setText(u"Price (kg/dm3)") | |
self.PB_Del_Material.setText(u"Delete (" + str(self.CBox_Materiel.currentIndex() + 1) + "/" + str(len(materialAssociated)) + ")") | |
self.PB_Del_Material.setToolTip(u"Delete the curent material ") | |
self.PB_Save_Material.setText(u"Save") | |
self.PB_Save_Material.setToolTip(u"Save the curent material" + "\n" | |
u"The material is also saved with the Exit button") | |
self.LA_Material.setText(u"Material") | |
self.CBox_Materiel.setToolTip(u"The material data is saved in the macro location (by default)" + "\n\n" | |
u"First run one Material file is created with 20 components" + "\n" | |
u"(You can adding all components material you want)" + "\n" | |
u"Location : " + seTMaterialSavePathName + " file name : " + seTMaterialFileName + "\n" | |
u"Actual : " + str(len(materialAssociated)) + " materials listed" + "\n" | |
u"If the file is deleted or empity one new file of material is created" + "\n" | |
u"with the basic material include in the macro") | |
self.LA_NewMaterial.setText(u"New material or editing") | |
self.LE_Materiel.setToolTip(u"Enter your new material and press enter for validate" + "\n\n" | |
u"Format : newNameMaterial, Density, Price (by kg), Info" + "\n\n" | |
u"newNameMaterial : the material name" + "\n" | |
u"Density \t : density of the material in Kg by dm3" + "\n" | |
u"Price \t : price of the material" + "\n" | |
u"Info \t : info of the material of other" + "\n\n" | |
u"Each field is separated by a comma" + "\n\n" | |
u"Other format is not accepted and the background is coloured in red" + "\n" | |
u"The current material is displayed you can change or complete the data material" + "\n" | |
u"If the name is changed, on new material is created" + "\n") | |
#### | |
self.GBox_009_BoundBox.setTitle(u"BoundBox") | |
self.LA_007_01_Xlength.setText(u"X Length") | |
self.LA_007_02_Ylength.setText(u"Y Length") | |
self.LA_007_03_Zlength.setText(u"Z Length") | |
self.LA_007_04_Diagonallength.setText(u"Diagonal Length") | |
self.LE_007_BB_01_XLength.setText(str(Around(boundBoxLX * uniteM)) + " " + uniteMs) | |
self.LE_007_BB_01_XLength.setToolTip(u"Dimensions of the form:" + "\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 of the form:" + "\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 of the form:" + "\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 diagonal boundBox of the form.") | |
self.PB_BoundBox_Tracing.setText(u"Tracing") | |
self.PB_BoundBox_Tracing.setToolTip(u"Trace the boundBox edge of the shape.") | |
self.PB_00_BoundBox_Volume.setText(u"Volume") | |
self.PB_00_BoundBox_Volume.setToolTip(u"Create BoundBox Volume of the shape.") | |
self.CB_01_BoundBox_Text.setText(u"Text Dim.") | |
self.CB_01_BoundBox_Text.setToolTip(u"Create Dimension on BoundBox") | |
#### | |
self.GBox_010_Center_Mass.setTitle(u"Centre of :") | |
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"X coordinate of the center of the shape.") | |
self.LE_13y.setText(str(Around(boundBoxCenterY * uniteM)) + " " + uniteMs) | |
self.LE_13y.setToolTip(u"Y coordinate of the center of the shape.") | |
self.LE_13z.setText(str(Around(boundBoxCenterZ * uniteM)) + " " + uniteMs) | |
self.LE_13z.setToolTip(u"Z coordinate of the center of the shape.") | |
#self.PB_Axis_02.setText(u"Axis") | |
self.PB_Axis_02.setToolTip(pointPlanAxesTexte) | |
self.LA_14x.setText(massOrGravity + u" X") | |
self.LA_14y.setText(massOrGravity + u" Y") | |
self.LA_14z.setText(massOrGravity + u" Z") | |
self.LE_14x.setText(str(Around(CenterOfMassX * uniteM)) + " " + uniteMs) | |
self.LE_14x.setToolTip(u"X coordinate of the center of " + massOrGravity) | |
self.LE_14y.setText(str(Around(CenterOfMassY * uniteM)) + " " + uniteMs) | |
self.LE_14y.setToolTip(u"Y coordinate of the center of " + massOrGravity) | |
self.LE_14z.setText(str(Around(CenterOfMassZ * uniteM)) + " " + uniteMs) | |
self.LE_14z.setToolTip(u"Z coordinate of the center of " + massOrGravity) | |
#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"Determinant") | |
self.LA_determinantDecimal.setText(u"Determinant 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"Determinant of Matrix." + "\n" | |
u"In linear algebra, the determinant is a useful value that can be computed" + "\n" | |
u"from the elements of a square matrix." + "\n" | |
u"The determinant of a matrix A is denoted det(A), det A, or " + chr(124) + "A"+ chr(124)+ "." + "\n" | |
u"It can be viewed as the scaling factor of the transformation described by the matrix." + "\n" | |
u"see https://en.wikipedia.org/wiki/Determinant") | |
self.LE_18_determinantDecim.setText(str(decimal.Decimal(DeterminantM))) | |
self.LE_18_determinantDecim.setToolTip(u"Determinant Decimal.") | |
if switch_Set_Placeholder_Text == True: | |
self.LE_1.setPlaceholderText(u"Document name") | |
self.LE_2.setPlaceholderText(u"Label") | |
self.LE_2a.setPlaceholderText(u"Internal name") | |
self.LE_3.setPlaceholderText(u"Sub objet") | |
self.LE_3a.setPlaceholderText(u"Type") | |
self.LE_4.setPlaceholderText(u"TypeID") | |
self.LE_4x.setPlaceholderText(u"X Mouse") | |
self.LE_4y.setPlaceholderText(u"Y Mouse") | |
self.LE_4z.setPlaceholderText(u"Z Mouse") | |
self.LE_N_Edges.setPlaceholderText(u"Number of Edge(s)") | |
self.LE_N_Facets.setPlaceholderText(u"Number of Face(s)") | |
self.LE_N_Points.setPlaceholderText(u"Number of Points") | |
self.LE_CRed.setPlaceholderText(u"Red") | |
self.LE_CGreen.setPlaceholderText(u"Green") | |
self.LE_CBlue.setPlaceholderText(u"Blue") | |
self.LE_Transparent.setPlaceholderText(u"Transparency") | |
self.LE_ConversionUnsigned.setPlaceholderText(u"Codage of colors") | |
self.LE_5.setPlaceholderText(u"Length") | |
self.LE_5b.setPlaceholderText(u"Radius") | |
self.LE_6.setPlaceholderText(u"Perimeter") | |
self.LE_8xy.setPlaceholderText(u"Degrees") | |
self.LE_8yz.setPlaceholderText(u"Degrees") | |
self.LE_8zx.setPlaceholderText(u"Degrees") | |
self.LE_8xya.setPlaceholderText(u"XY Angle") | |
self.LE_8yza.setPlaceholderText(u"YZ Angle") | |
self.LE_8zxa.setPlaceholderText(u"ZX Angle") | |
self.LE_9_Direction.setPlaceholderText(u"Direction") | |
self.LE_10_ValueAt.setPlaceholderText(u"Vector") | |
self.LE_10b_NormalAt.setPlaceholderText(u"NormalAt") | |
self.LE_9a.setPlaceholderText(u"Total Area") | |
self.LE_10a.setPlaceholderText(u"Face Area") | |
self.LE_11a.setPlaceholderText(u"Volume") | |
self.LE_12a.setPlaceholderText(u"Mass") | |
self.LE_Cost.setPlaceholderText(u"Price") | |
self.LE_Materiel.setPlaceholderText(u"Material") | |
self.LE_007_BB_01_XLength.setPlaceholderText(u"X Length") | |
self.LE_007_BB_02_YLength.setPlaceholderText(u"Y Length") | |
self.LE_007_BB_03_ZLength.setPlaceholderText(u"Z Length") | |
self.LE_007_BB_04_Diagonal.setPlaceholderText(u"Diagonal Length") | |
self.LE_13x.setPlaceholderText(u"X Coordinate") | |
self.LE_13y.setPlaceholderText(u"Y Coordinate") | |
self.LE_13z.setPlaceholderText(u"Z Coordinate") | |
self.LE_14x.setPlaceholderText(u"X Coordinate") | |
self.LE_14y.setPlaceholderText(u"Y Coordinate") | |
self.LE_14z.setPlaceholderText(u"Z Coordinate") | |
self.LE_18_determinant.setPlaceholderText(u"Determinant") | |
self.LE_18_determinantDecim.setPlaceholderText(u"Decimal Determinant") | |
#### | |
self.GBox_013_SpreadSheet_Creation.setTitle(u"SpreadSheet") | |
self.GBox_013_SpreadSheet_Creation.setToolTip(u"Option for save or read the data in spreadSheet" + "\n" | |
u"with different separator" + "\n" | |
u"Tabulation, Comma, Semicolon, Space" + "\n" | |
u"Tabulation are the separator for the FreeCAD spreadSheet module" + "\n" | |
u"The number of this four separator are calculate for help if unknown" + "\n\n" | |
u"The COMMA are the old (01.16 and before) separator of the FCInfo macro" + "\n" | |
u"Now for compatibility with the FreeCAD spreadSheet and since 01.17 version" + "\n" | |
u"the TABULATION is the separator by default" + "\n\n" | |
u"If you want to convert your old FCInfo spreadsheet :" + "\n" | |
u"Open it in FCInfo and save it with the Tabulation option checked") | |
self.PB_01_Read_SpreadSheet.setText(u"Read") | |
self.PB_01_Read_SpreadSheet.setToolTip(u"Read the file from disk.") | |
self.PB_02_Save_SreadSheet.setText(u"Save") | |
self.PB_02_Save_SreadSheet.setToolTip(u"Save the file to disk.") | |
self.RB_01_Tabulation.setText(u"Tabulation") | |
self.RB_02_Virgule.setText(u"Comma") | |
self.RB_03_Point_Virgule.setText(u"Semicolon") | |
self.RB_04_Espace.setText(u"Space") | |
self.ComboB_SpreadSheet.setToolTip(u"List of spreadSeet available") | |
self.PB_SpreadSheet_Refresh.setText(u"Refresh") | |
self.PB_SpreadSheet_Refresh.setToolTip(u"Refresh and Search Spreadsheet") | |
self.LE_SpreadSheet.setToolTip(u"Current worksheet (first displayed)" + "\n" + | |
u"If there is no worksheet in the document," + "\n" + | |
u"a spreadsheet named FCSpreadSheet is created" + "\n" + | |
u"or the displayed spreadsheet is updated" + "\n" + | |
u"or type the name of your spreadsheet") | |
self.PB_03_Create_SpreadSheet.setText(u"SpreadSheet") | |
self.PB_03_Create_SpreadSheet.setToolTip(u"Creates a spreadsheet with all the information in the current document.") | |
#### | |
self.GBox_014_Main_Tools.setTitle(u"Main menu") | |
self.CB_01_Info.setText(u"Info") | |
self.CB_01_Info.setToolTip(u"If checked Display Infos in Rapport View") | |
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"If checked Create point") | |
self.CB_03_Axis.setText(u"Axis") | |
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"If checked Create 3 axis in XYZ direction") | |
self.CB_04_Plane.setText(u"Plane") | |
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"If checked Create 3 Plane in XYZ direction") | |
#### | |
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"None clipBoard") | |
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"If checked the coordinate are copy in the clipBoard" + "\n" + | |
u"Form : 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"If checked the coordinate are copy in the clipBoard" + "\n" + | |
u"Form : X, Y, Z" + "\n" + | |
u"with Comma separator") | |
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"If checked the coordinate are copy in the clipBoard" + "\n" + | |
u"Form : X Y Z" + "\n" + | |
u"As is with Space separator") | |
## | |
self.CB_05_Position.setText(u"Left/Right") | |
self.CB_05_Position.setToolTip(u"Change the window macro position Right of Left") | |
## | |
self.SPBox_arrondi.setSuffix(u" (Decimals)") | |
self.SPBox_arrondi.setToolTip(u"Select the number of decimal places behind the comma." + "\n" | |
u"If the value is -1, the rounding is set to 1000" + "\n" | |
u"(infinity)") | |
self.SP_012_01_Text.setSuffix(u" (Text Height)") | |
## | |
self.PB_05_Help_Forum.setText(u"Forum") | |
self.PB_05_Help_Forum.setToolTip(u"Open your explorer in the FCInfo Forum page ") | |
self.PB_06_Help_Wiki.setText(u"Wiki") | |
self.PB_06_Help_Wiki.setToolTip(u"Open your explorer in the FCInfo Wiki page") | |
## | |
self.PB_01_Refrech.setText(u"Ref") | |
self.PB_01_Refrech.setToolTip(u"Refrech the rapport view.") | |
self.PB_04_Quit.setText(u"Exit") | |
self.PB_04_Quit.setToolTip(u"Exit FCInfo." + "\n" | |
u"The material is saved also on quit the macro" + "\n" | |
u"All parameters are saved with this action") | |
self.SPBox_arrondi.setToolTip(u"seTDecimalValue the value displayed in the window." + "\n" | |
u"If the value is -1 the arrond is called to 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 ui | |
global seTTextHeigthValue | |
global FreeCAD_ParamGetSet | |
seTTextHeigthValue = value | |
FreeCAD_ParamGetSet.SetInt(u"seTTextHeigthValue", seTTextHeigthValue) # 11 | |
self.fontGlobal_08.setPixelSize(seTTextHeigthValue) # pour compatibilite Windows Linux pour tous les textes | |
self.scrollArea.setFont(self.fontGlobal_08) | |
######GBox_001_Document | |
self.GBox_001_Document.setFont(self.fontGlobal_08) | |
self.LA_1.setFont(self.fontGlobal_08) | |
self.LE_1.setFont(self.fontGlobal_08) | |
self.LA_2.setFont(self.fontGlobal_08) | |
self.LE_2.setFont(self.fontGlobal_08) | |
self.LE_2a.setFont(self.fontGlobal_08) | |
self.LA_3.setFont(self.fontGlobal_08) | |
self.LA_4.setFont(self.fontGlobal_08) | |
self.LE_3.setFont(self.fontGlobal_08) | |
self.LE_3a.setFont(self.fontGlobal_08) | |
######GBox_002_Coordinate_Mouse | |
self.GBox_002_Coordinate_Mouse.setFont(self.fontGlobal_08) | |
self.LA_4x.setFont(self.fontGlobal_08) | |
self.LA_4y.setFont(self.fontGlobal_08) | |
self.LA_4z.setFont(self.fontGlobal_08) | |
self.LE_4x.setFont(self.fontGlobal_08) | |
self.LE_4y.setFont(self.fontGlobal_08) | |
self.LE_4z.setFont(self.fontGlobal_08) | |
self.PB_Axis_01.setFont(self.fontGlobal_08) | |
######GBox_003_Color | |
self.GBox_003_Color.setFont(self.fontGlobal_08) | |
self.LA_1_Red.setFont(self.fontGlobal_08) | |
self.LA_2_Green.setFont(self.fontGlobal_08) | |
self.LA_3_Blue.setFont(self.fontGlobal_08) | |
self.LA_4_Transparent.setFont(self.fontGlobal_08) | |
self.LE_CRed.setFont(self.fontGlobal_08) | |
self.LE_CGreen.setFont(self.fontGlobal_08) | |
self.LE_CBlue.setFont(self.fontGlobal_08) | |
self.LE_Transparent.setFont(self.fontGlobal_08) | |
self.LE_ConversionUnsigned.setFont(self.fontGlobal_08) | |
self.PB_ChangeColor.setFont(self.fontGlobal_08) | |
self.CBox_Color_FaceObject.setFont(self.fontGlobal_08) | |
self.PB_CreateFace.setFont(self.fontGlobal_08) | |
self.SBox_Transparence.setFont(self.fontGlobal_08) | |
######GBox_004_Object_Mesh | |
self.GBox_004_Object_Mesh.setFont(self.fontGlobal_08) | |
self.LA_N_Edges.setFont(self.fontGlobal_08) | |
self.LE_N_Edges.setFont(self.fontGlobal_08) | |
self.LA_N_Facets.setFont(self.fontGlobal_08) | |
self.LE_N_Facets.setFont(self.fontGlobal_08) | |
self.LA_N_Points.setFont(self.fontGlobal_08) | |
self.LE_N_Points.setFont(self.fontGlobal_08) | |
######GBox_005_Value_Unit | |
self.GBox_005_Value_Unit.setFont(self.fontGlobal_08) | |
#self.ComboB_Grandeur.setFont(self.fontGlobal_08) | |
self.LA_5.setFont(self.fontGlobal_08) | |
self.LA_5b.setFont(self.fontGlobal_08) | |
self.LE_5.setFont(self.fontGlobal_08) | |
self.LE_5b.setFont(self.fontGlobal_08) | |
self.SB_Arc_ToByArcs.setFont(self.fontGlobal_08) | |
self.PB_BSplineCreateNodes.setFont(self.fontGlobal_08) | |
self.LA_6.setFont(self.fontGlobal_08) | |
self.LE_6.setFont(self.fontGlobal_08) | |
######GBox_012_SpreadSheet | |
self.GBox_012_SpreadSheet.setFont(self.fontGlobal_08) | |
self.tableWidget.setFont(self.fontGlobal_08) | |
######GBox_006_Inclination | |
self.GBox_006_Inclination.setFont(self.fontGlobal_08) | |
self.LA_8a.setFont(self.fontGlobal_08) | |
self.PB_Ra.setFont(self.fontGlobal_08) | |
self.LA_8a_2.setFont(self.fontGlobal_08) | |
self.LE_8xy.setFont(self.fontGlobal_08) | |
self.LA_8xy.setFont(self.fontGlobal_08) | |
self.LE_8xya.setFont(self.fontGlobal_08) | |
self.LA_8yz.setFont(self.fontGlobal_08) | |
self.LE_8yz.setFont(self.fontGlobal_08) | |
self.LE_8yza.setFont(self.fontGlobal_08) | |
self.LA_8zx.setFont(self.fontGlobal_08) | |
self.LE_8zx.setFont(self.fontGlobal_08) | |
self.LE_8zxa.setFont(self.fontGlobal_08) | |
self.PB_Line_Direction.setFont(self.fontGlobal_08) | |
self.PB_Line_ValueAT.setFont(self.fontGlobal_08) | |
self.PB_Line_NormalAT.setFont(self.fontGlobal_08) | |
self.LE_9_Direction.setFont(self.fontGlobal_08) | |
self.LE_10_ValueAt.setFont(self.fontGlobal_08) | |
self.LE_10b_NormalAt.setFont(self.fontGlobal_08) | |
######GBox_007_Surface_and_Volume | |
self.GBox_007_Surface_and_Volume.setFont(self.fontGlobal_08) | |
self.LA_9.setFont(self.fontGlobal_08) | |
self.LE_9a.setFont(self.fontGlobal_08) | |
self.LA_10.setFont(self.fontGlobal_08) | |
self.LE_10a.setFont(self.fontGlobal_08) | |
self.LA_11.setFont(self.fontGlobal_08) | |
self.LE_11a.setFont(self.fontGlobal_08) | |
self.LA_Unit.setFont(self.fontGlobal_08) | |
self.comboBox_Unit.setFont(self.fontGlobal_08) | |
self.LA_Weight.setFont(self.fontGlobal_08) | |
self.LE_12a.setFont(self.fontGlobal_08) | |
self.LA_Density.setFont(self.fontGlobal_08) | |
self.DS_Density.setFont(self.fontGlobal_08) | |
self.LA_Cost.setFont(self.fontGlobal_08) | |
self.LA_Price.setFont(self.fontGlobal_08) | |
self.LE_Cost.setFont(self.fontGlobal_08) | |
self.DS_Price.setFont(self.fontGlobal_08) | |
self.PB_Del_Material.setFont(self.fontGlobal_08) | |
self.CBox_Materiel.setFont(self.fontGlobal_08) | |
self.LE_Materiel.setFont(self.fontGlobal_08) | |
######GBox_009_BoundBox | |
self.GBox_009_BoundBox.setFont(self.fontGlobal_08) | |
self.LA_007_01_Xlength.setFont(self.fontGlobal_08) | |
self.LA_007_02_Ylength.setFont(self.fontGlobal_08) | |
self.LA_007_03_Zlength.setFont(self.fontGlobal_08) | |
self.LA_007_04_Diagonallength.setFont(self.fontGlobal_08) | |
self.LE_007_BB_01_XLength.setFont(self.fontGlobal_08) | |
self.LE_007_BB_02_YLength.setFont(self.fontGlobal_08) | |
self.LE_007_BB_03_ZLength.setFont(self.fontGlobal_08) | |
self.LE_007_BB_04_Diagonal.setFont(self.fontGlobal_08) | |
self.PB_BoundBox_Tracing.setFont(self.fontGlobal_08) | |
self.PB_00_BoundBox_Volume.setFont(self.fontGlobal_08) | |
self.CB_01_BoundBox_Text.setFont(self.fontGlobal_08) | |
self.DS_BoundBoxTextHeigth.setFont(self.fontGlobal_08) | |
######GBox_010_Center_Mass | |
self.GBox_010_Center_Mass.setFont(self.fontGlobal_08) | |
self.PB_BoundBox_Tracing.setFont(self.fontGlobal_08) | |
self.LA_13x.setFont(self.fontGlobal_08) | |
self.LA_13y.setFont(self.fontGlobal_08) | |
self.LA_13z.setFont(self.fontGlobal_08) | |
self.LE_13x.setFont(self.fontGlobal_08) | |
self.LE_13y.setFont(self.fontGlobal_08) | |
self.LE_13z.setFont(self.fontGlobal_08) | |
self.PB_Axis_02.setFont(self.fontGlobal_08) | |
self.LA_14x.setFont(self.fontGlobal_08) | |
self.LA_14y.setFont(self.fontGlobal_08) | |
self.LA_14z.setFont(self.fontGlobal_08) | |
self.LE_14x.setFont(self.fontGlobal_08) | |
self.LE_14y.setFont(self.fontGlobal_08) | |
self.LE_14z.setFont(self.fontGlobal_08) | |
self.PB_Axis_03.setFont(self.fontGlobal_08) | |
######GBox_011_Inertia | |
self.GBox_011_Inertia.setFont(self.fontGlobal_08) | |
self.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 ui | |
global seTDecimalValue | |
global FreeCAD_ParamGetSet | |
seTDecimalValue = value | |
FreeCAD_ParamGetSet.SetInt(u"seTDecimalValue", seTDecimalValue) # *4 | |
ui.on_PB_01_Refrech_clicked() | |
def on_PB_Line_Direction(self): | |
global object_Label | |
global directionObj | |
global direcValueAt | |
global direcNormalAt | |
global switchInertia | |
global RotationToEuler | |
global switchCreateLineDiVatNatOnClick | |
global position0 | |
global position1 | |
global position2 | |
if (directionObj != "[]"): | |
switchInertia = 1 | |
try: | |
FreeCAD.ActiveDocument.openTransaction(u"FCInfo Direction") # memorise les actions (avec annuler restore) | |
if switchCreateLineDiVatNatOnClick == 0: | |
points=[FreeCAD.Vector(0.0,0.0,0.0),FreeCAD.Vector(directionObj)] | |
else: | |
points=[FreeCAD.Vector(position0,position1,position2),FreeCAD.Vector(directionObj[0]+position0,directionObj[1]+position1,directionObj[2]+position2)] | |
line0 = Draft.makeWire(points,closed=False,face=False,support=None) | |
App.ActiveDocument.ActiveObject.recompute() | |
line0.Label = u"Direction_(Yellow)_" + object_Label | |
line0.ViewObject.LineColor = (1.0,1.0,0.0) | |
line0.Length = 100.0 | |
if RotationToEuler != "": | |
line0.Placement.Rotation = FreeCAD.Rotation(RotationToEuler[0] ,RotationToEuler[1], RotationToEuler[2]) | |
RotationToEuler = "" | |
App.ActiveDocument.recompute() | |
except Exception: | |
None | |
switchInertia = 0 | |
def on_PB_Line_ValueAT(self): | |
global object_Label | |
global direcValueAt | |
global switchInertia | |
global RotationToEuler | |
global switchCreateLineDiVatNatOnClick | |
global position0 | |
global position1 | |
global position2 | |
if (direcValueAt != "[]"): | |
switchInertia = 1 | |
try: | |
FreeCAD.ActiveDocument.openTransaction(u"FCInfo ValueAt") # memorise les actions (avec annuler restore) | |
if switchCreateLineDiVatNatOnClick == 0: | |
points=[FreeCAD.Vector(0.0,0.0,0.0),FreeCAD.Vector(direcValueAt)] | |
else: | |
points=[FreeCAD.Vector(position0,position1,position2),FreeCAD.Vector(direcValueAt[0]+position0,direcValueAt[1]+position1,direcValueAt[2]+position2)] | |
line0 = Draft.makeWire(points,closed=False,face=False,support=None) | |
App.ActiveDocument.ActiveObject.recompute() | |
line0.Label = u"ValueAt_(Magenta)_" + object_Label | |
line0.ViewObject.LineColor = (1.0,0.0,1.0) | |
line0.Length = 100.0 | |
if RotationToEuler != "": | |
line0.Placement.Rotation = FreeCAD.Rotation(RotationToEuler[0] ,RotationToEuler[1], RotationToEuler[2]) | |
RotationToEuler = "" | |
App.activeDocument().recompute() | |
except Exception: | |
None | |
switchInertia = 0 | |
def on_PB_Line_NormalAT(self): | |
global object_Label | |
global direcNormalAt | |
global switchInertia | |
global RotationToEuler | |
global switchCreateLineDiVatNatOnClick | |
global position0 | |
global position1 | |
global position2 | |
if (direcNormalAt != "[]"): | |
switchInertia = 1 | |
try: | |
FreeCAD.ActiveDocument.openTransaction(u"FCInfo NormalAt") # memorise les actions (avec annuler restore) | |
if switchCreateLineDiVatNatOnClick == 0: | |
points=[FreeCAD.Vector(0.0,0.0,0.0),FreeCAD.Vector(direcNormalAt)] | |
else: | |
points=[FreeCAD.Vector(position0,position1,position2),FreeCAD.Vector(direcNormalAt[0]+position0,direcNormalAt[1]+position1,direcNormalAt[2]+position2)] | |
line0 = Draft.makeWire(points,closed=False,face=False,support=None) | |
App.ActiveDocument.ActiveObject.recompute() | |
line0.Label = u"NormalAt_(Cyan)_" + object_Label | |
line0.ViewObject.LineColor = (0.0,1.0,1.0) | |
line0.Length = 100.0 | |
if RotationToEuler != "": | |
line0.Placement.Rotation = FreeCAD.Rotation(RotationToEuler[0] ,RotationToEuler[1], RotationToEuler[2]) | |
RotationToEuler = "" | |
App.ActiveDocument.recompute() | |
except Exception: | |
None | |
switchInertia = 0 | |
def paletteBase(self): | |
qpBase = "QLineEdit {background-color: QPalette.Base}" | |
qpIcon = QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_05)) # icone dans une variable | |
self.LE_4x.setStyleSheet(qpBase) | |
self.LE_4y.setStyleSheet(qpBase) | |
self.LE_4z.setStyleSheet(qpBase) | |
self.PB_Axis_01.setIcon(qpIcon) # icon dans une variable | |
self.LE_13x.setStyleSheet(qpBase) | |
self.LE_13y.setStyleSheet(qpBase) | |
self.LE_13z.setStyleSheet(qpBase) | |
self.PB_Axis_02.setIcon(qpIcon) # icon dans une variable | |
self.LE_14x.setStyleSheet(qpBase) | |
self.LE_14y.setStyleSheet(qpBase) | |
self.LE_14z.setStyleSheet(qpBase) | |
self.PB_Axis_03.setIcon(qpIcon) # icon dans une variable | |
self.LE_16_1x.setStyleSheet(qpBase) | |
self.LE_16_1y.setStyleSheet(qpBase) | |
self.LE_16_1z.setStyleSheet(qpBase) | |
self.PB_Axis_04_16_1.setIcon(qpIcon) # icone dans une variable | |
self.LE_16_2x.setStyleSheet(qpBase) | |
self.LE_16_2y.setStyleSheet(qpBase) | |
self.LE_16_2z.setStyleSheet(qpBase) | |
self.PB_Axis_05_16_2.setIcon(qpIcon) # icone dans une variable | |
self.LE_16_3x.setStyleSheet(qpBase) | |
self.LE_16_3y.setStyleSheet(qpBase) | |
self.LE_16_3z.setStyleSheet(qpBase) | |
self.PB_Axis_06_16_3.setIcon(qpIcon) # icone dans une variable | |
self.PB_Axis_07_16_4.setIcon(qpIcon) # icone dans une variable | |
self.LE_17_1x.setStyleSheet(qpBase) | |
self.LE_17_1y.setStyleSheet(qpBase) | |
self.LE_17_1z.setStyleSheet(qpBase) | |
self.PB_Axis_08_17_1.setIcon(qpIcon) # icone dans une variable | |
self.LE_17_2x.setStyleSheet(qpBase) | |
self.LE_17_2y.setStyleSheet(qpBase) | |
self.LE_17_2z.setStyleSheet(qpBase) | |
self.PB_Axis_09_17_2.setIcon(qpIcon) # icone dans une variable | |
self.LE_17_3x.setStyleSheet(qpBase) | |
self.LE_17_3y.setStyleSheet(qpBase) | |
self.LE_17_3z.setStyleSheet(qpBase) | |
self.PB_Axis_10_17_3.setIcon(qpIcon) # icone dans une variable | |
self.PB_Axis_11_17_4.setIcon(qpIcon) # icone dans une variable | |
self.PB_05_Help_Forum.setStyleSheet(qpBase) | |
self.PB_06_Help_Wiki.setStyleSheet(qpBase) | |
def on_GBox_012_SpreadSheet(self): | |
global ui | |
if self.GBox_012_SpreadSheet.isChecked(): | |
self.GBox_012_SpreadSheet.setStyleSheet(u"QGroupBox {color : QPalette.Base;}") # origin system | |
ui.on_PB_01_Refrech_clicked() | |
else: | |
self.GBox_012_SpreadSheet.setStyleSheet(u"QGroupBox {color : #ff0000;}") | |
self.GBox_012_SpreadSheet.setTitle(u"Details of the form") | |
self.GBox_012_SpreadSheet.setToolTip(u"The module is Disabled by default for rapidity") | |
self.tableWidget.clear() | |
def on_PB_Axis_Mouse(self): | |
global position0 | |
global position1 | |
global position2 | |
global ui | |
ui.paletteBase() | |
self.LE_4x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red | |
self.LE_4y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}") | |
self.LE_4z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}") | |
self.PB_Axis_01.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(position0, position1, position2, "Mouse")))) | |
def on_PB_ChangeColor(self): | |
global seTPositionFlyRightLeft | |
global transparenceFace | |
global ui | |
if len(FreeCADGui.Selection.getSelection()) != 0: | |
if seTPositionFlyRightLeft == 1: self.window.hide() # 1=MainWindow separate | |
couleur = PySide2.QtWidgets.QColorDialog.getColor() | |
if couleur.isValid(): | |
FreeCAD.ActiveDocument.openTransaction(u"FCInfo Color") # memorise les actions (avec annuler restore) | |
r = int(str(couleur.name()[1:3]),16) | |
v = int(str(couleur.name()[3:5]),16) | |
b = int(str(couleur.name()[5:7]),16) | |
t = transparenceFace # transparence de 0 a 100 | |
a = FreeCADGui.Selection.getSelectionEx() # selection sous objet | |
aa = FreeCADGui.Selection.getSelection() # selection objet | |
try: | |
if str(Gui.Selection.getSelectionEx()[0].SubObjects[0])[1:5] == "Face": | |
if self.CBox_Color_FaceObject.isChecked(): # checked = face if not = object | |
try: | |
cols = colors = [] | |
cols = FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.DiffuseColor | |
if len(cols) == 1: | |
for i in aa[0].Shape.Faces: | |
colors += [(cols[0])] | |
else: | |
colors = cols | |
for i in range(len(aa)): | |
fce = int(a[0].SubElementNames[i][4:])-1 | |
colors[fce] = (float(r)/255.0, float(v)/255.0, float(b)/255.0, float(t)/100.0) | |
aa[i].ViewObject.DiffuseColor = colors | |
except Exception: | |
None | |
else: | |
try: | |
aa = FreeCADGui.Selection.getSelection() # selection objet | |
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.ShapeColor = (float(r)/255.0, float(v)/255.0, float(b)/255.0) | |
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.Transparency = transparenceFace | |
except Exception: | |
None | |
elif str(Gui.Selection.getSelectionEx()[0].SubObjects[0])[1:5] == "Edge": | |
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.LineColor = (float(r)/255.0, float(v)/255.0, float(b)/255.0) | |
elif str(Gui.Selection.getSelectionEx()[0].SubObjects[0])[1:7] == "Vertex": | |
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.PointColor = (float(r)/255.0, float(v)/255.0, float(b)/255.0) | |
except Exception: | |
aa = FreeCADGui.Selection.getSelection() # selection objet | |
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.ShapeColor = (float(r)/255.0, float(v)/255.0, float(b)/255.0) | |
try: | |
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.LineColor = (float(r)/255.0, float(v)/255.0, float(b)/255.0) | |
except Exception: None | |
try: | |
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.PointColor = (float(r)/255.0, float(v)/255.0, float(b)/255.0) | |
except Exception: None | |
FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.Transparency = transparenceFace | |
#### | |
transparenceFace = FreeCAD.ActiveDocument.getObject(aa[0].Name).ViewObject.Transparency | |
# unsignedEncodeColor decimal pour FC | |
unsignedEncodeColor = '"' + str(unsignedEncode((r), (v), (b), 0.0)) + '"' | |
diffuseColorHexa = '"' + "#" + decimalTohexa(int(r/255.0)) + decimalTohexa(int(v/255.0)) + decimalTohexa(int(b/255.0)) + '"' | |
diffuseColorHexaPy = '"' + "0x" + decimalTohexa(int(r/255.0)) + decimalTohexa(int(v/255.0)) + decimalTohexa(int(b/255.0)) + '"' | |
diffuseColorRVB = '"' + str(int(r/255.0)) + "," + str(int(v/255.0)) + "," + str(int(b/255.0)) + '"' | |
# | |
ui.on_PB_01_Refrech_clicked() | |
#### | |
if seTPositionFlyRightLeft == 1: self.window.show() # 1=MainWindow separate | |
def SIGNAL_CBox_Color_FaceObject(self): | |
if self.CBox_Color_FaceObject.isChecked(): # checked = face if not = object | |
self.PB_ChangeColor.setText(u"Color.S.Obj") | |
self.PB_CreateFace.setText(u"Dupl.S.Obj") | |
self.CBox_Color_FaceObject.setText(u"Object") | |
else: | |
self.PB_ChangeColor.setText(u"Color.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 | |
global ui | |
ui.paletteBase() | |
self.LE_13x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red | |
self.LE_13y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}") | |
self.LE_13z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}") | |
self.PB_Axis_02.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(boundBoxCenterX, boundBoxCenterY, boundBoxCenterZ, "BBCenter")))) # icone dans une variable | |
def on_PB_Axis_Center_Mass(self): | |
global CenterOfMassX | |
global CenterOfMassY | |
global CenterOfMassZ | |
global ui | |
ui.paletteBase() | |
self.LE_14x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red | |
self.LE_14y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}") | |
self.LE_14z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}") | |
self.PB_Axis_03.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(CenterOfMassX, CenterOfMassY, CenterOfMassZ, "CenterOfMass")))) # icone dans une variable | |
def on_PB_Axis_04_16_1(self): | |
global MatrixX1_16 | |
global MatrixY1_16 | |
global MatrixZ1_16 | |
global ui | |
ui.paletteBase() | |
self.LE_16_1x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red | |
self.LE_16_1y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}") | |
self.LE_16_1z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}") | |
self.PB_Axis_04_16_1.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX1_16, MatrixY1_16, MatrixZ1_16, "Matrix1")))) # icone dans une variable | |
def on_PB_Axis_05_16_2(self): | |
global MatrixX2_16 | |
global MatrixY2_16 | |
global MatrixZ2_16 | |
global ui | |
ui.paletteBase() | |
self.LE_16_2x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red | |
self.LE_16_2y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}") | |
self.LE_16_2z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}") | |
self.PB_Axis_05_16_2.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX2_16, MatrixY2_16, MatrixZ2_16, "Matrix2")))) # icone dans une variable | |
def on_PB_Axis_06_16_3(self): | |
global MatrixX3_16 | |
global MatrixY3_16 | |
global MatrixZ3_16 | |
global ui | |
ui.paletteBase() | |
self.LE_16_3x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red | |
self.LE_16_3y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}") | |
self.LE_16_3z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}") | |
self.PB_Axis_06_16_3.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX3_16, MatrixY3_16, MatrixZ3_16, "Matrix3")))) # icone dans une variable | |
def on_PB_Axis_07_16_4(self): | |
global MatrixX1_16 | |
global MatrixY2_16 | |
global MatrixZ3_16 | |
global ui | |
ui.paletteBase() | |
self.LE_16_1x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red | |
self.LE_16_2y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}") | |
self.LE_16_3z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}") | |
self.PB_Axis_07_16_4.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX1_16, MatrixY2_16, MatrixZ3_16, "Matrix123")))) # icone dans une variable | |
def on_PB_Axis_08_17_1(self): | |
global MatrixX1_17 | |
global MatrixY1_17 | |
global MatrixZ1_17 | |
global ui | |
ui.paletteBase() | |
self.LE_17_1x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red | |
self.LE_17_1y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}") | |
self.LE_17_1z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}") | |
self.PB_Axis_08_17_1.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX1_17, MatrixY1_17, MatrixZ1_17, "MatrixW1")))) # icone dans une variable | |
def on_PB_Axis_09_17_2(self): | |
global MatrixX2_17 | |
global MatrixY2_17 | |
global MatrixZ2_17 | |
global ui | |
ui.paletteBase() | |
self.LE_17_2x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red | |
self.LE_17_2y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}") | |
self.LE_17_2z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}") | |
self.PB_Axis_09_17_2.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX2_17, MatrixY2_17, MatrixZ2_17, "MatrixW2")))) # icone dans une variable | |
def on_PB_Axis_10_17_3(self): | |
global MatrixX3_17 | |
global MatrixY3_17 | |
global MatrixZ3_17 | |
global ui | |
ui.paletteBase() | |
self.LE_17_3x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red | |
self.LE_17_3y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}") | |
self.LE_17_3z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}") | |
self.PB_Axis_10_17_3.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX3_17, MatrixY3_17, MatrixZ3_17, "MatrixW3")))) # icone dans une variable | |
def on_PB_Axis_11_17_4(self): | |
global MatrixX1_17 | |
global MatrixY2_17 | |
global MatrixZ3_17 | |
global ui | |
ui.paletteBase() | |
self.LE_17_1x.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: red}") #red | |
self.LE_17_2y.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: green}") | |
self.LE_17_3z.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: blue}") | |
self.PB_Axis_11_17_4.setIcon(QtGui.QIcon(QtGui.QPixmap(axisPlane(MatrixX1_17, MatrixY2_17, MatrixZ3_17, "MatrixW123")))) # icone dans une variable | |
def on_PB_BoundBox_Tracing(self): | |
bounBoxTracing() | |
def On_PB_00_BoundBox_Volume(self): | |
global switchBoundBoxCreateVolume | |
switchBoundBoxCreateVolume = 1 | |
bounBoxTracing() | |
def On_CB_01_BoundBox_Text(self): | |
global switchBoundBoxCreateText | |
global FreeCAD_ParamGetSet | |
if self.CB_01_BoundBox_Text.isChecked(): | |
switchBoundBoxCreateText = 1 | |
self.DS_BoundBoxTextHeigth.setEnabled(True) | |
FreeCAD_ParamGetSet.SetBool(u"switchBoundBoxCreateText", True) # True or False | |
else: | |
switchBoundBoxCreateText = 0 | |
self.DS_BoundBoxTextHeigth.setEnabled(False) | |
FreeCAD_ParamGetSet.SetBool(u"switchBoundBoxCreateText", False) # True or False | |
def on_DS_BoundBoxTextHeigth_valueChanged(self, value): | |
global seTBoundBoxTextHeigth | |
global FreeCAD_ParamGetSet | |
seTBoundBoxTextHeigth = value | |
FreeCAD_ParamGetSet.SetFloat(u"seTBoundBoxTextHeigth", seTBoundBoxTextHeigth) # 3.0 | |
def SIGNAL_comboPoids_Changed(self,text): | |
global volume_ | |
global seTDensiteValue | |
global poids | |
global uniteM | |
global uniteS | |
global uniteSs | |
global uniteV | |
global uniteP | |
global unitePs | |
global 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) | |
ui.on_SB_Arc_ToByArcs_valueChanged(1) | |
self.SB_Arc_ToByArcs.setToolTip(u"Bspline detected " + "\n" | |
u"Number of element = " + str(BsplineNumberElement) + "\n" + | |
u"Calcul with distance between points " + str(Around((BsplineCutLength) * uniteM)) + " " + uniteMs + "\n\n" + | |
u"toBiArcs(" + BSplinetoByArcValeurS + ")" + "\n" | |
u"This value can be modified in the preferences 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"Radius 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 Radius on point : " + self.SB_Arc_ToByArcs.text()) | |
self.LA_6.setText(u"BSpline nodes") | |
self.LE_6.setText(str(BsplineNombreDeNoeuds)) | |
self.LE_6.setToolTip(u"Number of nodes of the BSpline.") | |
else: | |
self.SB_Arc_ToByArcs.setVisible(False) | |
self.PB_BSplineCreateNodes.setVisible(False) | |
self.LA_5b.setText(u"Radius") | |
#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"Radius detected.") | |
if numberEdges == 1: | |
self.LA_6.setText(u"Circonference (" + str(numberEdges) + ")") | |
else: | |
self.LA_6.setText(u"Perimetre of shape (" + str(numberEdges) + ")") | |
self.LE_6.setText(str(Around(float(perimetre) * float(uniteM))) + " " +uniteMs) | |
else: | |
self.LA_6.setText(u"Perimetre of 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"Perimeter total of the form." + "\n" | |
u"Display the total result of the edges") | |
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"] 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 = "" | |
if self.GBox_012_SpreadSheet.isChecked(): | |
co = 0 | |
li = 0 | |
for li in range(RowCount): # Zero | |
for co in range(10): | |
newitem = QtWidgets.QTableWidgetItem(u"") | |
self.tableWidget.setItem( li,co, newitem) | |
co = 0 | |
li = 0 | |
aa = 0 | |
for j in enumerate(Edges): # Edges | |
newitem = QtWidgets.QTableWidgetItem(str(j[1])) | |
self.tableWidget.setItem( li,0, newitem) | |
newitem = QtWidgets.QTableWidgetItem(str(float(EdgesLong[li]) * float(uniteM)) + " " + uniteMs) | |
self.tableWidget.setItem( li,1, newitem) | |
co+=1 | |
try: | |
for a in range(aa,aa+6): # Vertexes | |
co += 1 | |
#newitem = QtWidgets.QTableWidgetItem(str(Vertx[a])) | |
chaine = str(Vertx[a]).split(u":") | |
newitem = QtWidgets.QTableWidgetItem(chaine[0]+":" + str(float(chaine[1]) * float(uniteM)) + " " + uniteMs) | |
self.tableWidget.setItem( li,co, newitem) | |
except Exception: | |
None | |
aa += 6 | |
co = 0 | |
li+= 1 | |
li += 1 | |
co = 0 | |
cco = 0 | |
co2 = 0 | |
for j in enumerate(Faces): | |
newitem = QtWidgets.QTableWidgetItem(str(j[1])) | |
self.tableWidget.setItem( li,0, newitem) | |
newitem = QtWidgets.QTableWidgetItem(str(float(FacesSurf[co]) * float(uniteS)) + " " + uniteSs) | |
self.tableWidget.setItem( li,1, newitem) | |
li+= 1 | |
for jj in range(cco,len(FacesCoor)):# Faces coordinates | |
cco+=1 | |
if FacesCoor[jj] == "T": | |
break | |
else: | |
#newitem = QtWidgets.QTableWidgetItem(FacesCoor[jj]) | |
chaine = str(FacesCoor[jj]).split(":") | |
newitem = QtWidgets.QTableWidgetItem(chaine[0]+":" + str(float(chaine[1]) * float(uniteM)) + " " + uniteMs) | |
self.tableWidget.setItem( li,co2, newitem) | |
co2 += 1 | |
if co2 == 3: | |
li += 1 | |
co2 = 0 | |
co += 1 | |
li += 1 | |
def on_SB_Arc_ToByArcs_valueChanged(self, val): | |
global uniteM | |
global uniteMs | |
global BsplineArcsRadius | |
global BsplineRayonApproximatif | |
global BsplineNumberElement | |
if (val >=1) and (val <= BsplineNumberElement): | |
self.SB_Arc_ToByArcs.setSuffix(u" / " + str(BsplineNumberElement)) | |
self.SB_Arc_ToByArcs.setPrefix(u"arc ") | |
try: | |
BsplineRayonApproximatif = str(Around(BsplineArcsRadius[val - 1] * float(uniteM))) + " " + uniteMs | |
except Exception: | |
BsplineRayonApproximatif = str(Around(0 * float(uniteM))) + " " + uniteMs | |
self.LE_5b.setText(BsplineRayonApproximatif) | |
else: | |
self.SB_Arc_ToByArcs.setValue(0) | |
def on_PB_BSplineCreateNodes(self): | |
global subElemName | |
global BsplinePointsCoor | |
global switchInertia | |
global switchBSplineCreateCircleConstructorAxis | |
global switchBSplineCreateCircleConstructor | |
FreeCAD.ActiveDocument.openTransaction(u"FCInfo Points BS") # memorise les actions (avec annuler restore) | |
switchInertia = 1 # for create points without refresh | |
self.PB_BSplineCreateNodes.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Work))) # icone dans une variable | |
try: # create point on node | |
conteneurBSpline = App.activeDocument().addObject(u"App::DocumentObjectGroup", "BSpline_Points(" + str(len(BsplinePointsCoor)) + ")") | |
for i in BsplinePointsCoor: | |
point = Draft.makePoint( i[0], i[1], i[2]) | |
conteneurBSpline.addObject(point) | |
point.ViewObject.PointColor = (1.0,0.0,0.0) | |
point.Label = u"FCPoint_BSPline_" + subElemName | |
FreeCADGui.updateGui() # updateGui | |
App.ActiveDocument.recompute() | |
except Exception: | |
None | |
FreeCAD.ActiveDocument.openTransaction(u"FCInfo Axis BS") # memorise les actions (avec annuler restore) | |
if (switchBSplineCreateCircleConstructorAxis == 1) and (len(BsplineArcsLocation) != 0): | |
try: # create point axis toByArcs() | |
conteneurBSplineP = App.activeDocument().addObject(u"App::DocumentObjectGroup", "BSpline_Center(" + str(len(BsplineArcsLocation)) + ")") | |
for i in BsplineArcsLocation: | |
point = Draft.makePoint(i.Location.x, i.Location.y, i.Location.z) | |
point.ViewObject.PointColor = (0.0,1.0,0.0) | |
point.Label = u"FCPoint_BSPline_toByArcs_" + subElemName | |
conteneurBSplineP.addObject(point) | |
App.ActiveDocument.recompute() | |
except Exception: | |
None | |
FreeCAD.ActiveDocument.openTransaction(u"FCInfo Circles BS") # memorise les actions (avec annuler restore) | |
if (switchBSplineCreateCircleConstructor == 1) and (len(BsplineArcsLocation) != 0): | |
try: # create circle toByArcs() | |
conteneurBSplineC = App.activeDocument().addObject(u"App::DocumentObjectGroup", "BSpline_Circles(" + str(len(BsplineArcsLocation)) + ")") | |
pl=FreeCAD.Placement() | |
for i in BsplineArcsLocation: | |
## | |
pl.Base = FreeCAD.Vector(i.Location.x, i.Location.y, i.Location.z) | |
pl.Rotation.Q = i.Circle.Rotation.Q | |
circle = Draft.makeCircle(radius = i.Radius, placement = pl, face = False, support = None) | |
circle.ViewObject.LineColor = (0.0,0.0,1.0) | |
circle.Label = u"FCCircle_BSPline_toByArcs" + subElemName | |
conteneurBSplineC.addObject(circle) | |
App.ActiveDocument.recompute() | |
except Exception: | |
None | |
self.PB_BSplineCreateNodes.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Point))) # icone dans une variable | |
switchInertia = 0 | |
def SIGNAL_CBox_Materiel_Changed(self,text): | |
global seTDensiteValue | |
global seTMaterialCurrentIndex | |
global seTMaterialPrice | |
global materialAssociated | |
global FreeCAD_ParamGetSet | |
self.PB_Del_Material.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_DeleteLineMaterial))) # icone dans une variable | |
self.LE_Materiel.setStyleSheet(u"QLineEdit {background-color: QPalette.Base}") # origin system | |
if text != "": | |
self.LE_Materiel.setText(materialAssociated[self.CBox_Materiel.currentIndex()]) # affiche la chaine pour completion ou info | |
self.PB_Del_Material.setText(u"Delete (" + str(self.CBox_Materiel.currentIndex() + 1) + "/" + str(len(materialAssociated)) + ")") | |
chaineMat = text.rstrip().split(",") | |
seTDensiteValue = float(chaineMat[1]) | |
FreeCAD_ParamGetSet.SetFloat(u"seTDensiteValue", seTDensiteValue) #*1.0 | |
try: | |
seTMaterialPrice = float(chaineMat[2]) | |
except Exception: | |
seTMaterialPrice = 0.0 | |
#self.DS_Density.setProperty(u"value", seTDensiteValue) | |
self.DS_Density.setValue(seTDensiteValue) | |
self.DS_Price.setValue(seTMaterialPrice) | |
seTMaterialCurrentIndex = self.CBox_Materiel.currentIndex() | |
if self.CBox_Materiel.currentIndex() == -1: | |
self.PB_Del_Material.setText(u"Delete (0\0)") | |
self.PB_Del_Material.setIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_Beer))) # icone dans une variable | |
FreeCAD_ParamGetSet.SetInt(u"seTMaterialCurrentIndex", seTMaterialCurrentIndex) #*0 | |
def on_PB_Del_Material_clicked(self): # efface le materiel en cours | |
global materialAssociated | |
index = self.CBox_Materiel.currentIndex() | |
if self.CBox_Materiel.currentIndex() != -1: | |
try: | |
materialAssociated.remove(materialAssociated[index]) | |
self.CBox_Materiel.clear() | |
for ligneMat in materialAssociated: | |
self.CBox_Materiel.addItem(_fromUtf8(ligneMat)) | |
self.CBox_Materiel.setCurrentIndex(0) | |
self.LE_Materiel.setText(materialAssociated[0]) | |
ui.PB_Save_Material.setText(u"Save (*)") | |
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"Save") | |
App_Console_PrintMessage(u"Create file : " + seTMaterialFileName + "\n") | |
FreeCAD_ParamGetSet.SetString(u"seTMaterialFileName", seTMaterialFileName) #*"FCInfo_material.txt" | |
FreeCAD_ParamGetSet.SetString(u"seTMaterialSavePathName", seTMaterialSavePathName) #*"C:\...\Macro\ #FCInfo_material.txt" | |
except Exception: | |
App_Console_PrintError(u"Not file " + seTMaterialFileName + " saved" + "\n") | |
#### save the material end #### | |
def on_LE_Materiel_Pressed(self): # LEdit Materiel , tableau des materiaux : [ materiel, poids, prix, info ] | |
global materialAssociated | |
global ui | |
newMateriel = self.LE_Materiel.text() # extract the string in the LE_Materiel | |
self.LE_Materiel.setStyleSheet(u"QLineEdit {background-color: QPalette.Base}") # origin system | |
if (len(newMateriel.split(",")) >= 2): | |
try: | |
if (newMateriel.split(",")[1].isdecimal()) or ((float(newMateriel.split(",")[1])!= 0.0)): # test si alphaNumerique | |
##nomMat = newMateriel.split(",")[0].capitalize() # Metal copper (cu),8.96,10.0 | |
##nomMat = newMateriel.split(",")[0].title() # Metal Copper (Cu),8.96,10.0 | |
##nomMat = newMateriel.split(",")[0].upper() # METAL COPPER (CU),8.96,10.0 | |
nomMat = newMateriel.split(",")[0][0].upper() + newMateriel.split(",")[0][1:] # Metal Copper (Cu),8.96,10.0 | |
try: | |
poidsMat = str(float(newMateriel.split(",")[1])) # teste si float | |
except Exception: | |
poidsMat = "0.0" | |
try: | |
coutMat = str(float(newMateriel.split(",")[2])) # teste si float (facultatif) | |
except Exception: | |
coutMat = "0.0" | |
try: | |
infoMat = newMateriel.split(",")[3] # info (facultatif) | |
except Exception: | |
infoMat = " !" | |
newMateriel = nomMat + "," + poidsMat + "," + coutMat + "," + infoMat | |
self.LE_Materiel.setStyleSheet(u"QLineEdit {color : QPalette.Base}") # origin system | |
index = self.CBox_Materiel.currentIndex() | |
if index == -1: | |
index = 0 | |
try: | |
if nomMat.upper() == materialAssociated[index].split(",")[0].upper(): # remplace (efface)si c'est le meme nom | |
materialAssociated.remove(materialAssociated[index]) | |
except Exception: | |
None | |
#materialAssociated.append(newMateriel.capitalize()) # ajout la nouvelle entree | |
materialAssociated.append(newMateriel) # ajout la nouvelle entree | |
materialAssociated.sort() | |
self.CBox_Materiel.clear() | |
comptIndex = 0 | |
for ligneMat in materialAssociated: | |
self.CBox_Materiel.addItem(_fromUtf8(ligneMat)) | |
#if ligneMat.rstrip().split(",")[0] == newMateriel.capitalize().split(",")[0]: | |
if ligneMat.rstrip().split(",")[0] == newMateriel.split(",")[0][0].upper() + newMateriel.split(",")[0][1:]: | |
index = comptIndex | |
comptIndex += 1 | |
self.CBox_Materiel.setCurrentIndex(index) | |
self.LE_Materiel.clear() | |
ui.PB_Save_Material.setText(u"Save (*)") | |
else: | |
self.LE_Materiel.setStyleSheet(u"QLineEdit {background-color: #efef29}") | |
except Exception: | |
self.LE_Materiel.setStyleSheet(u"QLineEdit {background-color: #ef2929}") | |
else: | |
self.LE_Materiel.setStyleSheet(u"QLineEdit {background-color: #ef2929}") | |
def on_DS_Density_valueChanged(self,densiteSB): # SpinBox # DS_Density_1 poids | |
global ui | |
global volume_ | |
global 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 ui | |
global sel | |
global document_ | |
global object_Label | |
global object_Name | |
global typeObject | |
global object_Type | |
global subElemName | |
global position0 | |
global position1 | |
global position2 | |
global diffuseColorRF | |
global diffuseColorVF | |
global diffuseColorBF | |
global diffuseColorTF | |
global unsignedEncodeColor | |
global longueurObjet | |
global rayonObjet | |
global perimetre | |
global typeLongueur | |
global numberEdges | |
global nombreArretesMesh | |
global nombreFacesMesh | |
global nombrePointsMesh | |
global Plan_xy | |
global Plan_xy_V | |
global Plan_yz | |
global Plan_yz_V | |
global Plan_zx | |
global Plan_zx_V | |
global surface | |
global surfaceFace | |
global volume_ | |
global seTDensiteValue | |
global poids | |
global uniteM | |
global uniteMs | |
global uniteS | |
global uniteSs | |
global uniteV | |
global uniteVs | |
global uniteP | |
global unitePs | |
global uniteAs | |
global boundBoxCenterX | |
global boundBoxCenterY | |
global boundBoxCenterZ | |
global CenterOfMassX | |
global CenterOfMassY | |
global CenterOfMassZ | |
global 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"Select an object" + "\n") | |
errorDialog(u"Select an object") | |
else: | |
if self.GBox_012_SpreadSheet.isChecked(): | |
affect(1) | |
else: | |
affect(0) | |
self.GBox_012_SpreadSheet.setTitle(u"Details of the form") | |
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"Red color at clicked point (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"Green color at the clicked point (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"Blue color at the clicked point (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"Transparency at the clicked point") | |
self.LE_ConversionUnsigned.setText(str(unsignedEncodeColor)) | |
self.LE_ConversionUnsigned.setStyleSheet(u"QLineEdit {border-width: 2px; border-style: solid; border-color: rgb("+str(int(diffuseColorRF*255.0))+","+str(int(diffuseColorVF*255.0))+","+str(int(diffuseColorBF*255.0))+")}") # white | |
switchCreateLineDiVatNatOnClick = FreeCAD_ParamGetSet.GetBool(u"switchCreateLineDiVatNatOnClick") | |
if switchCreateLineDiVatNatOnClick == 0: | |
self.PB_Line_Direction.setText(u"Direction") | |
self.PB_Line_ValueAT.setText(u"ValueAt(0)") | |
self.PB_Line_NormalAT.setText(typeNormalAt) | |
else: | |
self.PB_Line_Direction.setText(u"*Direction") | |
self.PB_Line_ValueAT.setText(u"*ValueAt(0)") | |
self.PB_Line_NormalAT.setText(typeNormalAt) | |
self.LE_9_Direction.setText(str(directionObj)) | |
self.LE_10_ValueAt.setText(str(direcValueAt)) | |
self.LE_10b_NormalAt.setText(str(direcNormalAt)) | |
self.PB_Line_NormalAT.setText(typeNormalAt) | |
self.SBox_Transparence.setValue(transparenceFace) | |
try: | |
self.LE_007_BB_01_XLength.setText(str(Around(boundBoxLX * uniteM)) + " " + uniteMs) | |
self.LE_007_BB_02_YLength.setText(str(Around(boundBoxLY * uniteM)) + " " + uniteMs) | |
self.LE_007_BB_03_ZLength.setText(str(Around(boundBoxLZ * uniteM)) + " " + uniteMs) | |
self.LE_007_BB_04_Diagonal.setText(str(Around(boundBoxDiag * uniteM)) + " " + uniteMs) | |
boundBox_S = "[X: "+str(Around(boundBoxLX * uniteM)) + " " + uniteMs+"] x [Y: "+str(Around(boundBoxLY * uniteM)) + " " + uniteMs+"] x [Z: "+str(Around(boundBoxLZ * uniteM)) + " " + uniteMs+"] Diagonal: " + str(Around(boundBoxDiag * uniteM)) + " " + uniteMs | |
except Exception: | |
self.LE_007_BB_01_XLength.setText(u"") | |
self.LE_007_BB_02_YLength.setText(u"") | |
self.LE_007_BB_03_ZLength.setText(u"") | |
self.LE_007_BB_04_Diagonal.setText(u"") | |
boundBox_S = u"" | |
self.LA_5.setText(typeLongueur) | |
try: | |
self.LE_5.setText(str(Around(float(longueurObjet) * float(uniteM)))+ " " +uniteMs) | |
except Exception: | |
self.LE_5.setText(u"") | |
# Circle Bspline | |
if (rayonObjet != 0.0) or (str(BsplineDetect) == "<BSplineCurve object>"): | |
self.LE_5b.setVisible(True) | |
self.LA_5b.setVisible(True) | |
if str(BsplineDetect) == "<BSplineCurve object>": | |
# BsplineArcsRadius = [] | |
ui.on_SB_Arc_ToByArcs_valueChanged(1) | |
self.SB_Arc_ToByArcs.setVisible(True) | |
self.SB_Arc_ToByArcs.setToolTip(u"Bspline detected " + "\n" | |
u"Number of element = " + str(BsplineNumberElement) + "\n" + | |
u"Calcul with difference between points " + str(Around(BsplineCutLength * uniteM)) + " " + uniteMs + "\n\n" + | |
u"toBiArcs(" + BSplinetoByArcValeurS + ")" + "\n" | |
u"This value can be changed in the variable preferences : 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"Radius Appr.") | |
self.LE_5b.setText(BsplineRayonApproximatif) | |
self.LE_5b.setToolTip(u"BSpline Radius on point : ")# + self.SB_Arc_ToByArcs.text() | |
self.LA_6.setText(u"BSpline Nodes") | |
self.LE_6.setText(str(BsplineNombreDeNoeuds)) | |
self.LE_6.setToolTip(u"Number of nodes of the BSpline.") | |
else: | |
self.SB_Arc_ToByArcs.setVisible(False) | |
self.PB_BSplineCreateNodes.setVisible(False) | |
self.LA_5b.setText(u"Radius") | |
#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"Radius detected.") | |
if numberEdges == 1: | |
self.LA_6.setText(u"Circumference (" + str(numberEdges) + ")") | |
else: | |
self.LA_6.setText(u"Perimeter of shape (" + str(numberEdges) + ")") | |
self.LE_6.setText(str(Around(float(perimetre) * float(uniteM))) + " " +uniteMs) | |
else: | |
self.LA_6.setText(u"Perimeter of 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"Perimeter total of the form." + "\n" | |
u"Display the total edges of theform") | |
if self.GBox_012_SpreadSheet.isChecked(): | |
self.tableWidget.clear() # Zero | |
co = 0 | |
li = 1 | |
aa = 0 | |
#### detail of Cercle BSpline begin | |
if (str(BsplineDetect) == "<BSplineCurve object>"): | |
newitem = QtWidgets.QTableWidgetItem(u"Number of nodes") | |
self.tableWidget.setItem( li,0, newitem) | |
newitem = QtWidgets.QTableWidgetItem(str(len(BsplinePointsCoor))) | |
self.tableWidget.setItem( li,1, newitem) | |
li += 1 | |
for i in enumerate(BsplinePointsCoor): # Edges | |
newitem = QtWidgets.QTableWidgetItem(u"Node" + str(i[0]+1)) | |
self.tableWidget.setItem( li,0, newitem) | |
for a in range(3): # Vertexes | |
co += 1 | |
chaine = str(Around(BsplinePointsCoor[i[0]][a])) | |
newitem = QtWidgets.QTableWidgetItem(chaine) | |
self.tableWidget.setItem( li,co, newitem) | |
aa += 6 | |
co = 0 | |
li += 1 | |
#### detail of Cercle BSpline end | |
if RowCountTest > RowCount: | |
self.GBox_012_SpreadSheet.setTitle(u"Details ("+ str(compt_E) +") ("+ str(compt_F)+") ("+ str(compt_VF)+") (!+ "+str(RowCount)+") "+str(RowCountTest)) | |
else: | |
self.GBox_012_SpreadSheet.setTitle(u"Vertexes and details ("+ str(compt_E) +") ("+ str(compt_F)+") ("+ str(compt_VF)+")")#str(RowCount) | |
co = 0 | |
li = 0 | |
aa = 0 | |
for j in enumerate(Edges): # Edges | |
newitem = QtWidgets.QTableWidgetItem(str(j[1])) | |
self.tableWidget.setItem( li,0, newitem) | |
newitem = QtWidgets.QTableWidgetItem(str(float(EdgesLong[li]) * float(uniteM))+" "+uniteMs) | |
self.tableWidget.setItem( li,1, newitem) | |
co+=1 | |
try: | |
for a in range(aa,aa+6): # Vertexes | |
co += 1 | |
#newitem = QtWidgets.QTableWidgetItem(str(Vertx[a])) | |
chaine = str(Vertx[a]).split(":") | |
newitem = QtWidgets.QTableWidgetItem(chaine[0]+":" + str(float(chaine[1]) * float(uniteM))+" "+uniteMs) | |
self.tableWidget.setItem( li,co, newitem) | |
except Exception: | |
None | |
aa += 6 | |
co = 0 | |
li += 1 | |
li += 1 | |
co = 0 | |
cco = 0 | |
co2 = 0 | |
for j in enumerate(Faces): # Faces | |
newitem = QtWidgets.QTableWidgetItem(str(j[1])) | |
self.tableWidget.setItem( li,0, newitem) | |
newitem = QtWidgets.QTableWidgetItem(str(float(FacesSurf[co]) * float(uniteS))+" "+uniteSs) | |
self.tableWidget.setItem( li,1, newitem) | |
li += 1 | |
for jj in range(cco,len(FacesCoor)):# Faces coordinates | |
cco+=1 | |
if FacesCoor[jj] == "T": | |
break | |
else: | |
# newitem = QtWidgets.QTableWidgetItem(FacesCoor[jj]) | |
chaine = str(FacesCoor[jj]).split(":") | |
newitem = QtWidgets.QTableWidgetItem(chaine[0]+":" + str(float(chaine[1]) * float(uniteM)) + " " + uniteMs) | |
self.tableWidget.setItem( li,co2, newitem) | |
co2 += 1 | |
if co2 == 3: | |
li += 1 | |
co2 = 0 | |
co += 1 | |
li += 1 | |
self.LE_8xy.setText(str(Around(Plan_xy))+uniteAs) | |
self.LE_8xya.setText(str(Plan_xy_V)) | |
self.LE_8yz.setText(str(Around(Plan_yz))+uniteAs) | |
self.LE_8yza.setText(str(Plan_yz_V)) | |
self.LE_8zx.setText(str(Around(Plan_zx))+uniteAs) | |
self.LE_8zxa.setText(str(Plan_zx_V)) | |
self.LE_9a.setText(str(Around(surface * uniteS)) + " " + uniteSs) | |
self.LE_10a.setText(str(Around(surfaceFace * uniteS)) + " " + uniteSs) | |
self.LE_11a.setText(str(Around(volume_ * uniteV)) + " " + uniteVs) | |
self.LE_12a.setText(str(Around(poids)) + " " + unitePs) | |
seTMaterialCost = ((volume_ * seTDensiteValue * seTMaterialPrice) / 1000000.0) | |
self.LE_Cost.setText(str(Around(seTMaterialCost)) + seTMaterialSuffixCost) #CostMaterial | |
self.LE_13x.setText(str(Around(boundBoxCenterX * uniteM)) + " " + uniteMs) | |
self.LE_13y.setText(str(Around(boundBoxCenterY * uniteM)) + " " + uniteMs) | |
self.LE_13z.setText(str(Around(boundBoxCenterZ * uniteM)) + " " + uniteMs) | |
self.LE_14x.setText(str(Around(CenterOfMassX * uniteM)) + " " + uniteMs) | |
self.LE_14y.setText(str(Around(CenterOfMassY * uniteM)) + " " + uniteMs) | |
self.LE_14z.setText(str(Around(CenterOfMassZ * uniteM)) + " " + uniteMs) | |
self.LE_007_BB_01_XLength.setText(str(Around(boundBoxLX * uniteM)) + " " + uniteMs) | |
self.LE_007_BB_02_YLength.setText(str(Around(boundBoxLY * uniteM)) + " " + uniteMs) | |
self.LE_007_BB_03_ZLength.setText(str(Around(boundBoxLZ * uniteM)) + " " + uniteMs) | |
self.LE_007_BB_04_Diagonal.setText(str(Around(boundBoxDiag * uniteM)) + " " + uniteMs) | |
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"Comma") | |
self.RB_03_Point_Virgule.setText(u"Semicolon") | |
self.RB_04_Espace.setText(u"Space") | |
# self.RB_01_Tabulation.setChecked(True) | |
# ESCAPE = "\t" | |
ui.paletteBase() | |
def on_RB_Separation(self): # option ESCAPE for spreadSheet | |
global ESCAPE | |
if self.RB_01_Tabulation.isChecked(): #tabulation #compatible FC | |
ESCAPE = "\t" | |
elif self.RB_02_Virgule.isChecked(): #virgule #compatible FCInfo | |
ESCAPE = "," | |
elif self.RB_03_Point_Virgule.isChecked(): #point virgule #option | |
ESCAPE = ";" | |
elif self.RB_04_Espace.isChecked(): #espace #option | |
ESCAPE = " " | |
def on_PB_01_Read_SpreadSheet_clicked(self): # lecture | |
global ESCAPE | |
global setPathLatestDirectory | |
global FreeCAD_ParamGetSet | |
OpenName = "" | |
#### mint | |
if switchQFileDialogMint == True: # Mint | |
OpenName, Filter = PySide2.QtWidgets.QFileDialog.getOpenFileName(None, u"Read a txt file", setPathLatestDirectory, "(FCInfo *.FCInfo);;(Cvs *.csv);;(Ascii *.asc);;(TXT *.txt);;(*.*);;(*)")#PySide2 Mint | |
#### mint | |
else: | |
OpenName, Filter = PySide2.QtWidgets.QFileDialog.getOpenFileName(None, u"Read a txt file", setPathLatestDirectory, "*.FCInfo *.csv *.asc *.txt;;FCInfo (*.FCInfo);;Cvs (*.csv);;Ascii (*.asc);;TXT (*.txt);;(*.*);;(*)")#PySide2 | |
try: | |
if OpenName != "": | |
####new2 | |
pathFile = os.path.dirname(OpenName) + "/" #1# = C:/Provisoire400/ | |
setPathLatestDirectory = pathFile | |
FreeCAD_ParamGetSet.SetString(u"setPathLatestDirectory", setPathLatestDirectory) #*"C:\ ???" | |
#racineDrive = os.path.splitdrive(OpenName)[0] #2# = C: | |
#formatFichier = os.path.splitext(OpenName)[1] #4# = .png | |
#OpenName = os.path.splitext(OpenName)[0] #5# = /home/kubuntu/.FreeCAD/Macro/Texture_007_H #= C:/Provisoire400/image3D | |
#nomFichier = os.path.basename(OpenName) #3# = image3D | |
#SaveNameformatFichier = OpenName + formatFichier #6# = C:/Provisoire400/image3D.png | |
#pathFileSaveNameformatFichier = pathFile + nomFichier + formatFichier #7# = C:/Provisoire400/image3D.png | |
####new2 | |
####detection separator################### | |
file = open(OpenName, "r") # open file for counter separator | |
separateur1 = separateur2 = separateur3 = separateur4 = 0 | |
for separator in file: | |
separateur1 += separator.count(u"\t") | |
separateur2 += separator.count(u",") | |
separateur3 += separator.count(u";") | |
separateur4 += separator.count(u" ") | |
self.RB_01_Tabulation.setText(u"Tabulation "+str(separateur1)) | |
self.RB_02_Virgule.setText(u"Comma "+str(separateur2)) | |
self.RB_03_Point_Virgule.setText(u"Semicolon "+str(separateur3)) | |
self.RB_04_Espace.setText(u"Space "+"(" + str(separateur4) + ")") | |
file.close() | |
####detection separator################### | |
####counter line and colonne################### | |
file = open(OpenName, "r") # open file for counter line and colonne | |
reader = csv.reader(file, delimiter = ESCAPE) #, quotechar=';' | |
Count0 = 0 | |
ligne = 0 | |
colonne = 0 | |
try: # | |
for row in reader: | |
ligne += 1 # | |
for field in row: | |
Count0 += 1 # | |
if Count0 > colonne: | |
colonne = Count0 | |
Count0 = 0 | |
finally: | |
file.close() | |
self.table = QtWidgets.QTableWidget( ligne , colonne) # prepare le tableau | |
self.table.setWindowTitle(u"FCInfo Patience reading the file") | |
# self.table.resize(700, 500) | |
self.table.resize(500, 700) | |
self.table.setWindowModality(QtCore.Qt.NonModal) | |
self.table.setWindowFlags(PySide2.QtCore.Qt.WindowStaysOnTopHint) # PySide2 | |
self.table.setWindowIcon(QtGui.QIcon(QtGui.QPixmap(Macro_FCInfo_04))) # icone dans une variable | |
self.table.show() | |
####counter line and colonne################### | |
####csv.reader################### | |
file = open(OpenName, "r") # open file for read | |
reader = csv.reader(file, delimiter = ESCAPE) #, quotechar=';' | |
lignes = ligne | |
colonne = 0 | |
ligne = 0 | |
try: | |
for row in reader: | |
for field in row: | |
newitem = QtWidgets.QTableWidgetItem(str(field)) | |
self.table.setItem(ligne, colonne, newitem) | |
colonne += 1 | |
ligne += 1 | |
colonne = 0 | |
self.table.setWindowTitle(u"FCInfo Patience reading the file "+str(ligne)+"/"+str(lignes)) | |
finally: | |
file.close() | |
self.table.setWindowTitle(u"FCInfo Tableau " + OpenName) | |
####csv.reader################### | |
except Exception: | |
App_Console_PrintMessage(u"Error in reading the file " + OpenName + "\n") | |
errorDialog(u"Error in reading the file " + 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 switchQFileDialogMint == True: # Mint | |
SaveName, Filter = PySide2.QtWidgets.QFileDialog.getSaveFileName(None, "Save a txt file", setPathLatestDirectory, " (FCInfo *.FCInfo);; (Cvs *.csv);; (Ascii *.asc);; (TXT *.txt);;(*.*);;(*)")#PySide2 Mint | |
Filter = Filter[Filter.find("."):Filter.find(")")] | |
if Filter[-2:] == ".*": | |
Filter = Filter[:-2] | |
SaveName = SaveName + Filter | |
#### mint | |
else: | |
SaveName, Filter = PySide2.QtWidgets.QFileDialog.getSaveFileName(None, "Save a txt file", setPathLatestDirectory, "*.FCInfo *.csv *.asc *.txt;;FCInfo (*.FCInfo);;Cvs (*.csv);;Ascii (*.asc);;TXT (*.txt);;(*.*);;(*)")#PySide2 | |
if SaveName == "": | |
App_Console_PrintMessage(u"Process aborted" + "\n") | |
errorDialog(u"Process aborted") | |
else: | |
App_Console_PrintMessage(u"Registration of " + 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"Info of the element\n")) | |
f.write(iso8859(u"___________________\n")) | |
f.write(iso8859(dateUs() + " "+ heure() + "\n\n")) | |
f.write(iso8859(u"Name of the document" + ESCAPE + document_ + "\n")) | |
f.write(iso8859(u"Label Name" + ESCAPE + object_Label + "\n")) | |
f.write(iso8859(u"Internal Name" + ESCAPE + object_Name + "\n")) | |
f.write(iso8859(u"Name of the element" + ESCAPE + str(subElemName) + "\n")) | |
f.write(iso8859(u"Object type (Shape)" + ESCAPE + typeObject + "\n")) | |
f.write(iso8859(u"Object type" + ESCAPE + object_Type + "\n\n")) | |
f.write(iso8859(u"Mouse coordinates" + ESCAPE + "X" + ESCAPE + str(Around(position0 * uniteM)) + ESCAPE + uniteMs + ESCAPE + | |
"Y" + ESCAPE + str(Around(position1 * uniteM)) + ESCAPE + uniteMs + ESCAPE + | |
"Z" + ESCAPE + str(Around(position2 * uniteM)) + ESCAPE + uniteMs + "\n\n")) | |
#### couleurs | |
f.write(iso8859(u"Color of the selection" + "\n")) | |
f.write(iso8859(u"Red" + ESCAPE + str(int(diffuseColorRF*255.0)) + ESCAPE + | |
u"Green" + ESCAPE + str(int(diffuseColorVF*255.0)) + ESCAPE + | |
u"Blue" + ESCAPE + str(int(diffuseColorBF*255.0)) + ESCAPE + | |
u"Transparency" + ESCAPE + str(int(diffuseColorTF*255.0)) + "\n\n")) | |
if len(colorShapeFace) != 0: | |
f.write(iso8859(u"Color Objet (float) " + ESCAPE + u"Red" + ESCAPE + str(colorShapeFace[0]) + ESCAPE + | |
u"Green" + ESCAPE + str(colorShapeFace[1]) + ESCAPE + | |
u"Blue" + ESCAPE + str(colorShapeFace[2]) + ESCAPE + | |
u"Transparency" + ESCAPE + str(colorShapeFace[3]) + "\n")) | |
f.write(iso8859(u"Color Objet (int ) " + ESCAPE + u"Red" + ESCAPE + str(int(colorShapeFace[0]*255.0)) + ESCAPE + | |
u"Green" + ESCAPE + str(int(colorShapeFace[1]*255.0)) + ESCAPE + | |
u"Blue" + ESCAPE + str(int(colorShapeFace[2]*255.0)) + ESCAPE + | |
u"Transparency" + ESCAPE + str(int(colorShapeFace[3]*255.0)) + "\n\n")) | |
if len(colorShapeLine) != 0: | |
f.write(iso8859(u"Color Line(s) (float) " + ESCAPE + u"Red" + ESCAPE + str(colorShapeLine[0]) + ESCAPE + | |
u"Green" + ESCAPE + str(colorShapeLine[1]) + ESCAPE + | |
u"Blue" + ESCAPE + str(colorShapeLine[2]) + ESCAPE + | |
u"Transparency" + ESCAPE + str(colorShapeLine[3]) + "\n")) | |
f.write(iso8859(u"Color Line(s) (int ) " + ESCAPE + u"Red" + ESCAPE + str(int(colorShapeLine[0]*255.0)) + ESCAPE + | |
u"Green" + ESCAPE + str(int(colorShapeLine[1]*255.0)) + ESCAPE + | |
u"Blue" + ESCAPE + str(int(colorShapeLine[2]*255.0)) + ESCAPE + | |
u"Transparency" + ESCAPE + str(int(colorShapeLine[3]*255.0)) + "\n\n")) | |
if len(colorShapePoint) != 0: | |
try: | |
f.write(iso8859(u"Color Point(s) (float) " + ESCAPE + u"Red" + ESCAPE + str(colorShapePoint[0]) + ESCAPE + | |
u"Green" + ESCAPE + str(colorShapePoint[1]) + ESCAPE + | |
u"Blue" + ESCAPE + str(colorShapePoint[2]) + ESCAPE + | |
u"Transparency" + ESCAPE + str(colorShapePoint[3]) + "\n")) | |
f.write(iso8859(u"Color Point(s) (int ) " + ESCAPE + u"Red" + ESCAPE + str(int(colorShapePoint[0]*255.0)) + ESCAPE + | |
u"Green" + ESCAPE + str(int(colorShapePoint[1]*255.0)) + ESCAPE + | |
u"Blue" + ESCAPE + str(int(colorShapePoint[2]*255.0)) + ESCAPE + | |
u"Transparency" + 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"Components Mesh" + "\n")) | |
f.write(iso8859(u"_______________\n")) | |
f.write(iso8859(u"Number Edges" + ESCAPE + str(nombreArretesMesh) + "\n")) | |
f.write(iso8859(u"Number Faces" + ESCAPE + str(nombreFacesMesh) + "\n")) | |
f.write(iso8859(u"Number Points" + ESCAPE + str(nombrePointsMesh) + "\n\n")) | |
if detected == "<PointKernel object>": | |
f.write(iso8859(u"Components Points" + "\n")) | |
f.write(iso8859(u"_________________\n")) | |
f.write(iso8859(u"Number Points" + ESCAPE + str(nombrePointsMesh) + "\n\n")) | |
#### detail of Cercle | |
if rayonObjet != 0.0: | |
f.write(iso8859(u"Radius" + ESCAPE + str(Around(rayonObjet * uniteM)) + ESCAPE + uniteMs + "\n\n")) | |
f.write(iso8859(u"Perimeter of the shape" + 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"Number of nodes" + ESCAPE + str(BsplineNombreDeNoeuds) + "\n")) | |
for i in enumerate(BsplinePointsCoor): # nombre de points noeuds | |
f.write(iso8859(u"Nodes" + 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 and details" + ESCAPE + u" Number Edges" + ESCAPE + str(compt_E) + ESCAPE + u" Number Faces" + ESCAPE + str(compt_F) + ESCAPE + u" Number Vertexes faces" + ESCAPE + str(compt_VF) + ESCAPE + u" Detail 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"Color float Face" + str(j[0]+1) + ESCAPE + | |
u"Red" + ESCAPE + str(colorShapeFaceDiffuseColor[j[0]][0]) + ESCAPE + | |
u"Green " + ESCAPE + str(colorShapeFaceDiffuseColor[j[0]][1]) + ESCAPE + | |
u"Blue " + ESCAPE + str(colorShapeFaceDiffuseColor[j[0]][2]) + ESCAPE + | |
u"Transparency" + ESCAPE + str(colorShapeFaceDiffuseColor[j[0]][3]) + ESCAPE + "\n")) | |
f.write(iso8859(u"Couleur integer Face" + str(j[0]+1) + ESCAPE + | |
u"Red" + ESCAPE + str(int(colorShapeFaceDiffuseColor[j[0]][0]*255.0)) + ESCAPE + | |
u"Green " + ESCAPE + str(int(colorShapeFaceDiffuseColor[j[0]][1]*255.0)) + ESCAPE + | |
u"Blue " + ESCAPE + str(int(colorShapeFaceDiffuseColor[j[0]][2]*255.0)) + ESCAPE + | |
u"Transparency" + 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"Plane" + ESCAPE + u" XY:" + ESCAPE + self.LE_8xy.text() + ESCAPE + u" coordinates:" + ESCAPE + str(Plan_xy_V) + "\n")) | |
f.write(iso8859(u"Plane" + ESCAPE + u" YZ:" + ESCAPE + self.LE_8yz.text() + ESCAPE + u" coordinates:" + ESCAPE + str(Plan_yz_V) + "\n")) | |
f.write(iso8859(u"Plane" + ESCAPE + u" ZX:" + ESCAPE + self.LE_8zx.text() + ESCAPE + u" coordinates:" + ESCAPE + str(Plan_zx_V) + "\n\n")) | |
f.write(iso8859(u"The form area" + ESCAPE + str(Around(surface * uniteS)) + ESCAPE + uniteSs + "\n")) | |
f.write(iso8859(u"Area of the face" + ESCAPE + str(Around(surfaceFace * uniteS)) + ESCAPE + uniteSs + "\n\n")) | |
f.write(iso8859(u"Volume of the form" + ESCAPE + str(Around(volume_ * uniteV)) + ESCAPE + uniteVs + "\n")) | |
f.write(iso8859(u"Mass" + ESCAPE + str(Around(poids)) + ESCAPE + unitePs + ESCAPE + u" Density:" + ESCAPE + str(Around(seTDensiteValue)) + "\n\n")) | |
f.write(iso8859(u"Center of the shape" + 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"Center of " + massOrGravity + 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"BoundBox" + 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"BoundBox Diagonal" + 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 Raw" + ESCAPE + str(MatrixOfInertiaRaw)) + "\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 with mass" + ESCAPE + unitePs + uniteSs + "^" + str(setMomentOfInertiaMassique_17)) + "\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 Determinant" + ESCAPE + str(DeterminantM) + "\n")) | |
f.write(iso8859(u"Determinant decimal" + 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"Density" + ESCAPE + u"Volume" + ESCAPE + u"Unit" + ESCAPE + u"Price (kg/dm3)"+ ESCAPE + | |
u"Cost 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"End " + ESCAPE + document_ + "\n")) | |
f.close() | |
except Exception: | |
App_Console_PrintMessage(u"Error writing file " + SaveName + "\n") | |
errorDialog(u"Error writing file " + 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() | |
ui.paletteBase() | |
def on_PB_05_Help_Forum_clicked(self):# Help Forum | |
self.PB_05_Help_Forum.setStyleSheet(u"QPushButton {background-color: QPalette.Base}") #red | |
try: | |
webbrowser.open(__Forum2__) | |
except Exception: | |
self.PB_05_Help_Forum.setStyleSheet(u"QPushButton {border-width: 2px; border-style: solid; border-color: red}") #red | |
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 of element")) | |
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"Document name")); 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 of the object")); 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"Internal name of the object")); 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"Element name")); 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"Object Type (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"Object Type")); 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"Mouse coordinates")); 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"Color on selection")) | |
tableau.setBackground(self.caseTableau(ligne,colonne), (TextColorText_R, TextColorText_G, TextColorText_B, TextColorText_L)) | |
ligne += 1 | |
tableau.set(self.caseTableau(ligne,colonne), (u"Red")); tableau.set(self.caseTableau(ligne,colonne+1), str(int(diffuseColorRF*255.0))); tableau.set(self.caseTableau(ligne,colonne+2),u"Green"); tableau.set(self.caseTableau(ligne,colonne+3), str(int(diffuseColorVF*255.0))); tableau.set(self.caseTableau(ligne,colonne+4),u"Blue"); tableau.set(self.caseTableau(ligne,colonne+5), str(int(diffuseColorBF*255.0))); tableau.set(self.caseTableau(ligne,colonne+6), u"Transparency"); 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"Object Color (float) ")); tableau.set(self.caseTableau(ligne,colonne+1), u"Red"); tableau.set(self.caseTableau(ligne,colonne+2), str(colorShapeFace[0])); tableau.set(self.caseTableau(ligne,colonne+3), u"Green" ); tableau.set(self.caseTableau(ligne,colonne+4), str(colorShapeFace[1])); tableau.set(self.caseTableau(ligne,colonne+5), u"Blue"); tableau.set(self.caseTableau(ligne,colonne+6), str(colorShapeFace[2])); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparency"); 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"Object Color (int ) ")); tableau.set(self.caseTableau(ligne,colonne+1), u"Red"); tableau.set(self.caseTableau(ligne,colonne+2), str(int(colorShapeFace[0]*255.0))); tableau.set(self.caseTableau(ligne,colonne+3), u"Green" ); tableau.set(self.caseTableau(ligne,colonne+4), str(int(colorShapeFace[1]*255.0))); tableau.set(self.caseTableau(ligne,colonne+5), u"Blue"); tableau.set(self.caseTableau(ligne,colonne+6), str(int(colorShapeFace[2]*255.0))); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparency"); 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"Object Color (float) ")); tableau.set(self.caseTableau(ligne,colonne+1), u"Red"); tableau.set(self.caseTableau(ligne,colonne+2), str(colorShapeLine[0])); tableau.set(self.caseTableau(ligne,colonne+3), u"Green" ); tableau.set(self.caseTableau(ligne,colonne+4), str(colorShapeLine[1])); tableau.set(self.caseTableau(ligne,colonne+5), u"Blue"); tableau.set(self.caseTableau(ligne,colonne+6), str(colorShapeLine[2])); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparency"); 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"Color Line(s) (int ) ")); tableau.set(self.caseTableau(ligne,colonne+1), u"Red"); tableau.set(self.caseTableau(ligne,colonne+2), str(int(colorShapeLine[0]*255.0))); tableau.set(self.caseTableau(ligne,colonne+3), u"Green" ); tableau.set(self.caseTableau(ligne,colonne+4), str(int(colorShapeLine[1]*255.0))); tableau.set(self.caseTableau(ligne,colonne+5), u"Blue"); tableau.set(self.caseTableau(ligne,colonne+6), str(int(colorShapeLine[2]*255.0))); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparency"); 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"Color Point(s) (float) ")); tableau.set(self.caseTableau(ligne,colonne+1), u"Red"); tableau.set(self.caseTableau(ligne,colonne+2), str(colorShapePoint[0])); tableau.set(self.caseTableau(ligne,colonne+3), u"Green" ); tableau.set(self.caseTableau(ligne,colonne+4), str(colorShapePoint[1])); tableau.set(self.caseTableau(ligne,colonne+5), u"Blue"); tableau.set(self.caseTableau(ligne,colonne+6), str(colorShapePoint[2])); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparency"); 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"Color Point(s) (int ) ")); tableau.set(self.caseTableau(ligne,colonne+1), u"Red"); tableau.set(self.caseTableau(ligne,colonne+2), str(int(colorShapePoint[0]*255.0))); tableau.set(self.caseTableau(ligne,colonne+3), u"Green" ); tableau.set(self.caseTableau(ligne,colonne+4), str(int(colorShapePoint[1]*255.0))); tableau.set(self.caseTableau(ligne,colonne+5), u"Blue"); tableau.set(self.caseTableau(ligne,colonne+6), str(int(colorShapePoint[2]*255.0))); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparency"); 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"Components 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"Number of Edges")); 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"Number of Sides")); 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"Number of 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"Components 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"Number of 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"Object radius")); 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"Shape Perimeter")); 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"Number of nodes")); 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"Nodes" + 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 and details")); tableau.set(self.caseTableau(ligne,colonne+1), u" Number of Edges"); tableau.set(self.caseTableau(ligne,colonne+2), str(compt_E)); tableau.set(self.caseTableau(ligne,colonne+3), u" Number of 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]) + (str(Around(float(EdgesLong[co]) * float(uniteM)))))); tableau.set(self.caseTableau(ligne,colonne+1), 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"Float color Face" + str(j[0]+1))); tableau.set(self.caseTableau(ligne,colonne+1), u"Red"); tableau.set(self.caseTableau(ligne,colonne+2), str(colorShapeFaceDiffuseColor[j[0]][0])); tableau.set(self.caseTableau(ligne,colonne+3), u"Green "); tableau.set(self.caseTableau(ligne,colonne+4), str(colorShapeFaceDiffuseColor[j[0]][1])); tableau.set(self.caseTableau(ligne,colonne+5), u"Blue "); tableau.set(self.caseTableau(ligne,colonne+6), str(colorShapeFaceDiffuseColor[j[0]][2])); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparency"); 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"Integer color Face" + str(j[0]+1))); tableau.set(self.caseTableau(ligne,colonne+1), u"Red"); tableau.set(self.caseTableau(ligne,colonne+2), str(int(colorShapeFaceDiffuseColor[j[0]][0]*255.0))); tableau.set(self.caseTableau(ligne,colonne+3), u"Green "); tableau.set(self.caseTableau(ligne,colonne+4), str(int(colorShapeFaceDiffuseColor[j[0]][1]*255.0))); tableau.set(self.caseTableau(ligne,colonne+5), u"Blue "); tableau.set(self.caseTableau(ligne,colonne+6), str(int(colorShapeFaceDiffuseColor[j[0]][2]*255.0))); tableau.set(self.caseTableau(ligne,colonne+7), u"Transparency"); 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"Plane")); 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"Plane")); 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"Plane")); 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"Shape area")); 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"Face area")); 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 of the form")); 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"Mass")); 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"Shape center")); 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"Center of mass")); 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"Overall dimensions")); 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"Diagonal dimensions")); 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 + "^" + str(setMomentOfInertia_16)) | |
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 + "^" + str(setMomentOfInertiaMassique_17)) | |
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 Determinant")); 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"Decimal Determinant")); 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"Density"); 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"Total cost"); 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"End ")); tableau.set(self.caseTableau(ligne,colonne+1), document_); tableau.set(self.caseTableau(ligne,colonne+2), object_Label) | |
tableau.setBackground(self.caseTableau(ligne,colonne), (0.9372549019607843, 0.1607843137254902, 0.1607843137254902, TextColorText_L)) | |
tableau.setBackground(self.caseTableau(ligne,colonne+1), (0.9372549019607843, 0.1607843137254902, 0.1607843137254902, TextColorText_L)) | |
tableau.setBackground(self.caseTableau(ligne,colonne+2), (0.9372549019607843, 0.1607843137254902, 0.1607843137254902, TextColorText_L)) | |
ligne += 1 | |
tableau.recompute() | |
# except Exception: | |
# App_Console_PrintMessage(u"Erreur d'enregistrement du fichier " + SaveName) | |
# errorDialog(u"Erreur d'enregistrement du fichier " + SaveName) | |
#### Spreadsheet Fin ################################################################################################ | |
def on_PB_04_Quit(self): # Exit button | |
global ui | |
global path | |
global infoFaceMesh | |
global switchNotInfoOnBeginning | |
global switchVersionSearch | |
global switchWarning | |
global switchCreatePoint | |
global switchCreateAxis | |
global switchCreatePlane | |
global switchDisplayInfoObject | |
global switchClearDisplayReportView | |
global seTWidgetPosition | |
global switchBoundBoxCreateText | |
global seTBoundBoxTextHeigth | |
global seTBoundBoxTextArround | |
global seTMemoClipBoard | |
global seTTextHeigthValue | |
global seTDecimalValue | |
global seTMaterialCurrentIndex | |
global seTMaterialFileName | |
global seTMaterialSavePathName | |
global seTDensiteValue | |
global seTDensiteDecimalNumber | |
global seTDensiteSingleStep | |
global seTDensiteSuffixChain | |
global seTPositionFlyRightLeft | |
global materialAssociated | |
global seTMaterialPrice | |
global seTMaterialSuffixDevise | |
global seTMaterialSuffixCost | |
global seTMaterialCost | |
global seTIndexUnitWeight | |
global seTIndexUnitLength | |
global seTUnitSymbolMicro | |
global seTUnitSymbolCube | |
global seTUnitSymbolCarre | |
global setPathLatestDirectory | |
global switchQFileDialogMint | |
global setMeshTopologyValue | |
global setBSplineToByArcValue | |
global switchBSplineCreateCircleConstructorAxis | |
global switchBSplineCreateCircleConstructor | |
global switchCreateLineDiVatNatOnClick | |
global FreeCAD_ParamGetSet | |
#### Write Configuration begin #### | |
FreeCAD_ParamGetSet.SetBool(u"switchNotInfoOnBeginning", switchNotInfoOnBeginning) # True or False | |
FreeCAD_ParamGetSet.SetBool(u"switchVersionSearch", switchVersionSearch) # True or False | |
FreeCAD_ParamGetSet.SetBool(u"switchWarning", switchWarning) # True or False | |
FreeCAD_ParamGetSet.SetBool(u"switchCreatePoint", switchCreatePoint) # True or False | |
FreeCAD_ParamGetSet.SetBool(u"switchCreateAxis", switchCreateAxis) # True or False | |
FreeCAD_ParamGetSet.SetBool(u"switchCreatePlane", switchCreatePlane) # True or False | |
FreeCAD_ParamGetSet.SetBool(u"switchDisplayInfoObject", switchDisplayInfoObject) # True or False | |
FreeCAD_ParamGetSet.SetBool(u"switchClearDisplayReportView", switchClearDisplayReportView)#*True or False | |
FreeCAD_ParamGetSet.SetBool(u"seTWidgetPosition", seTWidgetPosition) # True or False | |
FreeCAD_ParamGetSet.SetBool(u"switchBoundBoxCreateText", switchBoundBoxCreateText) # True or False | |
FreeCAD_ParamGetSet.SetFloat(u"seTBoundBoxTextHeigth", seTBoundBoxTextHeigth) # 3.0 | |
FreeCAD_ParamGetSet.SetInt(u"seTBoundBoxTextArround", seTBoundBoxTextArround) # 3 | |
FreeCAD_ParamGetSet.SetInt(u"seTMemoClipBoard", seTMemoClipBoard) # 0, 1, 2 | |
FreeCAD_ParamGetSet.SetInt(u"seTTextHeigthValue", seTTextHeigthValue) # 11 | |
FreeCAD_ParamGetSet.SetInt(u"seTDecimalValue", seTDecimalValue) # 4 | |
FreeCAD_ParamGetSet.SetInt(u"seTMaterialCurrentIndex", seTMaterialCurrentIndex) # 0 | |
FreeCAD_ParamGetSet.SetString(u"seTMaterialFileName", seTMaterialFileName) # "FCInfo_material.txt" | |
FreeCAD_ParamGetSet.SetString(u"seTMaterialSavePathName", seTMaterialSavePathName) # "C:\...\Macro\FCInfo_material.txt" | |
FreeCAD_ParamGetSet.SetFloat(u"seTMaterialPrice", seTMaterialPrice) # x | |
FreeCAD_ParamGetSet.SetString(u"seTMaterialSuffixDevise", seTMaterialSuffixDevise) # " Eu (By Kg)# Suffix device | |
FreeCAD_ParamGetSet.SetString(u"seTMaterialSuffixCost", seTMaterialSuffixCost) # " Eu # Suffix cost | |
FreeCAD_ParamGetSet.SetFloat(u"seTMaterialCost", seTMaterialCost) # x | |
FreeCAD_ParamGetSet.SetFloat(u"seTDensiteValue", seTDensiteValue) # 1.0 | |
FreeCAD_ParamGetSet.SetInt(u"seTDensiteDecimalNumber", seTDensiteDecimalNumber) # 4 | |
FreeCAD_ParamGetSet.SetFloat(u"seTDensiteSingleStep", seTDensiteSingleStep) # 1.0 | |
FreeCAD_ParamGetSet.SetString(u"seTDensiteSuffixChain", seTDensiteSuffixChain) # " kg (by dm3)" | |
FreeCAD_ParamGetSet.SetInt(u"seTPositionFlyRightLeft", seTPositionFlyRightLeft) # 1, 2, other | |
#FreeCAD_ParamGetSet.SetInt(u"seTIndexUnitWeight", seTIndexUnitWeight) # x | |
#FreeCAD_ParamGetSet.SetInt(u"seTIndexUnitLength", seTIndexUnitLength) # x | |
FreeCAD_ParamGetSet.SetString(u"seTUnitSymbolMicro", seTUnitSymbolMicro) # "U" | |
FreeCAD_ParamGetSet.SetString(u"seTUnitSymbolCube", seTUnitSymbolCube) # "3" | |
FreeCAD_ParamGetSet.SetString(u"seTUnitSymbolCarre", seTUnitSymbolCarre) # "2" | |
FreeCAD_ParamGetSet.SetBool("switchQFileDialogMint", switchQFileDialogMint) # Special Mint | |
FreeCAD_ParamGetSet.SetString(u"setPathLatestDirectory", setPathLatestDirectory) # "C:\ ???" | |
FreeCAD_ParamGetSet.SetFloat(u"setBSplineToByArcValue", setBSplineToByArcValue) # 0.00001 | |
FreeCAD_ParamGetSet.SetFloat(u"setMeshTopologyValue", setMeshTopologyValue) # 0.1 | |
FreeCAD_ParamGetSet.SetBool(u"switchBSplineCreateCircleConstructorAxis", switchBSplineCreateCircleConstructorAxis)# True or False | |
FreeCAD_ParamGetSet.SetBool(u"switchBSplineCreateCircleConstructor", switchBSplineCreateCircleConstructor) # True or False | |
FreeCAD_ParamGetSet.SetBool(u"switchCreateLineDiVatNatOnClick", switchCreateLineDiVatNatOnClick) # True or False | |
#### Write Configuration end #### | |
#### save the material begin #### | |
ui.on_PB_Save_Material_clicked() # save material | |
#### save the material end #### | |
App_Console_PrintMessage(u"End 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"Select an object" + "\n") | |
errorDialog(u"Select an object") | |
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"Details of the form") | |
####SpecialSketcher | |
########################################################################################################################## | |
if switchNotInfoOnBeginning == 0: # 0 =display the info | |
App_Console_PrintMessage(u"____________________________________" + "\n") | |
App_Console_PrintMessage(u"#### FCInfo Configuration begin ####" + "\n") | |
App_Console_PrintMessage(u"####" + "\n") | |
App_Console_PrintMessage(u"\t" + "**** Location ****" + "\n") | |
App_Console_PrintMessage(u"User parameter:BaseApp/Preferences/Macros/FCMmacros/FCInfo/" + "\n") | |
App_Console_PrintMessage(u"####" + "\n\n") | |
App_Console_PrintMessage(u"switchNotInfoOnBeginning # SetBool True or [False]" + "\n") | |
App_Console_PrintMessage(u"\t" + "Display or not this text information on run macro" + "\n") | |
App_Console_PrintMessage(u"\t\t" + "[False] = display this information" + "\n") | |
App_Console_PrintMessage(u"\t\t" + " True = this Information is Not displayed On Beginning" + "\n\n") | |
App_Console_PrintMessage(u"switchVersionSearch # SetBool True or [False]" + "\n") | |
App_Console_PrintMessage(u"\t" + "Search if one new version exist on run macro" + "\n\n") | |
App_Console_PrintMessage(u"switchWarning # SetBool True or [False]" + "\n") | |
App_Console_PrintMessage(u"\t" + "Display or not display the window warning in case not good selection" + "\n\n") | |
App_Console_PrintMessage(u"switchCreatePoint # SetBool True or [False]" + "\n") | |
App_Console_PrintMessage(u"\t" + "Check the Create point checkBox" + "\n\n") | |
App_Console_PrintMessage(u"switchCreateAxis # SetBool True or [False]" + "\n") | |
App_Console_PrintMessage(u"\t" + "Check the Create axis checkBox" + "\n\n") | |
App_Console_PrintMessage(u"switchCreatePlane # SetBool True or [False]" + "\n") | |
App_Console_PrintMessage(u"\t" + "Check the Create plane checkBox" + "\n\n") | |
App_Console_PrintMessage(u"switchDisplayInfoObject # SetBool True or [False]" + "\n") | |
App_Console_PrintMessage(u"\t" + "Check the info checkBox" + "\n\n") | |
App_Console_PrintMessage(u"switchClearDisplayReportView# SetBool True or [False]" + "\n") | |
App_Console_PrintMessage(u"\t" + "if switchClearDisplayReportView is TRUE the ReportView is cleared" + "\n\n") | |
App_Console_PrintMessage(u"seTWidgetPosition # SetBool True or [False]" + "\n") | |
App_Console_PrintMessage(u"\t" + "Check the Widget Position Left/Right checkBox" + "\n") | |
App_Console_PrintMessage(u"\t" + "if seTWidgetPosition [False] : if seTPositionFlyRightLeft = 2 = docked to Right" + "\n") | |
App_Console_PrintMessage(u"\t" + "if seTWidgetPosition True : if seTPositionFlyRightLeft = 3 = docked to Left" + "\n") | |
App_Console_PrintMessage(u"\t" + "if it is 1 the window macro is not docked" + "\n\n") | |
App_Console_PrintMessage(u"switchBoundBoxCreateText # SetBool True or [False]" + "\n") | |
App_Console_PrintMessage(u"\t" + "Create the text dimension of the BoundBox" + "\n\n") | |
App_Console_PrintMessage(u"seTBoundBoxTextHeigth # seTBoundBoxTextHeigth = 3.0" + "\n") | |
App_Console_PrintMessage(u"\t" + "Give the Heigth of the text dimension (independent of the seTTextHeigthValue)" + "\n\n") | |
App_Console_PrintMessage(u"seTBoundBoxTextArround # seTBoundBoxTextArround = 3" + "\n") | |
App_Console_PrintMessage(u"\t" + "Give the arround of the text dimensions (independent of the seTDecimalValue)" + "\n\n") | |
App_Console_PrintMessage(u"seTMemoClipBoard # SetInt [0], 1, 2, 3" + "\n") | |
App_Console_PrintMessage(u"\t" + "Give one value [0], 1, 2, 3 clipBoard" + "\n") | |
App_Console_PrintMessage(u"\t\t" + "[0] = desactivate the clipBoard" + "\n") | |
App_Console_PrintMessage(u"\t\t" + " 1 = the data string is memorised to : FreeCAD.Vector( X, Y, Z )" + "\n") | |
App_Console_PrintMessage(u"\t\t" + " 2 = the data string is memorised to : X, Y, Z" + "\n") | |
App_Console_PrintMessage(u"\t\t" + " 3 = the data string is memorised to : X Y Z" + "\n\n") | |
App_Console_PrintMessage(u"seTTextHeigthValue # SetInt 11" + "\n") | |
App_Console_PrintMessage(u"\t" + "Give one text heigth value of the macro" + "\n\n") | |
App_Console_PrintMessage(u"seTDecimalValue # SetInt 4" + "\n") | |
App_Console_PrintMessage(u"\t" + "Give the number of decimal displayed" + "\n") | |
App_Console_PrintMessage(u"\t" + "If the number is -1 the total decimal value is displayed)" + "\n\n") | |
App_Console_PrintMessage(u"seTMaterialCurrentIndex # SetInt 0" + "\n") | |
App_Console_PrintMessage(u"\t" + "Set the index of the ComboBox" + "\n\n") | |
App_Console_PrintMessage(u"seTMaterialFileName # SetString FCInfo_material.txt" + "\n") | |
App_Console_PrintMessage(u"\t" + "Name of the material file" + "\n\n") | |
App_Console_PrintMessage(u"seTMaterialSavePathName # SetString C:\...\Macro\FCInfo_material.txt" + "\n") | |
App_Console_PrintMessage(u"\t" + "Path name of the material file" + "\n\n") | |
App_Console_PrintMessage(u"seTMaterialPrice # SetFloat" + "\n") | |
App_Console_PrintMessage(u"\t" + "Material price by Kg " + "\n\n") | |
App_Console_PrintMessage(u"seTMaterialSuffixDevise # SetString" + "\n") | |
App_Console_PrintMessage(u"\t" + "Devise money" + "\n\n") | |
App_Console_PrintMessage(u"seTMaterialSuffixCost # seTMaterialSuffixCost" + "\n") | |
App_Console_PrintMessage(u"\t" + "Suffix Devise cost" + "\n\n") | |
App_Console_PrintMessage(u"seTMaterialCost # SetFloat" + "\n") | |
App_Console_PrintMessage(u"\t" + "Material cost" + "\n\n") | |
App_Console_PrintMessage(u"seTDensiteValue # SetFloat 1.0" + "\n") | |
App_Console_PrintMessage(u"\t" + "Give the densite value" + "\n\n") | |
App_Console_PrintMessage(u"seTDensiteDecimalNumber # SetInt 4" + "\n") | |
App_Console_PrintMessage(u"\t" + "Give the number of decimal for the densite value" + "\n\n") | |
App_Console_PrintMessage(u"seTDensiteSingleStep # SetFloat 1.0" + "\n") | |
App_Console_PrintMessage(u"\t" + "Give the step for one click, by default 1.0 (possible 0.01 or ...)" + "\n\n") | |
App_Console_PrintMessage(u"seTDensiteSuffixChain # SetString kg (by dm3)" + "\n") | |
App_Console_PrintMessage(u"\t" + "Choice your suffix string" + "\n\n") | |
App_Console_PrintMessage(u"seTPositionFlyRightLeft # SetInt 2" + "\n") | |
App_Console_PrintMessage(u"\t" + "Choice your position, Fly, [Right], Left" + "\n") | |
App_Console_PrintMessage(u"\t\t" + " 1 = the macro window is fly (not docked)" + "\n") | |
App_Console_PrintMessage(u"\t\t" + "[2] = the macro window is positionned to Right" + "\n") | |
App_Console_PrintMessage(u"\t\t" + " 3 or other = the macro window is positionned to Left" + "\n") | |
App_Console_PrintMessage(u"seTIndexUnitWeight # SetInt" + "\n") | |
App_Console_PrintMessage(u"\t" + "Set unit Mass index" + "\n\n") | |
App_Console_PrintMessage(u"seTUnitSymbolMicro # U" + "\n") | |
App_Console_PrintMessage(u"\t" + "Set Symbol Micro" + "\n\n") | |
App_Console_PrintMessage(u"seTUnitSymbolCube # 3" + "\n") | |
App_Console_PrintMessage(u"\t" + "Set Symbol Cube" + "\n\n") | |
App_Console_PrintMessage(u"seTUnitSymbolCarre # 2" + "\n") | |
App_Console_PrintMessage(u"\t" + "Set Symbol Square" + "\n\n") | |
App_Console_PrintMessage(u"seTIndexUnitLength # SetInt" + "\n") | |
App_Console_PrintMessage(u"\t" + "Set unit Length index" + "\n\n") | |
App_Console_PrintMessage(u"setBSplineToByArcValue # SetFloat 0.00001" + "\n") | |
App_Console_PrintMessage(u"\t" + "Set unit for cut the BSpline for seack the radius on point given" + "\n\n") | |
App_Console_PrintMessage(u"setMeshTopologyValue # SetFloat 0.1" + "\n") | |
App_Console_PrintMessage(u"\t" + "Set unit for create the Mesh to Shape" + "\n\n") | |
App_Console_PrintMessage(u"switchBSplineCreateCircleConstructorAxis #SetBool True or [False]" + "\n") | |
App_Console_PrintMessage(u"\t" + "Display the axis of the circles (arcs) for create the BSpline" + "\n\n") | |
App_Console_PrintMessage(u"switchBSplineCreateCircleConstructor #SetBool True or [False]" + "\n") | |
App_Console_PrintMessage(u"\t" + "Display the circles cretors for create the BSpline" + "\n\n") | |
App_Console_PrintMessage(u"switchCreateLineDiVatNatOnClick #SetBool True or [False]" + "\n") | |
App_Console_PrintMessage(u"\t" + "Create the Line info on point (0,0,0) or on point mouse clicked (x,y,z) if it is True" + "\n") | |
App_Console_PrintMessage(u"\t" + "If it is True one '*' is displayed in front of text. EX: '*Direction'" + "\n\n") | |
#### | |
App_Console_PrintMessage(u"#### section GroupBox begin" + "\n") | |
App_Console_PrintMessage(u"This switch hidde or display the GroupBox concerned " + "\n\n") | |
App_Console_PrintMessage(u"All operation of research info and calcul not change only the cosmetic hidden/display is visual" + "\n\n") | |
App_Console_PrintMessage(u"switch_setVisible_GBox_001_Document # [True] or False " + "\n") | |
App_Console_PrintMessage(u"switch_setVisible_GBox_002_Coordinate_Mouse # [True] or False " + "\n") | |
App_Console_PrintMessage(u"switch_setVisible_GBox_003_Color # [True] or False " + "\n") | |
App_Console_PrintMessage(u"switch_setVisible_GBox_004_Object_Mesh # [True] or False " + "\n") | |
App_Console_PrintMessage(u"switch_setVisible_GBox_005_Value_Unit # [True] or False " + "\n") | |
App_Console_PrintMessage(u"switch_setVisible_GBox_006_Inclination # [True] or False " + "\n") | |
App_Console_PrintMessage(u"switch_setVisible_GBox_007_Surface_and_Volume # [True] or False " + "\n") | |
App_Console_PrintMessage(u"switch_setVisible_GBox_008_Cost_And_Price # [True] or False " + "\n") | |
App_Console_PrintMessage(u"switch_setVisible_GBox_009_BoundBox # [True] or False " + "\n") | |
App_Console_PrintMessage(u"switch_setVisible_GBox_010_Center_Mass # [True] or False " + "\n") | |
App_Console_PrintMessage(u"switch_setVisible_GBox_011_Inertia # [True] or False " + "\n") | |
App_Console_PrintMessage(u"switch_setVisible_GBox_012_SpreadSheet # [True] or False " + "\n") | |
App_Console_PrintMessage(u"switch_setVisible_GBox_013_SpreadSheet_Creation # [True] or False " + "\n") | |
App_Console_PrintMessage(u"switch_setVisible_GBox_014_Main_Tools # [True] or False " + "\n") | |
App_Console_PrintMessage(u"#### section GroupBox end" + "\n\n") | |
#### | |
App_Console_PrintError(u"####FCinfo Warning####################################################" + "\n") | |
App_Console_PrintError(u"## Matrix of inertia ##" + "\n") | |
App_Console_PrintError(u"## Verify this section by person knowing the inertia position ##" + "\n") | |
App_Console_PrintError(u"## ONLY IF THE OBJECT IS PRESENT IN ONE BODY ##" + "\n") | |
App_Console_PrintError(u"## and post your knowledges in the forum tread if it is not correct ##" + "\n") | |
App_Console_PrintError(u"## http://forum.freecadweb.org/viewtopic.php?f=10&t=3185 ##" + "\n") | |
App_Console_PrintError(u"######################################################################" + "\n\n") | |
App_Console_PrintError(u"###########################################################################" + "\n") | |
App_Console_PrintError(u"** **" + "\n") | |
App_Console_PrintError(u"* Use at your own risk. The author assumes no liability for data loss. *" + "\n") | |
App_Console_PrintError(u"* It is advised to backup your data frequently. *" + "\n") | |
App_Console_PrintError(u"* If you do not trust the software do not use it. *" + "\n") | |
App_Console_PrintError(u"** **" + "\n") | |
App_Console_PrintError(u"###########################################################################" + "\n\n") | |
App_Console_PrintMessage(u"#### FCInfo Configuration end ####" + "\n") | |
App_Console_PrintMessage(u"__________________________________" + "\n\n") | |
#### | |
doc = FreeCAD.activeDocument() | |
if doc == None: | |
doc = FreeCAD.newDocument(u"FCInfo") | |
Gui.Selection.clearSelection() | |
#sel = FreeCADGui.Selection.getSelection() | |
try: | |
infoFaceMesh = Gui.ActiveDocument.ActiveView.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(), getNormal) | |
except Exception: | |
None | |
s=SelObserver() | |
FreeCADGui.Selection.addObserver(s) # install the function resident mode | |
mw = FreeCADGui.getMainWindow() | |
dw=mw.findChildren(QtWidgets.QDockWidget) | |
for i in dw: | |
if str(i.objectName()) == __Title__: | |
if i.isVisible(): | |
i.setVisible(False) | |
else: | |
if seTPositionFlyRightLeft == 1: # MainWindow | |
None | |
else: | |
myNewFreeCADWidget = QtWidgets.QDockWidget() # create (restore) a new dockwidget | |
myNewFreeCADWidget.setObjectName(__Title__) | |
ui = Ui_MainWindow() | |
ui.setupUi(myNewFreeCADWidget) | |
FCmw = FreeCADGui.getMainWindow() | |
i.setVisible(True) | |
break | |
if i.objectName() != __Title__: # macro internal Name | |
# | |
#####MainWindow################################################################################ | |
if seTPositionFlyRightLeft == 1: # MainWindow | |
MainWindow = QtWidgets.QMainWindow() # create a new window volant | |
MainWindow.setObjectName(__Title__) # macro internal Name | |
ui = Ui_MainWindow() | |
ui.setupUi(MainWindow) | |
MainWindow.show() | |
#####DockWidget################################################################################ | |
# | |
else: | |
myNewFreeCADWidget = QtWidgets.QDockWidget() # create a new dockwidget | |
myNewFreeCADWidget.setObjectName(__Title__) | |
ui = Ui_MainWindow() | |
ui.setupUi(myNewFreeCADWidget) | |
FCmw = FreeCADGui.getMainWindow() | |
if seTPositionFlyRightLeft == 2: # RightDock | |
FCmw.addDockWidget(QtCore.Qt.RightDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window Right | |
else: # LeftDock | |
FCmw.addDockWidget(QtCore.Qt.LeftDockWidgetArea,myNewFreeCADWidget) # add the widget to the main window Left | |
ui.on_PB_SpreadSheet_clicked() # cherche les SpreadSheet |
Why is the area moment of inertia units in mm^5? it should be mm^4, am I understanding this wrong?
Hi
Thanks for report, i have no knowledge about Inertia , i report only the data given by FreeCAd:
code: selection.Shape.MatrixOfInertia
the ^5 is added by pinq https://forum.freecadweb.org/viewtopic.php?f=22&t=23888 FCMacro and moment of inertia of assembly
the number of exhibitors (exposant) was one of my requests see
https://forum.freecadweb.org/viewtopic.php?p=555110#p555110 Momentof Interia - FCInfo macro (^2 ^3 ^4 .......) no reply !
if you have knowledge about Inertia ^4 and if it is possible or exist ^2 ^3 ^6....... i am ready to listen to you and upgrade my macro
if this is possible i can add one "spinBox" for select ^1 to ....^10.. ^20 (and verify with object in the existent Body)
PS: if you need ^4 i can give you the way to adapt the code to your responsibility
mario
This should be moved to a repo. This is way too much code for a Gist.
Please do a find and replace of "componants" to "components" (it's a misspelling)
Hi
This should be moved to a repo. This is way too much code for a Gist.
Ok
Please do a find and replace of "componants" to "components" (it's a misspelling)
done Version 1.28b 1.28c thanks
mario
Hi
@vpalagummi would you please test this version , i adding 2 spinBox you can choice the value
https://forum.freecad.org/viewtopic.php?p=747685#p747685
FCInfo_Avec_SpinBox_Moment_Inertia_Non_Official_Version_17-03-2024.zip
thanks for report
mario
Hi
many thanks for report, good for my future macro's
mario