Bonjour,
Existe t-il une possibilité d'envoyer une data sans mettre fin au formulaire et comment fait-on cela sous revit?
j'essaie d'envoyer depuis un compteur numérique une info à une paramètre de vue
j'essaie de le faire de façon non statique
namespace stan
{
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
[Autodesk.Revit.DB.Macros.AddInId("5B1B8162-473E-484B-8A81-501801B0AAF7")]
public partial class ThisDocument
{
public static Document doc;
public static Form2 boite2= new Form2();
public static decimal etiq;
private void Module_Startup(object sender, EventArgs e)
{
doc=this.Document;
}
private void Module_Shutdown(object sender, EventArgs e)
{
}
#region Revit Macros generated code
private void InternalStartup()
{
this.Startup += new System.EventHandler(Module_Startup);
this.Shutdown += new System.EventHandler(Module_Shutdown);
}
// Lancez la boite de dialogue
public void debut()
{
boite2.ShowDialog();
Reponse(""+etiq);
}
// Fonction pour récupérer la phase
public ElementId RecupPhase(string a)
{
List<Phase> listPhases = new FilteredElementCollector(doc).OfClass(typeof(Phase)).Cast<Phase>().ToList();
List<ElementId> lidval=new List<ElementId>();
foreach (Phase p in listPhases)
{
if (p.Name=="Phase "+a)
{
lidval.Add(p.Id);
}
}
return lidval[0];
}
// Attribuez une phase à la vue active
public void Reponse(string b)
{
Parameter p=doc.ActiveView.LookupParameter("Phase");
ElementId ph=RecupPhase(b);
Transaction t= new Transaction(doc,"phase");
t.Start();
p.Set(ph);
t.Commit();
}
#endregion
}
}
namespace stan
{
/// <summary>
/// Description of Form2.
/// </summary>
public partial class Form2 : Form
{
public Form2()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
}
void NumericUpDown1ValueChanged(object sender, EventArgs e)
{
ThisDocument.etiq=numericUpDown1.Value;
}
void Button1Click(object sender, EventArgs e)
{
ThisDocument.boite2.Close();
}
}
}pouvez vous m'aider ou orienter
cordialement
christian.stan
Salut @christian.stan ,
voici 2/3 éléments de réponse :
- Tout d'abord utilise une boite de dialogue modeless ainsi elle restera afficher pendant que Revit fonctionnera normalement
- Ensuite il faut utiliser les évènement pour faire communiquer Revit et ta boite de dialogue
- Si tu souhaite que le sens de communication soit : Boite de dialogue vers Revit ; utilise au sein de Revit un évènement de type Idling
J'essaye de te faire un exemple dans la journée
![]()
Salut @christian.stan ,
Il y a 2 manières de faire communiquer la boite de dialogue et l'environnement Revit : Evènement Idling et IUpdater.
Voici une solution exemple avec quelques éléments qui devraient t'aider un peu !
Il y a un dockpanel (idem boite de dialogue modeless) qui contient des champs : nom / id / identifiant
Il y a un IUPdater qui fonctionne lors de la modification du paramètre "identifiant" d'un élément (catégorie "Mur" de paramétré)
Il y a un Idling qui permet de renvoyer la valeur validée dans le dockPanel vers l'élément.
Fonctionnement de la solution :
Ouverture du dockpanel via le ruban complément puis External Tools
Sélection d'un élément de la catégorie "Mur"
Modification du paramètre identifiant de l'élément (->affichage des données dans le panel une fois le paramètre modifié)
Modification de la valeur de l'identifiant dans le dockPanel puis clic sur "Valider"
Mise à jour de la nouvelle valeur dans le paramètre de l'élément Revit
Attention, j'ai constitué cette solution un peu vite, il peu y avoir quelques erreurs si tu l'utilise tel quel !! Lors de l'ouverture du premier document le dockpanel sera déjà ouvert (mais l'idling et l'iupdater ne seront pas initialisés), il faut le fermer puis relancer la commande via le ruban "complément".
Cette solution utilise le WPF mais c'est pareil avec du Winform.
![]()
Salut,
merci d'avoir pris le temps de répondre
je ne peux même pas essayer
je n'ai pas External Tools dans l' onglet compléments
winform peut être modeless? ou uniquement du WPF (on peut appliquer cela dans une macro revit?)
je m'essaie aux macros cela a l'air plus ''simple'' que les addins pour moi, je débute en c#
merci
cordialement
christian.stan
Bonjour @christian.stan
Votre problème a-t-il été résolu? Si oui, pouvez vous nous indiquer de quelle façon pour que cela profite à la communauté, si non, pouvez vous nous dire si vous avez pu essayer les suggestions qui vous ont été faites?
Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton APPROUVER LA SOLUTION en bas de la réponse qui apporte une solution?
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.
salut,
j'ai essayé d'appliquer les conseils et méthodologie
mais comme je ne suis vraiment pas fort sur ces aspects de C#, je n'obtiens rien de probant pour le moment
il faut que je passe à un stade plus avancé
il faudra que je repose la question à un moment ou je puisse mettre en place les conseils
cordialement
christian.stan
Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.