| Descrizione |
|---|
| Questa macro crea un triangolo isoscele dati l'angolo e l'altezza. Il nuovo triangolo viene creato nella coordinata reale. (Riga di comando, incolla questa macro completa nella console Python). Versione macro: 00.03 Ultima modifica: 2019/07/02 Versione FreeCAD: All Download: Icona della barra degli strumenti Autore: mario52 |
| Autore |
| mario52 |
| Download |
| Icona della barra degli strumenti |
| Link |
| Raccolta di macro Come installare le macro Personalizzare la toolbar |
| Versione macro |
| 00.03 |
| Data ultima modifica |
| 2019/07/02 |
| Versioni di FreeCAD |
| All |
| Scorciatoia |
| Nessuna |
| Vedere anche |
| Nessuno |
Questa macro crea un triangolo isoscele dati l'angolo al vertice e l'altezza del triangolo. Il vertice del triangolo è posizionato sulle coordinate xyz 0.0.0.
Copiare la macro Triangle AH completa nella console Python di FreeCAD
Icona della barra degli strumenti
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)
triangleAH(angle=90, height=10)
# or
triangleAH(90, 10)
# or
triangleAH(45, hypo=10)
# or
triangleAH(90, base=10)
ver 00.03 2019/07/02 aggiunto "App.ActiveDocument.recompute()" e conversione verso Py3
ver 00.02 03/05/2015 : aggiunto "base=0.0", "hypo=0.0" dati del triangolo
ver 00.01 20/03/2015 :