Macro BoundingBox Tracing/fr: Difference between revisions
(Updating to match new version of source page) |
mNo edit summary |
||
Line 1: | Line 1: | ||
{{Macro/fr|Icon=BoundBoxTracing|Name=Macro BoundingBox Tracing|Name/fr=Macro_BoundingBox_Tracing|Description=Cette macro trace 6 rectangles représentant le BoundingBox de l'objet sélectionné (1 rectangle par face).|Author=Mario52|Version=0. |
{{Macro/fr|Icon=BoundBoxTracing|Name=Macro BoundingBox Tracing|Name/fr=Macro_BoundingBox_Tracing|Description=Cette macro trace 6 rectangles représentant le BoundingBox de l'objet sélectionné (1 rectangle par face).|Author=Mario52|Version=0.6 (08/08/2017)}} |
||
==Description== |
==Description== |
||
Line 11: | Line 11: | ||
La couleur peut être changée dans la macro. |
La couleur peut être changée dans la macro. |
||
[[File:Macro_BoundingBox_Tracing_01.png|480px|Info contener]] |
|||
{{clear}} |
|||
Si '''createVol''' = 1 (Line 29) un volume est crée |
Si '''createVol''' = 1 (Line 29) un volume est crée |
||
Line 16: | Line 19: | ||
Pour changer la couleur des lignes modifiez le nombre aux lignes 37, 38, 39 |
Pour changer la couleur des lignes modifiez le nombre aux lignes 37, 38, 39 |
||
<!--T:11--> |
<!--T:11--> |
||
{{ExampleCode|example= |
|||
{{Code|code= |
|||
##### Section configuration begin ################## |
|||
red = 1.0 # 1 = 255 |
|||
##### for volume begin ################### |
|||
green = 0.0 # |
|||
createVol = 1 # give 1 for create Volume # mettre a 1 pour creer un volume |
|||
blue = 0.0 # |
|||
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 #################### |
|||
}} |
}} |
||
==Icône== |
==Icône== |
||
Line 55: | Line 75: | ||
__author__ = "Mario52" |
__author__ = "Mario52" |
||
__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" |
|||
__version__ = "0.5" |
|||
__version__ = "0.6" |
|||
__date__ = "08/05/2017" |
|||
__date__ = "08/08/2017" |
|||
import FreeCAD, FreeCADGui, Draft, Part |
import FreeCAD, FreeCADGui, Draft, Part |
||
App = FreeCAD |
App = FreeCAD |
||
##### Section configuration begin ################## |
|||
createVol = 0 # give 1 for create Volume # mettre a 1 pour creer un volume |
|||
##### 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 #################### |
|||
sel = FreeCADGui.Selection.getSelection() |
|||
selEx = FreeCADGui.Selection.getSelectionEx() |
selEx = FreeCADGui.Selection.getSelectionEx() |
||
objs = [selobj.Object for selobj in selEx] |
objs = [selobj.Object for selobj in selEx] |
||
if len(objs) >= 1: |
if len(objs) >= 1: |
||
if hasattr(objs[0], "Shape"): |
if hasattr(objs[0], "Shape"): |
||
Line 73: | Line 115: | ||
s = objs[0].Points |
s = objs[0].Points |
||
# 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 |
|||
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]) |
|||
App.Console.PrintMessage(str(boundBox_)+"\r\n") |
|||
App.Console.PrintMessage("Rectangle : "+str(boundBox_.XLength)+" x "+str(boundBox_.YLength)+" x "+str(boundBox_.ZLength)+"\r\n") |
|||
if (createVol == 1) and (boundBoxLX > 0) and (boundBoxLY > 0) and (boundBoxLZ > 0): # Create Volume |
|||
BDvol = App.ActiveDocument.addObject("Part::Box","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("BoundBoxVolume : " + str(BDvol.Shape.Volume)+"\r\n") |
|||
else: |
|||
App.Console.PrintMessage("Not BoundBox possible"+"\r\n") |
|||
App.Console.PrintMessage("_____________________"+"\r\n") |
|||
##### |
|||
try: |
|||
if (boundBox_.XLength and boundBox_.YLength) > 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=boundBox_.XLength,height=boundBox_.YLength,placement=pl_0,face=False,support=None) #OK |
|||
double.Label = "BoundBoxRectangle_Bo" |
|||
FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue) |
|||
# else: |
|||
# App.Console.PrintError("not value 0"+"\n") |
|||
except: |
|||
App.Console.PrintError("not done 0"+"\n") |
|||
try: |
|||
if (boundBox_.XLength and boundBox_.YLength) > 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=boundBox_.XLength,height=boundBox_.YLength,placement=pl_1,face=False,support=None) #Ok |
|||
double.Label = "BoundBoxRectangle_To" |
|||
FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue) |
|||
# else: |
|||
# App.Console.PrintError("not value 1"+"\n") |
|||
except: |
|||
App.Console.PrintError("not done 1"+"\n") |
|||
try: |
|||
if (boundBox_.XLength and boundBox_.ZLength) > 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=boundBox_.XLength,height=boundBox_.ZLength,placement=pl_2,face=False,support=None) #Ok |
|||
double.Label = "BoundBoxRectangle_Fr" |
|||
FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue) |
|||
# else: |
|||
# App.Console.PrintError("not value 2"+"\n") |
|||
except: |
|||
App.Console.PrintError("not done 2"+"\n") |
|||
try: |
try: |
||
# LineColor |
|||
if (boundBox_.XLength and boundBox_.ZLength) > 0.0: |
|||
red = 1.0 # 1 = 255 |
|||
pl_3 = App.Placement(App.Vector(oripl_X,oripl_Y+boundBoxLY,oripl_Z), App.Rotation(0.0,0.0,90)) |
|||
green = 0.0 # |
|||
double = Draft.makeRectangle(length=boundBox_.XLength,height=boundBox_.ZLength,placement=pl_3,face=False,support=None) #Ok |
|||
blue = 0.0 # |
|||
FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue) |
|||
# boundBox |
|||
boundBox_ = s.BoundBox |
|||
# App.Console.PrintError("not value 3"+"\n") |
|||
boundBoxLX = boundBox_.XLength |
|||
except: |
|||
boundBoxLY = boundBox_.YLength |
|||
App.Console.PrintError("not done 3"+"\n") |
|||
boundBoxLZ = boundBox_.ZLength |
|||
try: |
|||
nameLabel = sel[0].Label |
|||
if (boundBoxLY and boundBox_.ZLength) > 0.0: |
|||
pl_4 = App.Placement(App.Vector(oripl_X,oripl_Y,oripl_Z), App.Rotation(90,0.0,90)) |
|||
a = str(boundBox_) |
|||
double = Draft.makeRectangle(length=boundBoxLY,height=boundBox_.ZLength,placement=pl_4,face=False,support=None) #Ok |
|||
a,b = a.split('(') |
|||
c = b.split(',') |
|||
FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue) |
|||
oripl_X = float(c[0]) |
|||
oripl_Y = float(c[1]) |
|||
# App.Console.PrintError("not value 4"+"\n") |
|||
oripl_Z = float(c[2]) |
|||
except: |
|||
App.Console.PrintError("not done 4"+"\n") |
|||
App.Console.PrintMessage(str(boundBox_)+"\r\n") |
|||
try: |
|||
App.Console.PrintMessage("Rectangle : "+str(boundBoxLX)+" x "+str(boundBoxLY)+" x "+str(boundBoxLZ)+"\r\n") |
|||
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)) |
|||
if (createVol == 1) and (boundBoxLX > 0) and (boundBoxLY > 0) and (boundBoxLZ > 0): # Create Volume |
|||
BDvol = App.ActiveDocument.addObject("Part::Box",nameLabel + "_BoundBoxVolume") |
|||
double.Label = "BoundBoxRectangle_Ri" |
|||
#BDvol.Label = "BoundBoxVolume" |
|||
FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue) |
|||
BDvol.Length.Value = boundBoxLX |
|||
# else: |
|||
BDvol.Width.Value = boundBoxLY |
|||
BDvol.Height.Value = boundBoxLZ |
|||
except: |
|||
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)) |
|||
App.Console.PrintError("not done 5"+"\n") |
|||
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 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: |
else: |
||
App.Console.PrintMessage("Select an object !"+"\n") |
App.Console.PrintMessage("Select an object !"+"\n") |
||
Line 180: | Line 379: | ||
ver 0.5 le 08/05/2017 : upgrade maintenant accepte le "mesh" et "Points" merci 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 maintenant accepte le "mesh" et "Points" merci 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 si une valeur = 0 alors ne crée pas de boundbox (ex: objet Draft) |
ver 0.4 le 04/06/2016 : test si une valeur = 0 alors ne crée pas de boundbox (ex: objet Draft) |
Revision as of 12:52, 8 August 2017
File:BoundBoxTracing Macro BoundingBox Tracing |
Description |
---|
Cette macro trace 6 rectangles représentant le BoundingBox de l'objet sélectionné (1 rectangle par face). Version macro : 0.6 (08/08/2017) Auteur: Mario52 |
Auteur |
Mario52 |
Téléchargement |
None |
Liens |
Page des macros Comment installer une macro Comment créer une barre d'outils |
Version Macro |
0.6 (08/08/2017) |
Dernière modification |
None |
Version(s) FreeCAD |
None |
Raccourci clavier |
None |
Voir aussi |
None |
Description
Cette macro trace 6 rectangles représentant le BoundingBox de l'objet sélectionné (1 rectangle par face).
Utilisation
Sélectionnez l'objet et lancez la macro. 6 rectangles de couleur rouge seront tracés représentants le BoundingBox de l'objet.
La couleur peut être changée dans la macro.
Si createVol = 1 (Line 29) un volume est crée
Pour changer la couleur des lignes modifiez le nombre aux lignes 37, 38, 39
##exampleCode## ##### 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 ####################
Icône
télechargez l'image et copiez la dans votre répertoire des macros
Positionnez vous sur l'image puis cliquez sur la bouton droit, dans la nouvelle fenêtre, choisissez "Enregistrez l'image sous ..."
Macro
Macro_BoundingBox_Tracing.FCMacro
# -*- coding: utf-8 -*-
# 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
#Platform: 32-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
#Python version: 2.6.2 #Version: 0.15.4671 (Git) #Version: 0.16.6700 (Git)
#Qt version: 4.5.2 #Branch: releases/FreeCAD-0-15 #Build type: Release
#Coin version: 3.1.0 #Hash: 244b3aef360841646cbfe80a1b225c8b39c8380c #Branch: releases/FreeCAD-0-16
#SoQt version: 1.4.1 #Python version: 2.7.8 #Hash: 7b925d11aa69ac405b423635adb1e2833f18a817
#OCC version: 6.5.1 #Qt version: 4.8.6 #Python version: 2.7.8
# #Coin version: 4.0.0a #Qt version: 4.8.6
# #OCC version: 6.8.0.oce-0.17 #Coin version: 4.0.0a
#OCC version: 6.8.0.oce-0.17
__title__ = "BoundingBox_Tracing"
__author__ = "Mario52"
__url__ = "http://www.freecadweb.org/index-fr.html"
__Wiki__ = "https://www.freecadweb.org/wiki/Macro_BoundingBox_Tracing"
__version__ = "0.6"
__date__ = "08/08/2017"
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
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 ####################
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
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])
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 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")
Version
ver 0.5 le 08/05/2017 : upgrade maintenant accepte le "mesh" et "Points" merci wmayer 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 Makro Bounding-Box für STL importierte Teile und für Punktewolken
ver 0.4 le 04/06/2016 : test si une valeur = 0 alors ne crée pas de boundbox (ex: objet Draft)