Demander à l'utilisateur de sélectionner des objets
Mise à jour : 02 décembre 2024
TopSolid Automation fournit un accès à une interface dédiée, IUser
.
Cette interface comprend diverses méthodes pour demander à l'utilisateur de faire des sélections, ainsi que pour récupérer la sélection courante (qu'il s'agisse d'une entité ou d'une opération).
a méthode picking de cette interface prend en paramètre une UserQuestion
et renvoie un UserAnswerType
(../api/kernel/TopSolid.Kernel.Automating.UserAnswerType.html).
Questions de l'utilisateur
Vous trouverez ci-dessous une liste complète des interactions possibles :
Sélection de base :
UserQuestion myUserQuestion = new UserQuestion();
Sélection avec titre, invite, étiquette :
UserQuestion myUserQuestion = new UserQuestion("My Title", "My Label", "My Prompt");
Sélection permettant le précédent :
UserQuestion myUserQuestion = new UserQuestion("My Title", "My Label", "My Prompt", UserQuestionFlags.AllowsPrevious);
Sélection permettant de passer à la suivante :
UserQuestion myUserQuestion = new UserQuestion("My Title", "My Label", "My Prompt", UserQuestionFlags.AllowsNext);
Sélection permettant d'être vide :
UserQuestion myUserQuestion = new UserQuestion("My Title", "My Label", "My Prompt", UserQuestionFlags.AllowsEmpty);
Sélection permettant la création :
UserQuestion myUserQuestion = new UserQuestion("My Point Selection", "Selected Point", "Select a Point", UserQuestionFlags.AllowsCreation);
Note
Ce dernier type de sélection n'est disponible que pour les entités qui peuvent être créées via l'interface utilisateur, comme les points par exemple.
Type de réponse de l'utilisateur
Le UserAnswerType
représente la réponse à une question de l'utilisateur.
Il peut prendre l'une des trois valeurs suivantes :
- OK
- Cancel
- Previous
Exemple complet
Les réponses de l'utilisateur peuvent être intégrées dans la logique d'interaction de l'interface utilisateur, comme le montre l'exemple suivant :
try
{
TopSolidHost.Application.StartModification("increase parameter value", false);
TopSolidHost.Documents.EnsureIsDirty(ref currentDoc);
UserQuestion myUserQuestion = new UserQuestion();
myUserQuestion = new UserQuestion("My Point Selection", "Selected Point", "Select a Point", UserQuestionFlags.AllowsCreation);
SmartPoint3D smpt = null;
again:
TopSolidHost.User.AskPoint3D(myUserQuestion, smpt, out smpt);
myUserQuestion = new UserQuestion("My Title", "My Label", "My Prompt", UserQuestionFlags.AllowsPrevious);
UserAnswerType userAnswer = TopSolidHost.User.AskShape(myUserQuestion, ElementId.Empty, out ElementId outElementId);
if (userAnswer == UserAnswerType.Previous)
{
goto again;
}
TopSolidHost.Application.EndModification(true, true);
}
catch (Exception ee)
{
TopSolidHost.Application.EndModification(false, false);
}