17 déc. 2021

[Revit API & Géométrie] HandOrientation vs FacingOrientation





Pour ceux qui auraient du mal à les différencier, ou qui se re-re-repose la question (j'en fais partie) voici un résumé.

if this article is not in your language, use the Google Translate widget (bottom of page for Mobile version)

  1. Définition 

L'orientation d'une occurrence de Famille est régie par 2 vecteurs :

  • HandOrientation : vecteur basé suivant l'axe X interne de la Famille
  • FacingOrientation : vecteur basé suivant l'axe Y interne de la Famille
    C'est d'ailleurs pour cette raison de la modélisation de l’ouvrant d'une porte doit être modélisé vers le haut 


Exemple avec une porte (basé sur un plan de construction)




Exemple avec une prise électrique (Famille hébergée par face)



Dans le cas présent cette prise électrique étant hébergée sur une face verticale, le vecteur FacingOrientation qui d'origine est basé sur l'axe Y de sa famille se retrouve sur l'axe Z du projet.
D'ailleurs on retrouve cette information dans les valeurs de la transformation de l'élément

valeurs des vecteurs pour une prise posée sur une face verticale



Petite vidéo avec évolution des différentes valeurs de vecteurs




    2. Trouver la Face !

Dans le cas présent, pour récupérer le vecteur Normal de la face, il suffira de faire le produit vectoriel de ces 2 vecteurs.
Attention à l'ordre de l'opération vectorielle.
normalOrientation = handOrientation.CrossProduct(faceOrientation) 



    3. Opération de symétrie (Oh mon beau Miroir !)

Afin de ne pas se faire piéger par des opérations de symétrie une attention particulière sera porté sur les propriétés suivantes :

  • FacingFlipped : retourne Vrai (True) si l'élément est retourné verticalement selon l'axe X de la Famille → si la valeur est Vrai il pourrait s'avérer être utile d'inverser le vecteur HandOrienation (suivant le but final)

  • HandFlipped : retourne Vrai (True) si l'élément est retourné horizontalement selon l'axe Y de la Famille → si la valeur est Vrai il pourrait s'avérer être utile d'inverser le vecteur FacingOrienation (suivant le but final)

2 Exemples : 








Voilà, en espérant que l'article ne vous a pas trop déboussolé 😊



Ressources Complémentaire :

https://www.revitapidocs.com/2022/5b9d79d7-255c-b4b9-8748-33b3aba97061.htm

https://forums.autodesk.com/t5/revit-api-forum/facingorientation-gives-the-opposite-direction/m-p/10574034/highlight/true#M57903

Résumé par RPTHOMAS108


🎄🎄🎄🎄🎄🎄🎄🎁🎁🎁🎁🎁🎁

0 commentaires:

Enregistrer un commentaire