Obtention de la valeur d'un angle

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply
brothert92
Posts: 3
Joined: Tue Dec 21, 2010 8:35 am

Obtention de la valeur d'un angle

Post by brothert92 »

Bonjour
Intéressé par les possibilités prometteuses de FreeCAD dans ma spécialité, la charpente, j'ai écrit quelque scripts, avec mes connaissances limités de Python. Pour les besoins de la cause, j'aurais besoin de déterminer la valeur d'un angle, en radian, formé par deux cotés d'un polygone. J'ai bien trouvé la méthode getAngle(). Mais elle ne s'applique qu'a des objets Vector(). Et je n'ai pas bien compris comment sont définis de tels objet. un Vector peut être soit un point, soit un vecteur, appelé soit par FreeCAD.Base.Vector() ou par FreeCAD.Vector(). Pourquoi deux possibilités? Comment définit on chacune des deux possibilités?

Merci pour vos réponses éclairées.
User avatar
yorik
Founder
Posts: 13660
Joined: Tue Feb 17, 2009 9:16 pm
Location: Brussels
Contact:

Re: Obtention de la valeur d'un angle

Post by yorik »

Salut,

Un vecteur peut représenter en effet un point ou une direction. Il est défini dans le module FreeCAD.Base, considère FreeCAD.Vector comme un raccourci de FreeCAD.Base.Vector... (La même chose pour Placement ou Matrix). Les objects de type Part dans freeCAD sont composés (entre autres) de faces (Faces), arêtes (Edges) et points (Vertexes).

Pour trouver l'angle entre deux côtés d'un polygone (ou de n'importe quel autre object de type Part), supposons qu'il soit appelé "myObj":

Code: Select all

# d'abord prenons les arêtes de notre object
myShape = FreeCAD.ActiveDocument.myObj.Shape
edges = myShape.Edges
# supposons que nous voulons l'angle entre la première et la deuxième arête
e1 = edges[0]
e2 = edges[1]
# on crée un vecteur de chaque arête, en soustrayant le dernier point du premier
v1 = e1.Vertexes[-1].Point
v2 = e1.Vertexes[0].Point
ve1 = v1.sub(v2)
v1 = e2.Vertexes[-1].Point
v2 = e2.Vertexes[0].Point
ve2 = v1.sub(v2)
# finalement nous avons deux vecteurs représentant nos deux arêtes
angle = ve1.getAngle(ve2)
# L'angle est en radians, il peut être converti en degrés facilement:
import math
print math.degrees(angle)
Bon ceci devrait te mettre sur la piste!
Si tu as d'autres questions n'hésite pas

Yorik
brothert92
Posts: 3
Joined: Tue Dec 21, 2010 8:35 am

Re: Obtention de la valeur d'un angle

Post by brothert92 »

Ok. Super!!
Merci beaucoup Yorik.
Post Reply