Implantation automatique de prises électriques des deux côtés d'un mur - Python

Bonjour,

tout d’abord une précision, j’utilise l’Addin PyRevit pour coder mes scripts.
Suis-je hors sujet en postant ici ?
Si oui, je désolé et ne tenez pas compte de ce message.

Si non, je me permets de reposter un message ici pour lequel je n’ai pas obtenu de réponse sur le forum Autodesk Revit en français.

j’ai codé un script python qui permet d’implanter (aléatoirement) des prises de courant dans une room (space).

Mais j’ai un souci lorsqu’un des murs de la room est « partagé » avec une autre room:

Les prises de la room contiguë sont mal orinetées, cf screencast en PJ
Existe t il une propriété de l’objet wall qui me permettrait de palier à ce problème ?
*Mon idée serait de tester la présence d’une prise sur un mur mais je n’arrive pas à trouver la propriété/méthode qui me donnerait l’accès à cette information. *

J’ai essayé FindInserts() mais ça ne semble pas marcher pour les terminaux ELEC.
Merci d’avance pour vos retours.

lien vers le post et la vidéo d’illustration: https://forums.autodesk.com/t5/revit-et-bim-francais/implantation-automatique-python-mep-elec/td-p/10349590

Bonjour,

Voilà toutes les propriétés d’un mur dans Revit:

Je peux me tromper mais le FindInserts() doit servir plutôt aux élements d’ouverture dans le mur (Portes, fenêtres etc…). Les élements étant seulement posés sur le mur et non dedans, je dirai que ce n’est pas la bonne solution (Je laisse d’autres commenter).

Tu peux par contre retrouver l’hôte d’un élément de terminaux ELEC si celui-ci à un mur comme hôte mais cela va dépendre de comment tu as modélisé ta famille.

Tu as ici la possibilité de retrouver l’hôte ainsi que la face référence.
Je sais pas si ça peut t’aider par contre :slight_smile:

Bonne journée

Merci Adrien pour ton retour.

j’ai déjà parcouru les méthodes/propriétés de l’objet wall via l’Addin LookUp.
Je connais aussi les propriétés Host, HostFace… de la classe familyinstance
mais elles ne répondent pas à mon besoin.

Mon idée est la suivante:
SI le MUR sur lequel je m’apprête à implanter un PRISE est déjà équipé d’une PRISE (face intérieure du mur).
ALORS implanter la PRISE sur la face extérieure de ce mur.

Pour information, j’obtiens ma référence comme ci-dessous:
ref = DB.HostObjectUtils.GetSideFaces(wall , ShellLayerType.Interior)[0]

Donc il faudrait qu’à l’issu de mon test je puisse exécuter le bout de code ci-dessous:
ref = DB.HostObjectUtils.GetSideFaces(wall , ShellLayerType.Exterior)[0]

j’espère que c’est plus clair.

pas sûr…
c’est mieux de poster carrément ton code et un fichier test qu’on puisse voir le raisonnement et tester.

pour la question du bon forum, oui puis non. Le forum est peuplé de gens qui code plus ou moins. Tu peux essayer de poster sur https://discourse.pyrevitlabs.io/ qui est dédié à pyRevit.