Macro BoundingBox Tracing

From FreeCAD Documentation
Revision as of 20:09, 30 January 2015 by FuzzyBot (talk | contribs) (Updating to match new version of source page)

File:Text-x-python Macro BoundingBox Tracing

Popis
This macro red trace (editable) around the BoundingBox with 6 rectangles.

Autor: Mario52
Autor
Mario52
Download
None
Odkazy
Verze
1.0
Datum poslední úpravy
None
Verze FreeCAD
None
Výchozí zástupce
None
Viz též
None

Description

This macro red trace (editable) around the BoundingBox 6 Faces with 6 rectangles.

CenterFace

Use

Select the object and launch the macro. 6 rectangles are colored red (can be changed)

To change the color of the dot change the lines 42, 43, 44

    red   = 1.0  # 1 = 255
    green = 0.0  #
    blue  = 0.0  #

Icon

Download the file image and copy in your macro repertory.

Click the image, in the new window position the mouse over the image, click the right mouse and do "Save target as ..."

Button

Macro

Macro_BoundingBox_Tracing.FCMacro

# -*- coding: utf-8 -*-
# cette macro trace en rouge (modifiable) le tour du boundingbox avec 6 rectangles
# this macro red trace (editable) around the BoundingBox with 6 rectangles
# To change the color of the dot change the lines 42, 43, 44
# red   = 1.0  # 1 = 255
# green = 0.0  #
# blue  = 0.0  #
# Macro_BoundingBox_Tracing
# ver 0.2
# Mario52
#
#OS: Windows Vista
#Platform: 32-bit
#Version: 0.14.3389
#Python version: 2.6.2
#Qt version: 4.5.2
#Coin version: 3.1.0
#SoQt version: 1.4.1
#OCC version: 6.5.1

import FreeCAD, FreeCADGui, Draft, Part

selEx = FreeCADGui.Selection.getSelectionEx()
objs = [selobj.Object for selobj in selEx]
if len(objs) >= 1:
    s = objs[0].Shape

    # 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")
    App.Console.PrintMessage("_____________________"+"\r\n")

    # LineColor
    red   = 1.0  # 1 = 255
    green = 0.0  #
    blue  = 0.0  #

    #####
    try:
        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
        FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue)
    except:
        App.Console.PrintError("not done 0"+"\n")
    try:
        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
        FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue)
    except:
        App.Console.PrintError("not done 1"+"\n")
    try:
        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
        FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue)
    except:
        App.Console.PrintError("not done 2"+"\n")
    try:
        pl_3 = App.Placement(App.Vector(oripl_X,oripl_Y+boundBoxLY,oripl_Z), App.Rotation(0.0,0.0,90))
        double = Draft.makeRectangle(length=boundBox_.XLength,height=boundBox_.ZLength,placement=pl_3,face=False,support=None) #Ok
        FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue)
    except:
        App.Console.PrintError("not done 3"+"\n")
    try:
        pl_4 = App.Placement(App.Vector(oripl_X,oripl_Y,oripl_Z), App.Rotation(90,0.0,90))
        double = Draft.makeRectangle(length=boundBoxLY,height=boundBox_.ZLength,placement=pl_4,face=False,support=None) #Ok
        FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue)
    except:
        App.Console.PrintError("not done 4"+"\n")
    try:
        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
        FreeCADGui.activeDocument().activeObject().LineColor = (red, green, blue)
    except:
        App.Console.PrintError("not done 5"+"\n")
    #####
    App.ActiveDocument.recompute()
else:
    App.Console.PrintMessage("Select an object !"+"\n")