Macro FlattenWire3Points/fr: Difference between revisions
Renatorivo (talk | contribs) (Created page with "{{Macro/fr|Icon=Text-x-python|Name=FlattenWire3Points|Name/fr=FlattenWire3Points|Description=Cette macro aplatit les fils (Wire) du projet qui ne sont pas plan à la médiane...") |
(Updating to match new version of source page) |
||
Line 1: | Line 1: | ||
{{Macro |
{{Macro|Icon=Text-x-python|Name=FlattenWire3Points|Description=This macro flattens draft wires that are not planar on a plane defined by 3 points|Author=Yorik|Version=1.0}} |
||
This macro flattens draft wires that are not planar on a plane defined by 3 points. To use this macro, select first 3 vertices from a single [[Draft Wire]]. |
This macro flattens draft wires that are not planar on a plane defined by 3 points. To use this macro, select first 3 vertices from a single [[Draft Wire]]. |
||
{{Code|code= |
|||
<syntaxhighlight> |
|||
import FreeCAD,FreeCADGui,Draft |
import FreeCAD,FreeCADGui,Draft |
||
Line 36: | Line 37: | ||
points.append(p.projectToPlane(p1,p4)) |
points.append(p.projectToPlane(p1,p4)) |
||
sel.Object.Points = points |
sel.Object.Points = points |
||
}} |
|||
</syntaxhighlight> |
|||
<languages/> |
<languages/> |
Revision as of 10:32, 23 September 2016
File:Text-x-python FlattenWire3Points |
Description |
---|
This macro flattens draft wires that are not planar on a plane defined by 3 points Macro version: 1.0 Author: Yorik |
Author |
Yorik |
Download |
None |
Links |
Macros recipes How to install macros How to customize toolbars |
Macro Version |
1.0 |
Date last modified |
None |
FreeCAD Version(s) |
None |
Default shortcut |
None |
See also |
None |
This macro flattens draft wires that are not planar on a plane defined by 3 points. To use this macro, select first 3 vertices from a single Draft Wire.
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