Hi, Everyone,
In my in-house NW Plug-in, I need add user defined properties to a specify category,
After first time, I need get category index to update it (code as below), If somebody can
help , I am very appreciated.
Lee, Wenhan
Code as below :
Navisworks.ModelItemCollection mic = new Navisworks.ModelItemCollection();
mic.Add(model);
ComApi.InwOpSelection comSels = ComApiBridge.ComApiBridge.ToInwOpSelection(mic);
ComApi.InwSelectionPathsColl oPaths = comSels.Paths();
ComApi.InwOaPath3 oPath = oPaths.Last() as ComApi.InwOaPath3;
ComApi.InwGUIPropertyNode2 pNode = (ComApi.InwGUIPropertyNode2)state.
GetGUIPropertyNode(oPath, true);
ComApi.InwOaPropertyVec newPvec = state.ObjectFactory
(ComApi.nwEObjectType.eObjectType_nwOaPropertyVec, null, null) as ComApi.InwOaPropertyVec;
ComApi.InwOaProperty newP;
foreach (DataRow dr in prps)
{
newP = state.ObjectFactory(ComApi.nwEObjectType.eObjectType_nwOaProperty, null, null)
as ComApi.InwOaProperty;
newP.name = dr["PName"] as string;
newP.UserName = dr["PName"] as string;
newP.value = dr["PValue"] as string;
newPvec.Properties().Add(newP);
//MessageBox.Show(dr["PName"] + " " + dr["PValue"], strModel);
}
int idx = getIndexCategory(model, catName);
pNode.SetUserDefined(idx, catName, catName, newPvec); // idx 0: Append, othesr is replace
int idx = getIndexCategory(pNode, catName);
private int getIndexCategory(ComApi.InwGUIPropertyNode2 pNode, string catName)
{
int idx = 0, rst = 0;
foreach (ComApi.InwGUIAttribute2 attribute in pNode.GUIAttributes())
{
if (attribute.UserDefined)
{
idx++;
if (attribute.ClassUserName == catName)
{
rst = idx;
break;
}
}
}
return rst;
}
Can't find what you're looking for? Ask the community or share your knowledge.