Macro BoundingBox Tracing/cs: Difference between revisions
(Created page with "Klikněte na obrázek, v novém okně umístěte myš nad obrázek, klikněte pravým tlačítkem myši a proveďte "Uložit cíl jako ..."") |
(Updating to match new version of source page) |
||
(12 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
|Description=Toto makro červené stopy (editovatelné) kolem BoundingBox se 6 obdélníky. |
|Description=Toto makro červené stopy (editovatelné) kolem BoundingBox se 6 obdélníky. |
||
|Author=Mario52 |
|Author=Mario52 |
||
|Version=0. |
|Version=0.11 |
||
|Date= |
|Date=2019/05/29 |
||
|FCVersion=All |
|||
|Download=[https://www.freecadweb.org/wiki/images/6/60/BoundBoxTracing.png ToolBar Icon] |
|||
}} |
}} |
||
Line 16: | Line 18: | ||
{{Caption|CenterFace}} |
{{Caption|CenterFace}} |
||
<div class="mw-translate-fuzzy"> |
|||
==Použijte== |
==Použijte== |
||
Vyberte objekt a spusťte makro. 6 obdélníků jsou barevně červené (lze změnit) |
Vyberte objekt a spusťte makro. 6 obdélníků jsou barevně červené (lze změnit) |
||
</div> |
|||
[[File:Macro_BoundingBox_Tracing_01.png|480px]] |
[[File:Macro_BoundingBox_Tracing_01.png|480px]] |
||
Line 29: | Line 33: | ||
Klikněte na obrázek, v novém okně umístěte myš nad obrázek, klikněte pravým tlačítkem myši a proveďte "Uložit cíl jako ..." |
Klikněte na obrázek, v novém okně umístěte myš nad obrázek, klikněte pravým tlačítkem myši a proveďte "Uložit cíl jako ..." |
||
[[Image:BoundBoxTracing.png |
ToolBar Icon [[Image:BoundBoxTracing.png]] |
||
== |
==Skript== |
||
'''Macro_BoundingBox_Tracing.FCMacro''' |
'''Macro_BoundingBox_Tracing.FCMacro''' |
||
{{ |
{{MacroCode|code= |
||
# -*- coding: utf-8 -*- |
# -*- coding: utf-8 -*- |
||
from __future__ import unicode_literals |
|||
# cette macro trace en rouge (modifiable) le tour du boundingbox avec 6 rectangles |
# cette macro trace en rouge (modifiable) le tour du boundingbox avec 6 rectangles |
||
# si "createVol" = 1 il sera cree un volume (rouge) de la dimension du BoundBox |
# si "createVol" = 1 il sera cree un volume (rouge) de la dimension du BoundBox |
||
Line 54: | Line 60: | ||
# #OCC version: 6.8.0.oce-0.17 #Coin version: 4.0.0a #Coin version: 4.0.0a |
# #OCC version: 6.8.0.oce-0.17 #Coin version: 4.0.0a #Coin version: 4.0.0a |
||
# #OCC version: 6.8.0.oce-0.17 #OCC version: 7.2.0 |
# #OCC version: 6.8.0.oce-0.17 #OCC version: 7.2.0 |
||
############################################################################################################################################### |
|||
# |
|||
#OS: Windows 10 (10.0) |
|||
#Word size of OS: 64-bit |
|||
#Word size of FreeCAD: 64-bit |
|||
#Version: 0.19.16624 (Git) |
|||
#Build type: Release |
|||
#Branch: master |
|||
#Hash: 222ae7305fdf1097e4ef3d050f69dff47dbd8786 |
|||
#Python version: 3.6.8 |
|||
#Qt version: 5.12.1 |
|||
#Coin version: 4.0.0a |
|||
#OCC version: 7.3.0 |
|||
############################################################################################################################################### |
|||
__title__ = "BoundingBox_Tracing" |
__title__ = "BoundingBox_Tracing" |
||
Line 60: | Line 78: | ||
__url__ = "http://www.freecadweb.org/index-fr.html" |
__url__ = "http://www.freecadweb.org/index-fr.html" |
||
__Wiki__ = "https://www.freecadweb.org/wiki/Macro_BoundingBox_Tracing" |
__Wiki__ = "https://www.freecadweb.org/wiki/Macro_BoundingBox_Tracing" |
||
__version__ = "0. |
__version__ = "0.11" |
||
__date__ = " |
__date__ = "2019/05/29" # YYYY/MM/DD |
||
import PySide |
|||
import FreeCAD, FreeCADGui, Draft, Part |
import FreeCAD, FreeCADGui, Draft, Part |
||
App = FreeCAD |
App = FreeCAD |
||
Line 77: | Line 96: | ||
if int(FreeCAD.Version()[1]) > 17: # Version de FreeCAD |
if int(FreeCAD.Version()[1]) > 17: # Version de FreeCAD |
||
DisplayModeText = str(u" |
DisplayModeText = str(u"3D text") # available : u"2D text" or u"3D text" |
||
else: |
else: |
||
DisplayModeText = str(u"Screen") # available : u"Screen" or u"World" |
DisplayModeText = str(u"Screen") # available : u"Screen" or u"World" |
||
JustificationText = "Center" # available : "Center" or "Left" or "Right" |
JustificationText = str(u"Center") # available : "Center" or "Left" or "Right" |
||
FontSizeText = 10.0 # text info dimension |
FontSizeText = 10.0 # text info dimension |
||
TextColorText_R = 0.0 # text color info red 1 = 255 |
TextColorText_R = 0.0 # text color info red 1 = 255 |
||
Line 144: | Line 163: | ||
boundBoxLZ = boundBox_.ZLength |
boundBoxLZ = boundBox_.ZLength |
||
nameLabel = sel[0].Label |
nameLabel = sel[0].Label |
||
⚫ | |||
try: |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
except Exception: |
|||
None |
|||
a = str(boundBox_) |
a = str(boundBox_) |
||
a,b = a.split('(') |
a,b = a.split('(') |
||
Line 168: | Line 191: | ||
App.Console.PrintMessage(str(boundBox_)+"\r\n") |
App.Console.PrintMessage(str(boundBox_)+"\r\n") |
||
App.Console.PrintMessage("Rectangle : "+str(boundBoxLX)+" x "+str(boundBoxLY)+" x "+str(boundBoxLZ)+"\r\n") |
App.Console.PrintMessage("Rectangle : "+str(boundBoxLX)+" x "+str(boundBoxLY)+" x "+str(boundBoxLZ)+"\r\n") |
||
⚫ | |||
if (createVol == 1) and (boundBoxLX > 0) and (boundBoxLY > 0) and (boundBoxLZ > 0): # Create Volume |
if (createVol == 1) and (boundBoxLX > 0) and (boundBoxLY > 0) and (boundBoxLZ > 0): # Create Volume |
||
BDvol = App.ActiveDocument.addObject("Part::Box",nameLabel + "_BoundBoxVolume") |
BDvol = App.ActiveDocument.addObject("Part::Box",nameLabel + "_BoundBoxVolume") |
||
Line 213: | Line 236: | ||
# else: |
# else: |
||
# App.Console.PrintMessage("Not Volume BoundBox possible"+"\r\n") |
# App.Console.PrintMessage("Not Volume BoundBox possible"+"\r\n") |
||
App.Console.PrintMessage("_____________________"+"\r\n") |
|||
App.Console.PrintMessage("_____________________"+"\n\n") |
|||
##### |
##### |
||
Line 411: | Line 434: | ||
else: |
else: |
||
App.Console.PrintMessage("Select an object !"+"\n") |
App.Console.PrintMessage("Select an object !"+"\n") |
||
}} |
}} |
||
===Options=== |
|||
To change the color or other options change the values lines 31 to 49 Section configuration |
|||
==Verze== |
|||
{{ExampleCode|example= |
|||
Version: 0.11 le Date: 2019/05/29: "nameLabel = str(unicodedata.normalize('NFKD', nameLabel).encode('ascii','ignore'))" instead "def()" |
|||
##### Section configuration begin ################## |
|||
##### for volume begin ################### |
|||
createVol = 1 # give 1 for create Volume # mettre a 1 pour creer un volume |
|||
createDimVol = 1 # 1 = create dimension info : 0 = not dimension info |
|||
##### for volume end ################### |
|||
##### for dimensions info begin ########## |
|||
createDim = 1 # 1 = create dimension info : 0 = not create dimension info |
|||
DisplayModeText = "Screen" # available : "Screen" or "World" |
|||
JustificationText = "Center" # available : "Center" or "Left" or "Right" |
|||
FontSizeText = 10.0 # 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 |
|||
arondi = 3 # round the info ex: 3 = 3 decimals |
|||
##### for dimensions info end ########## |
|||
##### Section configuration end #################### |
|||
}} |
|||
ver 0.10 le 2019/05/23 upgrade > 0.19 and supp the "éçà.." with def() not encode().... |
|||
==Version== |
|||
ver 0.9 le 2018-10-12: add test > 17 |
ver 0.9 le 2018-10-12: add test > 17 |
||
Line 457: | Line 455: | ||
ver 0.7 le 28/01/2018: correct error with label accent "nameLabel = unicodedata.normalize('NFKD', nameLabel).encode('ascii','ignore')" |
ver 0.7 le 28/01/2018: correct error with label accent "nameLabel = unicodedata.normalize('NFKD', nameLabel).encode('ascii','ignore')" |
||
ver 0.6 le 08/08/2017: |
ver 0.6 le 08/08/2017: přidat textovou kótu, kontejner pro obdélníky, obdélníky informací, objem informací, přidat barvu konfigurace oddílu, vybraný objekt štítku |
||
ver 0.5 le 08/05/2017 : upgrade now accept the "mesh" and "Points" thanks wmayer [http://forum.freecadweb.org/viewtopic.php?f=13&t=22331 Makro Bounding-Box für STL importierte Teile und für Punktewolken] |
ver 0.5 le 08/05/2017 : upgrade now accept the "mesh" and "Points" thanks wmayer [http://forum.freecadweb.org/viewtopic.php?f=13&t=22331 Makro Bounding-Box für STL importierte Teile und für Punktewolken] |
||
ver 0.4 le 04/06/2016 : test if value = 0 |
ver 0.4 le 04/06/2016 : test if value = 0 pak nevytvořte ohraničovací rámeček (ex: object Draft) |
Revision as of 09:50, 23 May 2020
Popis |
---|
Toto makro červené stopy (editovatelné) kolem BoundingBox se 6 obdélníky. Version macro : 0.11 Date last modification : 2019/05/29 FreeCAD version : All Download : ToolBar Icon Autor: Mario52 |
Autor |
Mario52 |
Download |
ToolBar Icon |
Odkazy |
Makro recepty| Jak nainstalovat makra Jak přizpůsobit panely nástrojů |
Verze |
0.11 |
Datum poslední úpravy |
2019/05/29 |
Verze FreeCAD |
All |
Výchozí zástupce |
None |
Viz též |
None |
Popis
Toto makro červené stopy (lze upravovat) kolem obrysů BoundingBox 6 se 6 obdélníky.
CenterFace
Použijte
Vyberte objekt a spusťte makro. 6 obdélníků jsou barevně červené (lze změnit)
Info contener
Pokud 'createVol' = 1 (řádek 33) vytvoří se jeden svazek
Ikona
Stáhněte obrázek obrázku a zkopírujte do repertoáru maker.
Klikněte na obrázek, v novém okně umístěte myš nad obrázek, klikněte pravým tlačítkem myši a proveďte "Uložit cíl jako ..."
Skript
Macro_BoundingBox_Tracing.FCMacro
# -*- coding: utf-8 -*- from __future__ import unicode_literals # cette macro trace en rouge (modifiable) le tour du boundingbox avec 6 rectangles # si "createVol" = 1 il sera cree un volume (rouge) de la dimension du BoundBox # this macro red trace (editable) around the BoundingBox with 6 rectangles # if "createVol" = 1 on volume (red) is created # Macro_BoundingBox_Tracing # #OS: Windows Vista #OS: Windows 8.1 #OS: Windows 10 #OS: Windows 10 #Platform: 32-bit #Word size of OS: 64-bit #Word size of OS: 64-bit #Word size of OS: 64-bit #Version: 0.14.3389 #Word size of FreeCAD: 64-bit #Word size of FreeCAD: 64-bit #Word size of FreeCAD: 64-bit #Python version: 2.6.2 #Version: 0.15.4671 (Git) #Version: 0.16.6700 (Git) #Version: 0.17.13528 (Git) #Qt version: 4.5.2 #Branch: releases/FreeCAD-0-15 #Build type: Release #Build type: Release #Coin version: 3.1.0 #Hash: 244b3aef360841646cbfe80a1b225c8b39c8380c #Branch: releases/FreeCAD-0-16 #Branch: releases/FreeCAD-0-17 #SoQt version: 1.4.1 #Python version: 2.7.8 #Hash: 7b925d11aa69ac405b423635adb1e2833f18a817 #Hash: 5c3f7bf8ec51e2c7187789f7edba71a7aa82a88b #OCC version: 6.5.1 #Qt version: 4.8.6 #Python version: 2.7.8 #Python version: 2.7.14 # #Coin version: 4.0.0a #Qt version: 4.8.6 #Qt version: 4.8.7 # #OCC version: 6.8.0.oce-0.17 #Coin version: 4.0.0a #Coin version: 4.0.0a # #OCC version: 6.8.0.oce-0.17 #OCC version: 7.2.0 ############################################################################################################################################### #OS: Windows 10 (10.0) #Word size of OS: 64-bit #Word size of FreeCAD: 64-bit #Version: 0.19.16624 (Git) #Build type: Release #Branch: master #Hash: 222ae7305fdf1097e4ef3d050f69dff47dbd8786 #Python version: 3.6.8 #Qt version: 5.12.1 #Coin version: 4.0.0a #OCC version: 7.3.0 ############################################################################################################################################### __title__ = "BoundingBox_Tracing" __author__ = "Mario52" __url__ = "http://www.freecadweb.org/index-fr.html" __Wiki__ = "https://www.freecadweb.org/wiki/Macro_BoundingBox_Tracing" __version__ = "0.11" __date__ = "2019/05/29" # YYYY/MM/DD import PySide import FreeCAD, FreeCADGui, Draft, Part App = FreeCAD ##### Section configuration begin ################## ##### for volume begin ################### createVol = 1 # give 1 for create Volume # mettre a 1 pour creer un volume createDimVol = 1 # 1 = create dimension info : 0 = not dimension info ##### for volume end ################### ##### for dimensions info begin ########## createDim = 1 # 1 = create dimension info : 0 = not create dimension info if int(FreeCAD.Version()[1]) > 17: # Version de FreeCAD DisplayModeText = str(u"3D text") # available : u"2D text" or u"3D text" else: DisplayModeText = str(u"Screen") # available : u"Screen" or u"World" JustificationText = str(u"Center") # available : "Center" or "Left" or "Right" FontSizeText = 10.0 # 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 arondi = 3 # round the info ex: 3 = 3 decimals ##### for dimensions info end ########## ##### Section configuration end #################### def objectRealPlacement3D(obj, mode = 0): # search the real Placement try: objectPlacement = obj.Shape.Placement objectPlacementBase = FreeCAD.Vector(objectPlacement.Base) #### if mode == 0: # Base objectWorkCenter = objectPlacementBase elif mode == 1: # BoundBox objectBoundBoxCenter = FreeCAD.Vector(obj.Shape.BoundBox.Center) objectWorkCenter = objectBoundBoxCenter elif mode == 2: # CenterOfMass objectCenterOfMass = FreeCAD.Vector(obj.Shape.CenterOfMass) objectWorkCenter = objectCenterOfMass #### if hasattr(obj, "getGlobalPlacement"): globalPlacement = obj.getGlobalPlacement() globalPlacementBase = FreeCAD.Vector(globalPlacement.Base) # objectRealPlacement3D = globalPlacementBase.add(objectWorkCenter).sub(objectPlacementBase)#ori objectRealPlacement3D = globalPlacementBase.sub(objectWorkCenter)# adapte pour BB else: objectRealPlacement3D = objectWorkCenter return objectRealPlacement3D except Exception: return FreeCAD.Vector(0.0, 0.0, 0.0) 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 try: # LineColor red = 1.0 # 1 = 255 green = 0.0 # blue = 0.0 # # boundBox boundBox_ = s.BoundBox boundBoxLX = boundBox_.XLength boundBoxLY = boundBox_.YLength boundBoxLZ = boundBox_.ZLength nameLabel = sel[0].Label try: import unicodedata nameLabel = str(unicodedata.normalize('NFKD', nameLabel).encode('ascii','ignore'))[2:] except Exception: None a = str(boundBox_) a,b = a.split('(') c = b.split(',') oripl_X = float(c[0]) oripl_Y = float(c[1]) oripl_Z = float(c[2]) try: if objs[0].getParentGeoFeatureGroup() == None: placementOrigine = FreeCAD.Vector(0.0, 0.0, 0.0) else: placementOrigine = objectRealPlacement3D(FreeCAD.ActiveDocument.getObject(objs[0].Name),0)# search the real Placement oripl_X += placementOrigine[0] oripl_Y += placementOrigine[1] oripl_Z += placementOrigine[2] except Exception: None App.Console.PrintMessage(str(boundBox_)+"\r\n") App.Console.PrintMessage("Rectangle : "+str(boundBoxLX)+" x "+str(boundBoxLY)+" x "+str(boundBoxLZ)+"\r\n") if (createVol == 1) and (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=App.Placement(App.Vector(oripl_X,oripl_Y,oripl_Z), App.Rotation(App.Vector(0,0,1),0), App.Vector(0,0,0)) FreeCADGui.ActiveDocument.getObject(BDvol.Name).LineColor = (red, green, blue) FreeCADGui.ActiveDocument.getObject(BDvol.Name).PointColor = (red, green, blue) FreeCADGui.ActiveDocument.getObject(BDvol.Name).ShapeColor = (red, green, blue) FreeCADGui.ActiveDocument.getObject(BDvol.Name).Transparency = 80 App.Console.PrintMessage(nameLabel + "_BoundBoxVolume : " + str(BDvol.Shape.Volume)+"\r\n") if createDimVol == 1: # section create dimension info for volume conteneurVol = [] del conteneurVol[:] conteneurVol = App.activeDocument().addObject("App::DocumentObjectGroup",nameLabel + "_BoundBoxVolume_Info") pl_0C1 = Draft.makeText([str(round(boundBoxLX,arondi))],point=FreeCAD.Vector(oripl_X + (boundBoxLX/2), oripl_Y, oripl_Z)) pl_0C1.ViewObject.DisplayMode = DisplayModeText pl_0C1.ViewObject.Justification = JustificationText pl_0C1.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B) pl_0C1.ViewObject.FontSize = FontSizeText pl_0C1.Label = nameLabel + "_Volume_X_" + str(round(boundBoxLX,arondi)) conteneurVol.addObject(pl_0C1) pl_0C2 = Draft.makeText([str(round(boundBoxLY,arondi))],point=FreeCAD.Vector(oripl_X, oripl_Y + (boundBoxLY/2), oripl_Z)) pl_0C2.ViewObject.DisplayMode = DisplayModeText pl_0C2.ViewObject.Justification = JustificationText pl_0C2.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B) pl_0C2.ViewObject.FontSize = FontSizeText pl_0C2.Label = nameLabel + "_Volume_Y_" + str(round(boundBoxLY,arondi)) conteneurVol.addObject(pl_0C2) pl_0C3 = Draft.makeText([str(round(boundBoxLZ,arondi))],point=FreeCAD.Vector(oripl_X, oripl_Y, oripl_Z + (boundBoxLZ/2))) pl_0C3.ViewObject.DisplayMode = DisplayModeText pl_0C3.ViewObject.Justification = JustificationText pl_0C3.ViewObject.TextColor = (TextColorText_R, TextColorText_G, TextColorText_B) pl_0C3.ViewObject.FontSize = FontSizeText pl_0C3.Label = nameLabel + "_Volume_Z_" + str(round(boundBoxLZ,arondi)) conteneurVol.addObject(pl_0C3) # else: # App.Console.PrintMessage("Not Volume BoundBox possible"+"\r\n") App.Console.PrintMessage("_____________________"+"\r\n") ##### conteneurRectangle = [] del conteneurRectangle[:] conteneurRectangle = App.activeDocument().addObject("App::DocumentObjectGroup",nameLabel + "_BoundBoxRectangle") if createDim == 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)) double = Draft.makeRectangle(length=boundBoxLX,height=boundBoxLY,placement=pl_0,face=False,support=None) #OK double.Label = nameLabel + "_BoundBoxRectangle_Bo" FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue) conteneurRectangle.addObject(double) # else: # App.Console.PrintError("not value 0"+"\n") if createDim == 1: # section create dimension info pl_0C1 = Draft.makeText([str(round(boundBoxLX,arondi))],point=FreeCAD.Vector(pl_0.Base.x + (boundBoxLX/2), pl_0.Base.y, pl_0.Base.z)) pl_0C1.ViewObject.DisplayMode = DisplayModeText pl_0C1.ViewObject.Justification = JustificationText 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,arondi)) conteneurInfo.addObject(pl_0C1) pl_0C2 = Draft.makeText([str(round(boundBoxLY,arondi))],point=FreeCAD.Vector(pl_0.Base.x, pl_0.Base.y + (boundBoxLY/2), pl_0.Base.z)) pl_0C2.ViewObject.DisplayMode = DisplayModeText pl_0C2.ViewObject.Justification = JustificationText 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,arondi)) conteneurInfo.addObject(pl_0C2) except: App.Console.PrintError("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)) double = Draft.makeRectangle(length=boundBoxLX,height=boundBoxLY,placement=pl_1,face=False,support=None) #Ok double.Label = nameLabel + "_BoundBoxRectangle_To" FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue) conteneurRectangle.addObject(double) # else: # App.Console.PrintError("not value 1"+"\n") if createDim == 1: # section create dimension info pl_0C1 = Draft.makeText([str(round(boundBoxLX,arondi))],point=FreeCAD.Vector(pl_1.Base.x + (boundBoxLX/2), pl_1.Base.y, pl_1.Base.z)) pl_0C1.ViewObject.DisplayMode = DisplayModeText pl_0C1.ViewObject.Justification = JustificationText 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,arondi)) conteneurInfo.addObject(pl_0C1) pl_0C2 = Draft.makeText([str(round(boundBoxLY,arondi))],point=FreeCAD.Vector(pl_1.Base.x, pl_1.Base.y + (boundBoxLY/2), pl_1.Base.z)) pl_0C2.ViewObject.DisplayMode = DisplayModeText pl_0C2.ViewObject.Justification = JustificationText 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,arondi)) conteneurInfo.addObject(pl_0C2) except: App.Console.PrintError("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)) double = Draft.makeRectangle(length=boundBoxLX,height=boundBoxLZ,placement=pl_2,face=False,support=None) #Ok double.Label = nameLabel + "_BoundBoxRectangle_Fr" FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue) conteneurRectangle.addObject(double) # else: # App.Console.PrintError("not value 2"+"\n") if createDim == 1: # section create dimension info pl_0C1 = Draft.makeText([str(round(boundBoxLX,arondi))],point=FreeCAD.Vector(pl_2.Base.x + (boundBoxLX/2), pl_2.Base.y, pl_2.Base.z)) pl_0C1.ViewObject.DisplayMode = DisplayModeText pl_0C1.ViewObject.Justification = JustificationText 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,arondi)) conteneurInfo.addObject(pl_0C1) pl_0C2 = Draft.makeText([str(round(boundBoxLZ,arondi))],point=FreeCAD.Vector(pl_2.Base.x, pl_2.Base.y, pl_2.Base.z + (boundBoxLZ/2))) pl_0C2.ViewObject.DisplayMode = DisplayModeText pl_0C2.ViewObject.Justification = JustificationText 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,arondi)) conteneurInfo.addObject(pl_0C2) except: App.Console.PrintError("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)) double = Draft.makeRectangle(length=boundBoxLX,height=boundBoxLZ,placement=pl_3,face=False,support=None) #Ok double.Label = nameLabel + "_BoundBoxRectangle_Re" FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue) conteneurRectangle.addObject(double) # else: # App.Console.PrintError("not value 3"+"\n") if createDim == 1: # section create dimension info pl_0C1 = Draft.makeText([str(round(boundBoxLX,arondi))],point=FreeCAD.Vector(pl_3.Base.x + (boundBoxLX/2), pl_3.Base.y, pl_3.Base.z)) pl_0C1.ViewObject.DisplayMode = DisplayModeText pl_0C1.ViewObject.Justification = JustificationText 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,arondi)) conteneurInfo.addObject(pl_0C1) pl_0C2 = Draft.makeText([str(round(boundBoxLZ,arondi))],point=FreeCAD.Vector(pl_3.Base.x, pl_3.Base.y, pl_3.Base.z + (boundBoxLZ/2))) pl_0C2.ViewObject.DisplayMode = DisplayModeText pl_0C2.ViewObject.Justification = JustificationText 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,arondi)) conteneurInfo.addObject(pl_0C2) except: App.Console.PrintError("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)) double = Draft.makeRectangle(length=boundBoxLY,height=boundBoxLZ,placement=pl_4,face=False,support=None) #Ok double.Label = nameLabel + "_BoundBoxRectangle_Le" FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue) conteneurRectangle.addObject(double) # else: # App.Console.PrintError("not value 4"+"\n") if createDim == 1: # section create dimension info pl_0C1 = Draft.makeText([str(round(boundBoxLY,arondi))],point=FreeCAD.Vector(pl_4.Base.x, pl_4.Base.y + (boundBoxLY/2), pl_4.Base.z)) pl_0C1.ViewObject.DisplayMode = DisplayModeText pl_0C1.ViewObject.Justification = JustificationText 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,arondi)) conteneurInfo.addObject(pl_0C1) pl_0C2 = Draft.makeText([str(round(boundBoxLZ,arondi))],point=FreeCAD.Vector(pl_4.Base.x, pl_4.Base.y, pl_4.Base.z + (boundBoxLZ/2))) pl_0C2.ViewObject.DisplayMode = DisplayModeText pl_0C2.ViewObject.Justification = JustificationText 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,arondi)) conteneurInfo.addObject(pl_0C2) except: App.Console.PrintError("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)) double = Draft.makeRectangle(length=boundBoxLY,height=boundBoxLZ,placement=pl_5,face=False,support=None) #Ok double.Label = nameLabel + "_BoundBoxRectangle_Ri" FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue) conteneurRectangle.addObject(double) # else: # App.Console.PrintError("not value 5"+"\n") if createDim == 1: # section create dimension info pl_0C1 = Draft.makeText([str(round(boundBoxLY,arondi))],point=FreeCAD.Vector(pl_5.Base.x, pl_5.Base.y + (boundBoxLY/2), pl_5.Base.z)) pl_0C1.ViewObject.DisplayMode = DisplayModeText pl_0C1.ViewObject.Justification = JustificationText 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,arondi)) conteneurInfo.addObject(pl_0C1) pl_0C2 = Draft.makeText([str(round(boundBoxLZ,arondi))],point=FreeCAD.Vector(pl_5.Base.x, pl_5.Base.y, pl_5.Base.z + (boundBoxLZ/2))) pl_0C2.ViewObject.DisplayMode = DisplayModeText pl_0C2.ViewObject.Justification = JustificationText 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,arondi)) conteneurInfo.addObject(pl_0C2) except: App.Console.PrintError("not done 5"+"\n") ##### App.ActiveDocument.recompute() except Exception: App.Console.PrintError("Bad selection"+"\n") else: App.Console.PrintMessage("Select an object !"+"\n")
Verze
Version: 0.11 le Date: 2019/05/29: "nameLabel = str(unicodedata.normalize('NFKD', nameLabel).encode('ascii','ignore'))" instead "def()"
ver 0.10 le 2019/05/23 upgrade > 0.19 and supp the "éçà.." with def() not encode()....
ver 0.9 le 2018-10-12: add test > 17
if int(FreeCAD.Version()[1]) > 17: # Version de FreeCAD
DisplayModeText = str(u"2D text") # available : u"2D text" or u"3D text"
else:
DisplayModeText = str(u"Screen") # available : u"Screen" or u"World"
ver 0.8 le 05/10/2018: upgrade the ver 0.8 compatible with FC 0.17 (getGlobalPlacement)
ver 0.7 le 28/01/2018: correct error with label accent "nameLabel = unicodedata.normalize('NFKD', nameLabel).encode('ascii','ignore')"
ver 0.6 le 08/08/2017: přidat textovou kótu, kontejner pro obdélníky, obdélníky informací, objem informací, přidat barvu konfigurace oddílu, vybraný objekt štítku
ver 0.5 le 08/05/2017 : upgrade now accept the "mesh" and "Points" thanks wmayer Makro Bounding-Box für STL importierte Teile und für Punktewolken
ver 0.4 le 04/06/2016 : test if value = 0 pak nevytvořte ohraničovací rámeček (ex: object Draft)