J'ai essayé d'effectuer une itération sur un NameValueMap en utilisant un index 0, mais cela n'a pas fonctionné. Itération sur elle en utilisant un index basé sur 1 travaillé.Itération sur un NameValueMap dans Autodesk Inventor
Ne fonctionne pas.
public static void onParameterChange(_Document document,
Inventor.Parameter parameter,
EventTimingEnum BeforeOrAfter,
NameValueMap context ,
out HandlingCodeEnum handlingCode)
{
handlingCode = HandlingCodeEnum.kEventHandled;
// Did not work. Got an exception.
for (int i = 0; i < context.Count; ++i)
{
string name = context.Name[i];
string value = (string)context.Value[name];
}
}
Travail effectué.
public static void onParameterChange(_Document document,
Inventor.Parameter parameter,
EventTimingEnum BeforeOrAfter,
NameValueMap context ,
out HandlingCodeEnum handlingCode)
{
handlingCode = HandlingCodeEnum.kEventHandled;
// Worked.
for (int i = 1; i <= context.Count; ++i)
{
string name = context.Name[i];
string value = (string)context.Value[name];
}
}
J'ai été surpris par cela. Est-ce prévu? J'ai également remarqué que NameValueMap
hérite IEnumerable
. J'ai essayé d'utiliser foreach
pour obtenir les éléments du NameValueMap
. Cependant, cela ne m'a donné que les valeurs des articles. Y a-t-il un moyen d'obtenir les noms des articles aussi?
public static void onParameterChange(_Document document,
Inventor.Parameter parameter,
EventTimingEnum BeforeOrAfter,
NameValueMap context ,
out HandlingCodeEnum handlingCode)
{
handlingCode = HandlingCodeEnum.kEventHandled;
foreach (var item in context)
{
// How do you get the name?
string value = item;
}
}
Merci pour la réponse. Je suis nouveau à C# et je vais avoir besoin de temps pour le faire. –