Macro FlattenWire3Points/fr: Difference between revisions

From FreeCAD Documentation
(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/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 de leurs coordonnées z|Author=Yorik}}
{{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
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
Other languages: