Macro CenterFace/cs: Difference between revisions
Renatorivo (talk | contribs) (Created page with "{{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 coor...") |
(Updating to match new version of source page) |
||
(20 intermediate revisions by 3 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}} |
|||
{{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 |
|||
}} |
|||
== |
==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 colored red (can be changed). |
|||
red = 1.0 # 1 = 255 |
|||
To change the color of the dot change the lines 36, 37, 38 |
|||
<syntaxhighlight> |
|||
green = 0.0 # |
|||
green = 0.0 # |
|||
blue = 0.0 # |
|||
</syntaxhighlight> |
|||
Střed plochy obličeje (hmotnost) a souřadnice XYZ obličeje jsou zobrazeny v zobrazení sestavy. |
|||
The center of the face (mass) surface and the XYZ coordinates of the face are displayed in the report view. |
|||
== 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]] |
|||
==Skript== |
|||
==Macro== |
|||
'''Macro_CenterFace.FCMacro''' |
'''Macro_CenterFace.FCMacro''' |
||
{{MacroCode|code= |
|||
<syntaxhighlight> |
|||
# -*- 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( " |
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 sh.Faces |
|||
# LineColor |
# LineColor |
||
red = 1.0 # 1 = 255 |
red = 1.0 # 1 = 255 |
||
Line 66: | 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 81: | Line 135: | ||
except: |
except: |
||
App.Console.PrintError( " |
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 |
|||
</syntaxhighlight> |
|||
{{clear}} |
{{clear}} |
||
<languages/> |
Revision as of 09:53, 23 May 2020
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 |
Makro recepty| Jak nainstalovat makra Jak přizpůsobit panely nástrojů |
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 ..."
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