【发布时间】:2018-02-16 11:21:39
【问题描述】:
我尝试使用基于 0 的索引对 NameValueMap 进行迭代,但没有成功。使用基于 1 的索引对其进行迭代是可行的。
没用。
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];
}
}
工作。
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];
}
}
我对此感到惊讶。这是预期的吗?
我还注意到NameValueMap 继承了IEnumerable。我尝试使用foreach 来获取NameValueMap 的项目。然而,这只给了我物品的价值。有没有办法同时获取项目的名称?
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;
}
}
【问题讨论】:
-
在 Autodesk Inventor 互操作世界中所有 Enumerables(实现 IEnumerable 的对象类型)都是从 1 开始的。不确定,这对于 COM-Interops 本身是否普遍适用......
标签: c# autodesk-inventor