Macro CenterFace/cs: Difference between revisions

From FreeCAD Documentation
mNo edit summary
(Updating to match new version of source page)
(15 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
{{Macro/cs|Icon=Text-x-python|Name=Macro CenterFace|Name/cs=Macro CenterFace|Description=This macro red trace (editable) the center face (mass) with 1 point and print the coordinates.|Author=Mario52|Version=0.1|Date=29/04/2014}}
{{Macro/cs
|Name=Macro CenterFace
|Translate=Macro CenterFace
|Description=This macro red trace (editable) the center face (mass) with 1 point and print the coordinates.
|Author=Mario52
|Version=0.1
|Date=2014-04-29
}}


==Description==
==Popis==
Toto makro červené stopy (lze upravovat) středovou plochu (hmotnost) s 1 bodem a vytisknout souřadnice.
This macro red trace (editable) the center face (mass) with 1 point and print the coordinates.


[[File:Macro_CenterFace_00.png|480px]]
{{Caption|CenterFace}}


<div class="mw-translate-fuzzy">
[[File:Macro_CenterFace_00.png|480px|CenterFace]]
==Použijte==
{{clear}}
Vyberte jednu tvář a spusťte makro. 1 bod na obličej je barevně červený (lze jej změnit).
</div>


Chcete-li změnit barvu bodu, změňte řádky 36, 37, 38
==Use==
Select one face and launch the macro. 1 point to face are coloured red (can be changed).


red = 1.0 # 1 = 255
To change the color of the dot change the lines 36, 37, 38
{{Code|code=
red = 1.0 # 1 = 255
green = 0.0 #
blue = 0.0 #
}}
The center of the face (mass) surface and the XYZ coordinates of the face are displayed in the report view.


green = 0.0 #
==Icone==
Download the file image and copy in your macro repertory.


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

Střed plochy obličeje (hmotnost) a souřadnice XYZ obličeje jsou zobrazeny v zobrazení sestavy.

== Icone ==
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 ..."


[[File:CenterFace.png|Button]]
[[File:CenterFace.png|Button]]


==Script==
==Skript==

'''Macro_CenterFace.FCMacro'''
'''Macro_CenterFace.FCMacro'''


{{Code|code=
{{MacroCode|code=
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
# 29/04/2014
# select a face launch and list the center coordinate XYZ of face
# To change the color of the dot change the lines 36, 37, 38
# red = 1.0 # 1 = 255
# green = 0.0 #
# blue = 0.0 #
# Macro_CenterFace
# Mario52


#OS: Windows Vista
#OS: Windows Vista #OS: Windows 10
#Platform: 32-bit
#Platform: 32-bit #Word size of OS: 64-bit
#Version: 0.14.3389
#Version: 0.14.3389 #Word size of FreeCAD: 64-bit
#Python version: 2.6.2
#Python version: 2.6.2 #Version: 0.17.13528 (Git)
#Qt version: 4.5.2
#Qt version: 4.5.2 #Build type: Release
#Coin version: 3.1.0
#Coin version: 3.1.0 #Branch: releases/FreeCAD-0-17
#SoQt version: 1.4.1
#SoQt version: 1.4.1 #Hash: 5c3f7bf8ec51e2c7187789f7edba71a7aa82a88b
#OCC version: 6.5.1
#OCC version: 6.5.1 #Python version: 2.7.14
#Qt version: 4.8.7
#Coin version: 4.0.0a
#OCC version: 7.2.0

# 29/04/2014, 07/10/2018
__title__ = "Macro_CenterFace"
__author__ = "Mario52"
__url__ = "http://www.freecadweb.org/index-fr.html"
__Wiki__ = "https://www.freecadweb.org/wiki/Macro_CenterFace"
__version__ = "00.02"
__date__ = "07/10/2018"
__Comment__ = "select a face launch and list the center coordinate XYZ of face"


import FreeCAD, FreeCADGui, Draft, Part
import FreeCAD, FreeCADGui, Draft, Part


def objectRealPlacement3D(obj): # search the real Placement
try:
try:
sel = FreeCADGui.Selection.getSelection() # get the selection
objectPlacement = obj.Shape.Placement
sh = sel[0].Shape # seletion of the first element
objectPlacementBase = FreeCAD.Vector(objectPlacement.Base)


####
App.Console.PrintMessage("Label : "+ str(sel[0].Label)+"\n") # extract the Label
objectWorkCenter = objectPlacementBase
####
if hasattr(obj, "getGlobalPlacement"):
globalPlacement = obj.getGlobalPlacement()
globalPlacementBase = FreeCAD.Vector(globalPlacement.Base)
####
objectRealPlacement3D = globalPlacementBase.sub(objectWorkCenter)#mode=0 adapte pour BBox + Centerpoints
####
else:
objectRealPlacement3D = objectWorkCenter
return objectRealPlacement3D
except Exception:
return FreeCAD.Vector(0.0, 0.0, 0.0)


try:
sel = FreeCADGui.Selection.getSelection() # get the selection
sh = sel[0] # seletion of the first element
App.Console.PrintMessage( "__Begin__________"+"\n")
import unicodedata
nameLabel = unicodedata.normalize('NFKD', sh.Label).encode('ascii','ignore')
App.Console.PrintMessage("Label : "+ str(nameLabel)+"\n") # extract the Label
App.Console.PrintMessage("Name : "+ str(sel[0].Name) +"\n") # extract the Name
App.Console.PrintMessage("Name : "+ str(sel[0].Name) +"\n") # extract the Name
except:
except:
App.Console.PrintError( "select a face"+"\n")
App.Console.PrintError( "Select a face"+"\n")



try:
try:
SubElement = FreeCADGui.Selection.getSelectionEx()# "getSelectionEx" Used for selecting subobjects
SubElement = FreeCADGui.Selection.getSelectionEx()# "getSelectionEx" Used for selecting subobjects
element_ = SubElement[0].SubElementNames[0] # seletion of the first element
element_ = SubElement[0].SubElementNames[0] # seletion of the first element

# print element_
#print element_
# print sh.Faces
#print sh.Faces

# LineColor
# LineColor
red = 1.0 # 1 = 255
red = 1.0 # 1 = 255
Line 73: Line 113:
blue = 0.0 #
blue = 0.0 #


for i in range(len(sh.Faces)): # list and extract the data
for i in range(len(sh.Shape.Faces)): # list and extract the data
App.Console.PrintMessage( "Center Face "+str(i)+" "+str(sh.Faces[i].CenterOfMass)+"\n") # Vector center mass to face
# print "X : ",sh.Faces[i].CenterOfMass.x # Coord. X center mass to face
# print "Y : ",sh.Faces[i].CenterOfMass.y # Coord. Y center mass to face
# print "Z : ",sh.Faces[i].CenterOfMass.z # Coord. Z center mass to face
Draft.makePoint(sh.Faces[i].CenterOfMass.x,sh.Faces[i].CenterOfMass.y,sh.Faces[i].CenterOfMass.z) # create a point
FreeCADGui.activeDocument().activeObject().PointColor = (red, green, blue)


oripl_X = sh.Shape.Faces[i].CenterOfMass.x
oripl_Y = sh.Shape.Faces[i].CenterOfMass.y
oripl_Z = sh.Shape.Faces[i].CenterOfMass.z
placementOrigine = objectRealPlacement3D( sh )
oripl_X += placementOrigine[0]
oripl_Y += placementOrigine[1]
oripl_Z += placementOrigine[2]

App.Console.PrintMessage( "Center Face "+str(i)+" : "+str(sh.Shape.Faces[i].CenterOfMass)+"\n") # Vector center mass to face
App.Console.PrintMessage( "GlobalPlacement : "+str(placementOrigine)+"\n") # Vector center mass to face
Draft.makePoint(oripl_X, oripl_Y, oripl_Z) # create a point
FreeCADGui.activeDocument().activeObject().PointColor = (red, green, blue)
App.Console.PrintMessage( " Surface : "+str(sel[0].Shape.Faces[i-1].Area)+"\n")
App.Console.PrintMessage( " Surface : "+str(sel[0].Shape.Faces[i-1].Area)+"\n")
fco = 0
fco = 0
Line 88: Line 135:


except:
except:
App.Console.PrintError( "select a face *"+"\n")
App.Console.PrintError( "Select a face *"+"\n")
App.Console.PrintMessage( "__End____________"+"\n")



}}
}}


==Verze==

ver 0.2 07/10/2018 : upgrade for FC 017 "getGlobalPlacement"

ver 0.1 29/04/2014


{{clear}}
{{clear}}
<languages/>

Revision as of 09:53, 23 May 2020

Other languages:

Generická ikona makra. Vytvořte svou vlastní ikonu se stejným názvem makra Macro CenterFace

Popis
This macro red trace (editable) the center face (mass) with 1 point and print the coordinates.

Version macro : 0.1
Date last modification : 2014-04-29
Autor: Mario52
Autor
Mario52
Download
None
Odkazy
Verze
0.1
Datum poslední úpravy
2014-04-29
Verze FreeCAD
None
Výchozí zástupce
None
Viz též
None

Popis

Toto makro červené stopy (lze upravovat) středovou plochu (hmotnost) s 1 bodem a vytisknout souřadnice.

CenterFace

Použijte

Vyberte jednu tvář a spusťte makro. 1 bod na obličej je barevně červený (lze jej změnit).

Chcete-li změnit barvu bodu, změňte řádky 36, 37, 38

red = 1.0 # 1 = 255

green = 0.0 #

blue = 0.0 #

Střed plochy obličeje (hmotnost) a souřadnice XYZ obličeje jsou zobrazeny v zobrazení sestavy.

Icone

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 ..."

Button

Skript

Macro_CenterFace.FCMacro

# -*- coding: utf-8 -*-

#OS: Windows Vista     #OS: Windows 10
#Platform: 32-bit      #Word size of OS: 64-bit
#Version: 0.14.3389    #Word size of FreeCAD: 64-bit
#Python version: 2.6.2 #Version: 0.17.13528 (Git)
#Qt version: 4.5.2     #Build type: Release
#Coin version: 3.1.0   #Branch: releases/FreeCAD-0-17
#SoQt version: 1.4.1   #Hash: 5c3f7bf8ec51e2c7187789f7edba71a7aa82a88b
#OCC version: 6.5.1    #Python version: 2.7.14
                       #Qt version: 4.8.7
                       #Coin version: 4.0.0a
                       #OCC version: 7.2.0

# 29/04/2014, 07/10/2018
__title__   = "Macro_CenterFace"
__author__  = "Mario52"
__url__     = "http://www.freecadweb.org/index-fr.html"
__Wiki__    = "https://www.freecadweb.org/wiki/Macro_CenterFace"
__version__ = "00.02"
__date__    = "07/10/2018"
__Comment__ = "select a face launch and list the center coordinate XYZ of face"

import FreeCAD, FreeCADGui, Draft, Part

def objectRealPlacement3D(obj):    # search the real Placement
    try:
        objectPlacement      = obj.Shape.Placement
        objectPlacementBase  = FreeCAD.Vector(objectPlacement.Base)

        #### 
        objectWorkCenter     = objectPlacementBase
        ####
        
        if hasattr(obj, "getGlobalPlacement"):
            globalPlacement       = obj.getGlobalPlacement()
            globalPlacementBase   = FreeCAD.Vector(globalPlacement.Base)
            ####
            objectRealPlacement3D = globalPlacementBase.sub(objectWorkCenter)#mode=0 adapte pour BBox + Centerpoints
            ####
        else:
            objectRealPlacement3D = objectWorkCenter
        
        return objectRealPlacement3D
    except Exception:
        return FreeCAD.Vector(0.0, 0.0, 0.0)


try:
    sel = FreeCADGui.Selection.getSelection()       # get the selection
    sh = sel[0]                                     # seletion of the first element
    
    App.Console.PrintMessage( "__Begin__________"+"\n")
    import unicodedata    
    nameLabel  = unicodedata.normalize('NFKD', sh.Label).encode('ascii','ignore')
    App.Console.PrintMessage("Label : "+ str(nameLabel)+"\n")        # extract the Label
    App.Console.PrintMessage("Name  : "+ str(sel[0].Name) +"\n")     # extract the Name
except:
    App.Console.PrintError( "Select a face"+"\n")

try:
    SubElement = FreeCADGui.Selection.getSelectionEx()# "getSelectionEx" Used for selecting subobjects
    element_ = SubElement[0].SubElementNames[0]       # seletion of the first element
    
    #print element_
    #print sh.Faces
    # LineColor
    red   = 1.0  # 1 = 255
    green = 0.0  #
    blue  = 0.0  #

    for i in range(len(sh.Shape.Faces)):                    # list and extract the data

        oripl_X = sh.Shape.Faces[i].CenterOfMass.x
        oripl_Y = sh.Shape.Faces[i].CenterOfMass.y
        oripl_Z = sh.Shape.Faces[i].CenterOfMass.z
        placementOrigine = objectRealPlacement3D( sh )
        oripl_X += placementOrigine[0]
        oripl_Y += placementOrigine[1]
        oripl_Z += placementOrigine[2]

        App.Console.PrintMessage( "Center Face "+str(i)+"    : "+str(sh.Shape.Faces[i].CenterOfMass)+"\n") # Vector center mass to face
        App.Console.PrintMessage( "GlobalPlacement  : "+str(placementOrigine)+"\n") # Vector center mass to face
        Draft.makePoint(oripl_X, oripl_Y, oripl_Z) # create a point
        FreeCADGui.activeDocument().activeObject().PointColor = (red, green, blue)
    
        App.Console.PrintMessage( "       Surface   : "+str(sel[0].Shape.Faces[i-1].Area)+"\n")
        fco = 0
        for f0 in sel[0].Shape.Faces[i].Vertexes:      # Vertexes faces
            fco += 1
            App.Console.PrintMessage("       Vertexe X"+str(fco)+": "+str(f0.Point.x)+" Y"+str(fco)+": "+str(f0.Point.y)+" Z"+str(fco)+": "+str(f0.Point.z)+"\n")

except:
    App.Console.PrintError( "Select a face *"+"\n")
App.Console.PrintMessage( "__End____________"+"\n")


Verze

ver 0.2 07/10/2018 : upgrade for FC 017 "getGlobalPlacement"

ver 0.1 29/04/2014