Macro Triangle AH/fr: Difference between revisions
mNo edit summary |
(Updating to match new version of source page) |
||
Line 1: | Line 1: | ||
<languages/> |
<languages/> |
||
<div class="mw-translate-fuzzy"> |
|||
{{Macro/fr |
{{Macro/fr |
||
|Name=Macro Triangle AH |
|Name=Macro Triangle AH |
||
Line 7: | Line 8: | ||
|Date=2015-05-03 |
|Date=2015-05-03 |
||
}} |
}} |
||
</div> |
|||
==Description== |
==Description== |
||
Line 21: | Line 23: | ||
__title__ = "triangleAH" |
__title__ = "triangleAH" |
||
__author__ = "Mario52" |
__author__ = "Mario52" |
||
__version__ = "00. |
__version__ = "00.03" |
||
__date__ = " |
__date__ = "2019/07/02" |
||
# Give angle and on choice : height or base or hypo |
# Give angle and on choice : height or base or hypo |
||
from math import cos, sin, tan, degrees, radians, sqrt |
from math import cos, sin, tan, degrees, radians, sqrt |
||
Line 37: | Line 39: | ||
height = float(height) |
height = float(height) |
||
base = float(base) |
base = float(base) |
||
if base != 0: |
if base != 0: |
||
height = ( (base/2) / (tan(radians(angle/2))) ) # imposing base and calculate height |
height = ( (base/2) / (tan(radians(angle/2))) ) # imposing base and calculate height |
||
Line 46: | Line 47: | ||
if base==0: # base of triangle |
if base==0: # base of triangle |
||
base = (tan(radians(angle/2) ) * height) * 2 # calculate base |
base = (tan(radians(angle/2) ) * height) * 2 # calculate base |
||
a0 = line_length(x1=x0,y1=y0,z1=z0,length=height,angle2=0 ) # coord height of triangle |
a0 = line_length(x1=x0,y1=y0,z1=z0,length=height,angle2=0 ) # coord height of triangle |
||
a0 = line_length(x1=x0,y1=y0,z1=z0,length=0, angle2 = angle ) # point 0 (begin vertex) |
a0 = line_length(x1=x0,y1=y0,z1=z0,length=0, angle2 = angle ) # point 0 (begin vertex) |
||
a = line_length(x1=a0[0],y1=a0[1],z1=a0[2],length= hypo, angle2=-(angle/2)) # |
a = line_length(x1=a0[0],y1=a0[1],z1=a0[2],length= hypo, angle2=-(angle/2)) # |
||
b = line_length(a[0],a[1],a[2],length= (abs(a[1])*2), angle2=90.0) # base of triangle = (abs(a[1])*2) |
b = line_length(a[0],a[1],a[2],length= (abs(a[1])*2), angle2=90.0) # base of triangle = (abs(a[1])*2) |
||
## |
|||
print() |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
App.ActiveDocument.recompute() |
|||
#Example |
|||
⚫ | |||
#triangleAH(angle=90, height=10) |
|||
⚫ | |||
#triangleAH(90, 10) |
|||
⚫ | |||
#triangleAH(45, hypo=10) |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
Line 76: | Line 83: | ||
==Versions== |
==Versions== |
||
ver 00.03 2019/07/02 add "App.ActiveDocument.recompute()" and convert Py3 |
|||
ver 00.02 03/05/2015 : ajout "base=0.0", "hypo=0.0" affichage des données du triangle |
ver 00.02 03/05/2015 : ajout "base=0.0", "hypo=0.0" affichage des données du triangle |
Revision as of 17:17, 2 July 2019
Description |
---|
Cette macro crée un triangle isocèle en donnant comme argument , l'angle de tête et la hauteur du triangle. Version macro : 00.02 Date dernière modification : 2015-05-03 Auteur: mario52 |
Auteur |
mario52 |
Téléchargement |
None |
Liens |
Page des macros Comment installer une macro Comment créer une barre d'outils |
Version Macro |
00.02 |
Dernière modification |
2015-05-03 |
Version(s) FreeCAD |
None |
Raccourci clavier |
None |
Voir aussi |
None |
Description
Cette macro crée un triangle isocèle en donnant comme argument , l'angle de tête et la hauteur du triangle. La tête du triangle est positionnée aux coordonnées XYZ 0,0,0.
Utilisation
Copiez la macro Triangle AH complète dans la console Python de FreeCAD
Script
Macro_triangleAH.FCMacro
__title__ = "triangleAH"
__author__ = "Mario52"
__version__ = "00.03"
__date__ = "2019/07/02"
# Give angle and on choice : height or base or hypo
from math import cos, sin, tan, degrees, radians, sqrt
import Draft, Part
def triangleAH(angle, height=0.0, base=0.0, hypo=0.0):
def line_length(x1 = 0.0, y1 = 0.0, z1 = 0.0, length = 10.0, angle2 = 0.0): # search coordinates
x2 = x1 + (length * cos(radians(angle2)))
y2 = y1 + (length * sin(radians(angle2)))
z2 = z1 #+ ()
return x2,y2,z2 # return coordinates (xyz) to point
x0 = y0 = z0 = 0.0
angle = float(angle)
height = float(height)
base = float(base)
if base != 0:
height = ( (base/2) / (tan(radians(angle/2))) ) # imposing base and calculate height
if hypo != 0:
height = hypo * (cos(radians(angle/2))) # imposing hypo and calculate height
else:
hypo = height / cos(radians(angle/2)) # calculate hypotenuse
if base==0: # base of triangle
base = (tan(radians(angle/2) ) * height) * 2 # calculate base
a0 = line_length(x1=x0,y1=y0,z1=z0,length=height,angle2=0 ) # coord height of triangle
a0 = line_length(x1=x0,y1=y0,z1=z0,length=0, angle2 = angle ) # point 0 (begin vertex)
a = line_length(x1=a0[0],y1=a0[1],z1=a0[2],length= hypo, angle2=-(angle/2)) #
b = line_length(a[0],a[1],a[2],length= (abs(a[1])*2), angle2=90.0) # base of triangle = (abs(a[1])*2)
##
print()
print("angle theet : ", angle)
print("angles base : (", (180.0-angle)/2.0,"),(",(180-angle)/2.0,")")
print("height : ", height)
print("base : ", base)
print("hypotenuse : ", hypo)
print("surface : ", (base * height) / 2.0)
print("_________________________")
Draft.makeWire([FreeCAD.Vector(a0),FreeCAD.Vector(a),FreeCAD.Vector(b)],closed=True,face=True,support=None) # create triangle
App.ActiveDocument.recompute()
#Example
#triangleAH(angle=90, height=10)
#triangleAH(90, 10)
#triangleAH(45, hypo=10)
Exemples
triangleAH(angle=90, height=10)
# or
triangleAH(90, 10)
# or
triangleAH(45, hypo=10)
# or
triangleAH(90, base=10)
Versions
ver 00.03 2019/07/02 add "App.ActiveDocument.recompute()" and convert Py3
ver 00.02 03/05/2015 : ajout "base=0.0", "hypo=0.0" affichage des données du triangle
ver 00.01 20/03/2015 :