Macro FlattenWire3Points/it: Difference between revisions
(Updating to match new version of source page) |
(Updating to match new version of source page) |
||
Line 2: | Line 2: | ||
{{Macro/it|Icon=Text-x-python|Name=FlattenWire3Points|Name/it=Wire appiattita su piano da 3 punti|Description=Appiattisce contorni non planari su un piano definito da 3 punti|Author=Yorik|Version=1.0|Date=2016-02-06}} |
{{Macro/it|Icon=Text-x-python|Name=FlattenWire3Points|Name/it=Wire appiattita su piano da 3 punti|Description=Appiattisce contorni non planari su un piano definito da 3 punti|Author=Yorik|Version=1.0|Date=2016-02-06}} |
||
<div class="mw-translate-fuzzy"> |
|||
===Descrizione=== |
===Descrizione=== |
||
Questa macro appiattisce i contorni non planari su un piano definito da 3 punti. |
Questa macro appiattisce i contorni non planari su un piano definito da 3 punti. |
||
Per utilizzare questa macro, selezionare primi 3 vertici da una unica [[Draft Wire/it|polilinea di Draft]]. |
Per utilizzare questa macro, selezionare primi 3 vertici da una unica [[Draft Wire/it|polilinea di Draft]]. |
||
</div> |
|||
==Script== |
|||
'''Macro_FlattenWire3Points.FCMacro''' |
|||
{{Code|code= |
{{Code|code= |
Revision as of 14:14, 9 August 2018
File:Text-x-python FlattenWire3Points |
Descrizione |
---|
Appiattisce contorni non planari su un piano definito da 3 punti Versione macro: 1.0 Ultima modifica: 2016-02-06 Autore: Yorik |
Autore |
Yorik |
Download |
None |
Link |
Raccolta di macro Come installare le macro Personalizzare la toolbar |
Versione macro |
1.0 |
Data ultima modifica |
2016-02-06 |
Versioni di FreeCAD |
None |
Scorciatoia |
Nessuna |
Vedere anche |
Nessuno |
Descrizione
Questa macro appiattisce i contorni non planari su un piano definito da 3 punti. Per utilizzare questa macro, selezionare primi 3 vertici da una unica polilinea di Draft.
Script
Macro_FlattenWire3Points.FCMacro
import FreeCAD,FreeCADGui,Draft
# check selection
sel = FreeCADGui.Selection.getSelectionEx()
ok = True
if len(sel) != 1:
FreeCAD.Console.PrintError("Please select 3 vertices from one Draft wire\n")
ok = False
sel = sel[0]
if Draft.getType(sel.Object) not in ["Wire","BSpline"]:
FreeCAD.Console.PrintError("Please select 3 vertices from one Draft wire\n")
ok = False
if len(sel.SubElementNames) != 3:
FreeCAD.Console.PrintError("Please select 3 vertices from one Draft wire\n")
ok = False
for e in sel.SubElementNames:
if not "Vertex" in e:
FreeCAD.Console.PrintError("Please select 3 vertices from one Draft wire\n")
ok = False
if ok:
# define a plane
p1 = getattr(sel.Object.Shape,sel.SubElementNames[0]).Point
p2 = getattr(sel.Object.Shape,sel.SubElementNames[1]).Point
p3 = getattr(sel.Object.Shape,sel.SubElementNames[2]).Point
p4 = p2.sub(p1).cross(p3.sub(p1))
# project wire points
points = []
for p in sel.Object.Points:
points.append(p.projectToPlane(p1,p4))
sel.Object.Points = points